* aja: Use inline const for header initializations Avoids duplicating across compilation units. Detected by PVS Studio. * aja: Avoid unnecessary type conversions Detected by PVS Studio. * aja: Remove duplicate assignments Detected by PVS Studio. * aja: Fix return value of aja_output_create Detected by PVS Studio. * aja: Remove unused variable Detected by PVS Studio. * aja: Fix compiler warning * aja: Remove unreachable if branch in aja routing * aja; Cleanup return in card manager Co-authored-by: Colin Edwards <colin@recursivepenguin.com>
487 lines
7.4 KiB
C++
487 lines
7.4 KiB
C++
#pragma once
|
|
|
|
#include "../aja-routing.hpp"
|
|
|
|
static inline const std::map<SDIWireFormat, RoutingConfig> kSDIYCbCrDisplayConfigs = {
|
|
{
|
|
SDIWireFormat::SD_ST352,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1, // num wires
|
|
1, // num framestores
|
|
false, // enable 3G output?
|
|
false, // enable 6G output?
|
|
false, // enable 12G output?
|
|
false, // convert 3Gb -> 3Ga input?
|
|
false, // convert 3Ga -> 3Gb output?
|
|
false, // convert RGB 3Ga output?
|
|
false, // enable 3Gb output?
|
|
false, // enable 4K Square Division?
|
|
false, // enable 8K Square Division?
|
|
false, // enable two-sample-interleave?
|
|
"fb[{ch1}][0]->sdi[{ch1}][0]", // YCbCr Output Route
|
|
},
|
|
},
|
|
{SDIWireFormat::HD_720p_ST292,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1,
|
|
1,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0]",
|
|
}},
|
|
{SDIWireFormat::HD_1080_ST292,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1,
|
|
1,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0]",
|
|
}},
|
|
{SDIWireFormat::HD_1080_ST372_Dual,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
2,
|
|
2,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0];"
|
|
"fb[{ch2}][0]->sdi[{ch2}][0]",
|
|
}},
|
|
{SDIWireFormat::HD_720p_ST425_3Ga,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1,
|
|
1,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0]",
|
|
}},
|
|
{SDIWireFormat::HD_1080p_ST425_3Ga,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1,
|
|
1,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0]",
|
|
}},
|
|
{SDIWireFormat::HD_1080p_ST425_3Gb_DL,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1,
|
|
1,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0]",
|
|
}},
|
|
{SDIWireFormat::HD_720p_ST425_3Gb,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1,
|
|
2,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0]; fb[{ch2}][0]->sdi[{ch1}][1];",
|
|
}},
|
|
{SDIWireFormat::HD_1080p_ST425_3Gb,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1,
|
|
2,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0]; fb[{ch2}][0]->sdi[{ch1}][1];",
|
|
}},
|
|
{SDIWireFormat::HD_1080p_ST425_Dual_3Ga,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
2,
|
|
2,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
"",
|
|
}},
|
|
{SDIWireFormat::HD_1080p_ST425_Dual_3Gb,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
2,
|
|
2,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
"",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST292_Dual_1_5_Squares,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
2,
|
|
4,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0];"
|
|
"fb[{ch2}][0]->sdi[{ch1}][1];"
|
|
"fb[{ch3}][0]->sdi[{ch2}][0];"
|
|
"fb[{ch4}][0]->sdi[{ch2}][1];",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST292_Quad_1_5_Squares,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
4,
|
|
4,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
// Playout
|
|
"fb[{ch1}][0]->sdi[{ch1}][0];"
|
|
"fb[{ch2}][0]->sdi[{ch2}][0];"
|
|
"fb[{ch3}][0]->sdi[{ch3}][0];"
|
|
"fb[{ch4}][0]->sdi[{ch4}][0];",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST425_Quad_3Ga_Squares,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
4,
|
|
4,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
// Playout
|
|
"fb[{ch1}][0]->sdi[{ch1}][0];"
|
|
"fb[{ch2}][0]->sdi[{ch2}][0];"
|
|
"fb[{ch3}][0]->sdi[{ch3}][0];"
|
|
"fb[{ch4}][0]->sdi[{ch4}][0];",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST425_Quad_3Gb_Squares,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
4,
|
|
4,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
// Playout
|
|
"fb[{ch1}][0]->sdi[{ch1}][0];"
|
|
"fb[{ch2}][0]->sdi[{ch2}][0];"
|
|
"fb[{ch3}][0]->sdi[{ch3}][0];"
|
|
"fb[{ch4}][0]->sdi[{ch4}][0];",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST425_Dual_3Gb_2SI,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
2,
|
|
2,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
"fb[{ch1}][0]->tsi[{ch1}][0];"
|
|
"fb[{ch1}][1]->tsi[{ch1}][1];"
|
|
"fb[{ch2}][0]->tsi[{ch2}][0];"
|
|
"fb[{ch2}][1]->tsi[{ch2}][1];"
|
|
"tsi[{ch1}][0]->sdi[{ch1}][0];"
|
|
"tsi[{ch1}][1]->sdi[{ch1}][1];"
|
|
"tsi[{ch2}][0]->sdi[{ch2}][0];"
|
|
"tsi[{ch2}][1]->sdi[{ch2}][1];",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST425_Quad_3Ga_2SI,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
4,
|
|
4,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
"fb[{ch1}][0]->tsi[{ch1}][0];"
|
|
"fb[{ch1}][1]->tsi[{ch1}][1];"
|
|
"fb[{ch2}][0]->tsi[{ch2}][0];"
|
|
"fb[{ch2}][1]->tsi[{ch2}][1];"
|
|
"tsi[{ch1}][0]->sdi[{ch1}][0];"
|
|
"tsi[{ch1}][1]->sdi[{ch2}][0];"
|
|
"tsi[{ch2}][0]->sdi[{ch3}][0];"
|
|
"tsi[{ch2}][1]->sdi[{ch4}][0];",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST425_Quad_3Gb_2SI,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
4,
|
|
4,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
"fb[{ch1}][0]->tsi[{ch1}][0];"
|
|
"fb[{ch1}][1]->tsi[{ch1}][1];"
|
|
"fb[{ch2}][0]->tsi[{ch2}][0];"
|
|
"fb[{ch2}][1]->tsi[{ch2}][1];"
|
|
"tsi[{ch1}][0]->sdi[{ch1}][0];"
|
|
"tsi[{ch1}][1]->sdi[{ch2}][0];"
|
|
"tsi[{ch2}][0]->sdi[{ch3}][0];"
|
|
"tsi[{ch2}][1]->sdi[{ch4}][0];",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST2018_6G_Squares_2SI,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1,
|
|
1,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0];",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST2018_6G_Squares_2SI_Kona5_io4KPlus,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
2,
|
|
2,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
// Playout
|
|
"fb[{ch3}][0]->tsi[{ch3}][0];"
|
|
"fb[{ch3}][1]->tsi[{ch3}][1];"
|
|
"fb[{ch4}][0]->tsi[{ch4}][0];"
|
|
"fb[{ch4}][1]->tsi[{ch4}][1];"
|
|
"tsi[{ch3}][0]->sdi[{ch1}][0];"
|
|
"tsi[{ch3}][1]->sdi[{ch2}][0];"
|
|
"tsi[{ch4}][0]->sdi[{ch3}][0];"
|
|
"tsi[{ch4}][1]->sdi[{ch4}][0];",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST2018_12G_Squares_2SI,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1,
|
|
1,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
"fb[{ch1}][0]->sdi[{ch1}][0];",
|
|
}},
|
|
{SDIWireFormat::UHD4K_ST2018_12G_Squares_2SI_Kona5_io4KPlus,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
1,
|
|
1,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
// Playout
|
|
"fb[{ch3}][0]->tsi[{ch3}][0];"
|
|
"fb[{ch3}][1]->tsi[{ch3}][1];"
|
|
"fb[{ch4}][0]->tsi[{ch4}][0];"
|
|
"fb[{ch4}][1]->tsi[{ch4}][1];"
|
|
"tsi[{ch3}][0]->sdi[{ch1}][0];"
|
|
"tsi[{ch3}][1]->sdi[{ch2}][0];"
|
|
"tsi[{ch4}][0]->sdi[{ch3}][0];"
|
|
"tsi[{ch4}][1]->sdi[{ch4}][0];",
|
|
}},
|
|
{SDIWireFormat::UHD28K_ST2082_Dual_12G,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
2,
|
|
2,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
"",
|
|
}},
|
|
{SDIWireFormat::UHD28K_ST2082_RGB_Dual_12G,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
2,
|
|
2,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
"",
|
|
}},
|
|
{SDIWireFormat::UHD28K_ST2082_Quad_12G,
|
|
{
|
|
NTV2_MODE_DISPLAY,
|
|
4,
|
|
4,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
"",
|
|
}},
|
|
};
|