obs-studio/plugins/aja/routing/sdi_ycbcr_capture.h
Paul Hindt ce3ae8e423
aja: Capture and Output plugin for AJA Video Systems IO devices
* aja: Initial commit of AJA capture/output plugin

* aja: Fix clang-format on aja-output-ui code

* aja: Remove script used during dev/testing

* aja: Address pull request feedback from @RytoEX

* aja: Remove the SDK sources and update CMakeLists to point to new headers-only/static libs dependency distribution.

* aja: Only build AJA plugin on x64 on macOS for now

* aja: Remove the non-English placeholder locale files. The english strings/files will be produced via crowdin, according to @ddrboxman.

* aja: Add FindLibAJANTV2.cmake script to locate the ajantv2 headers and static libs in the OBS external deps package(s). Tested on Windows x64. macOS and Linux x64 TBD.

* aja: Add ajantv2/includes to FindLibAJANTV2 include search paths

* aja: Remove commented code from aja CMakeLists

* aja: Remove debug code and comments that are no longer needed.

* aja: Fix indentation

* aja: Remove disablement of clang-format in routing table and SDIWireFormat map

* aja: Use spaces for all indentation in widget crosspoint arrays where we disable clang-format

* aja: Address code style comments made by @RytoEX

* aja: Fix uneven indentation

* aja: More fixes to if/else placement and remove superfluous comments.

* aja: Rename 'dwns' to 'deactivateWhileNotShowing' for clarity. The DeckLink plugin still uses the variable name 'dwns' and should be changed, if desired, in a separate PR.

* aja: Remove X11Extras dependency from AJA Output frontend plugin

* aja: Add patch from Jim to find AJA release/debug libs

* aja: Improve AV sync of queued video/audio sent to the AJA card in the AJA Output plugin.
2021-11-23 20:31:11 -06:00

467 lines
7.2 KiB
C++

#pragma once
#include "../aja-routing.hpp"
static const std::map<SDIWireFormat, RoutingConfig> kSDIYCbCrCaptureConfigs = {
{
SDIWireFormat::SD_ST352,
{
NTV2_MODE_CAPTURE,
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?
"sdi[{ch1}][0]->fb[{ch1}][0]", // YCbCr Capture Route
},
},
{SDIWireFormat::HD_720p_ST292,
{
NTV2_MODE_CAPTURE,
1,
1,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0]",
}},
{SDIWireFormat::HD_1080_ST292,
{
NTV2_MODE_CAPTURE,
1,
1,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0]",
}},
{SDIWireFormat::HD_1080_ST372_Dual,
{
NTV2_MODE_CAPTURE,
2,
2,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0]; sdi[{ch2}][0]->fb[{ch2}][0]",
}},
{SDIWireFormat::HD_720p_ST425_3Ga,
{
NTV2_MODE_CAPTURE,
1,
1,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0]",
}},
{SDIWireFormat::HD_1080p_ST425_3Ga,
{
NTV2_MODE_CAPTURE,
1,
1,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0]",
}},
{SDIWireFormat::HD_1080p_ST425_3Gb_DL,
{
NTV2_MODE_CAPTURE,
1,
1,
true,
false,
false,
true,
true,
false,
true,
false,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0]",
}},
{SDIWireFormat::HD_720p_ST425_3Gb,
{
NTV2_MODE_CAPTURE,
1,
2,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0]; sdi[{ch1}][1]->fb[{ch2}][0];",
}},
{SDIWireFormat::HD_1080p_ST425_3Gb,
{
NTV2_MODE_CAPTURE,
1,
2,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0]; sdi[{ch1}][1]->fb[{ch2}][0];",
}},
{SDIWireFormat::HD_1080p_ST425_Dual_3Ga,
{
NTV2_MODE_CAPTURE,
2,
2,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0];"
"sdi[{ch2}][0]->fb[{ch2}][0];",
}},
{SDIWireFormat::HD_1080p_ST425_Dual_3Gb,
{
NTV2_MODE_CAPTURE,
2,
2,
false,
false,
false,
true,
false,
false,
false,
false,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0];"
"sdi[{ch2}][0]->fb[{ch2}][0];",
}},
{SDIWireFormat::UHD4K_ST292_Dual_1_5_Squares,
{
NTV2_MODE_CAPTURE,
2,
4,
false,
false,
false,
false,
false,
false,
false,
true,
false,
false,
"sdi[{ch1}][0]->fb[{ch1}][0];"
"sdi[{ch1}][1]->fb[{ch2}][0];"
"sdi[{ch2}][0]->fb[{ch3}][0];"
"sdi[{ch2}][1]->fb[{ch4}][0];",
}},
{SDIWireFormat::UHD4K_ST292_Quad_1_5_Squares,
{
NTV2_MODE_CAPTURE,
4,
4,
false,
false,
false,
false,
false,
false,
false,
true,
false,
false,
// Capture
"sdi[{ch1}][0]->fb[{ch1}][0];"
"sdi[{ch2}][0]->fb[{ch2}][0];"
"sdi[{ch3}][0]->fb[{ch3}][0];"
"sdi[{ch4}][0]->fb[{ch4}][0];",
}},
{SDIWireFormat::UHD4K_ST425_Quad_3Ga_Squares,
{
NTV2_MODE_CAPTURE,
4,
4,
true,
false,
false,
false,
false,
false,
false,
true,
false,
false,
// Capture
"sdi[{ch1}][0]->fb[{ch1}][0];"
"sdi[{ch2}][0]->fb[{ch2}][0];"
"sdi[{ch3}][0]->fb[{ch3}][0];"
"sdi[{ch4}][0]->fb[{ch4}][0];",
}},
{SDIWireFormat::UHD4K_ST425_Quad_3Gb_Squares,
{
NTV2_MODE_CAPTURE,
4,
4,
true,
false,
false,
false,
false,
false,
false,
true,
false,
false,
// Capture
"sdi[{ch1}][0]->fb[{ch1}][0];"
"sdi[{ch2}][0]->fb[{ch2}][0];"
"sdi[{ch3}][0]->fb[{ch3}][0];"
"sdi[{ch4}][0]->fb[{ch4}][0];",
}},
{SDIWireFormat::UHD4K_ST425_Dual_3Gb_2SI,
{NTV2_MODE_CAPTURE, 2, 2, true, false, false, false, false, false,
false, false, false, true,
"sdi[{ch1}][0]->tsi[{ch1}][0];"
"sdi[{ch1}][1]->tsi[{ch1}][1];"
"sdi[{ch2}][0]->tsi[{ch2}][0];"
"sdi[{ch2}][1]->tsi[{ch2}][1];"
"tsi[{ch1}][0]->fb[{ch1}][0];"
"tsi[{ch1}][1]->fb[{ch1}][1];"
"tsi[{ch2}][0]->fb[{ch2}][0];"
"tsi[{ch2}][1]->fb[{ch2}][1];"}},
{SDIWireFormat::UHD4K_ST425_Quad_3Ga_2SI,
{
NTV2_MODE_CAPTURE,
4,
4,
false,
false,
false,
false,
false,
false,
false,
false,
false,
true,
"sdi[{ch1}][0]->tsi[{ch1}][0];"
"sdi[{ch2}][0]->tsi[{ch1}][1];"
"sdi[{ch3}][0]->tsi[{ch2}][0];"
"sdi[{ch4}][0]->tsi[{ch2}][1];"
"tsi[{ch1}][0]->fb[{ch1}][0];"
"tsi[{ch1}][1]->fb[{ch1}][1];"
"tsi[{ch2}][0]->fb[{ch2}][0];"
"tsi[{ch2}][1]->fb[{ch2}][1];",
}},
{SDIWireFormat::UHD4K_ST425_Quad_3Gb_2SI,
{
NTV2_MODE_CAPTURE,
4,
4,
false,
false,
false,
true,
false,
false,
false,
false,
false,
true,
"sdi[{ch1}][0]->tsi[{ch1}][0];"
"sdi[{ch2}][0]->tsi[{ch1}][1];"
"sdi[{ch3}][0]->tsi[{ch2}][0];"
"sdi[{ch4}][0]->tsi[{ch2}][1];"
"tsi[{ch1}][0]->fb[{ch1}][0];"
"tsi[{ch1}][1]->fb[{ch1}][1];"
"tsi[{ch2}][0]->fb[{ch2}][0];"
"tsi[{ch2}][1]->fb[{ch2}][1];",
}},
{SDIWireFormat::UHD4K_ST2018_6G_Squares_2SI,
{
NTV2_MODE_CAPTURE,
1,
1,
false,
true,
false,
false,
false,
false,
false,
false,
false,
true,
"sdi[{ch1}][0]->fb[{ch1}][0];",
}},
{SDIWireFormat::UHD4K_ST2018_6G_Squares_2SI_Kona5_io4KPlus,
{
NTV2_MODE_CAPTURE,
2,
2,
false,
true,
false,
false,
false,
false,
false,
false,
false,
true,
// Capture
"sdi[{ch1}][0]->tsi[{ch1}][0];"
"sdi[{ch2}][0]->tsi[{ch1}][1];"
"sdi[{ch3}][0]->tsi[{ch2}][0];"
"sdi[{ch4}][0]->tsi[{ch2}][1];"
"tsi[{ch1}][0]->fb[{ch1}][0];"
"tsi[{ch1}][1]->fb[{ch1}][1];"
"tsi[{ch2}][0]->fb[{ch2}][0];"
"tsi[{ch2}][1]->fb[{ch2}][1];",
}},
{SDIWireFormat::UHD4K_ST2018_12G_Squares_2SI,
{
NTV2_MODE_CAPTURE,
1,
1,
false,
false,
true,
false,
false,
true,
false,
false,
false,
true,
"sdi[{ch1}][0]->fb[{ch1}][0];",
}},
{SDIWireFormat::UHD4K_ST2018_12G_Squares_2SI_Kona5_io4KPlus,
{
NTV2_MODE_CAPTURE,
1,
1,
false,
false,
true,
false,
false,
true,
false,
false,
false,
true,
"",
}},
{SDIWireFormat::UHD28K_ST2082_Dual_12G,
{
NTV2_MODE_CAPTURE,
2,
2,
false,
false,
true,
false,
false,
false,
false,
false,
false,
true,
"",
}},
{SDIWireFormat::UHD28K_ST2082_RGB_Dual_12G,
{
NTV2_MODE_CAPTURE,
2,
2,
false,
false,
true,
false,
false,
false,
false,
false,
false,
true,
"",
}},
{SDIWireFormat::UHD28K_ST2082_Quad_12G,
{
NTV2_MODE_CAPTURE,
4,
4,
false,
false,
true,
false,
false,
false,
false,
false,
false,
true,
"",
}},
};