diff --git a/plugins/aja/aja-card-manager.cpp b/plugins/aja/aja-card-manager.cpp index c545fe81b..0ebddb959 100644 --- a/plugins/aja/aja-card-manager.cpp +++ b/plugins/aja/aja-card-manager.cpp @@ -181,15 +181,13 @@ bool CardEntry::ChannelReady(NTV2Channel chan, const std::string &owner) const { const std::lock_guard lock(mMutex); - bool found = false; - for (const auto &pwn : mChannelPwnz) { if (pwn.second & (1 << static_cast(chan))) { return pwn.first == owner; } } - return !found; + return true; } bool CardEntry::AcquireChannel(NTV2Channel chan, NTV2Mode mode, diff --git a/plugins/aja/aja-output.cpp b/plugins/aja/aja-output.cpp index 0e1905288..75b4cb8a0 100644 --- a/plugins/aja/aja-output.cpp +++ b/plugins/aja/aja-output.cpp @@ -237,7 +237,6 @@ void AJAOutput::QueueVideoFrame(struct video_data *frame, size_t size) vf.frame = *frame; vf.frameNum = mVideoWriteFrames; vf.size = size; - vf.frame = *frame; if (mVideoQueue->size() > kVideoQueueMaxSize) { auto &front = mVideoQueue->front(); @@ -259,7 +258,6 @@ void AJAOutput::QueueAudioFrames(struct audio_data *frames, size_t size) af.frames = *frames; af.offset = 0; af.size = size; - af.frames = *frames; if (mAudioQueue->size() > kAudioQueueMaxSize) { auto &front = mAudioQueue->front(); @@ -374,8 +372,8 @@ void AJAOutput::DMAAudioFromQueue(NTV2AudioSystem audioSys) "AJAOutput::DMAAudioFromQueue: Drop %d audio samples", adjustSamples); } else { - uint32_t samples = - sizeLeft / (kDefaultAudioSampleSize * + uint32_t samples = (uint32_t)sizeLeft / + (kDefaultAudioSampleSize * kDefaultAudioChannels); af.offset += sizeLeft; sizeLeft = 0; @@ -915,7 +913,7 @@ static void *aja_output_create(obs_data_t *settings, obs_output_t *output) const char *cardID = obs_data_get_string(settings, kUIPropDevice.id); if (!cardID) { blog(LOG_ERROR, "aja_output_create: Card ID is null!"); - return false; + return nullptr; } const char *outputID = obs_data_get_string(settings, kUIPropAJAOutputID.id); diff --git a/plugins/aja/aja-routing.cpp b/plugins/aja/aja-routing.cpp index 0025d44d0..cb0670088 100644 --- a/plugins/aja/aja-routing.cpp +++ b/plugins/aja/aja-routing.cpp @@ -91,7 +91,6 @@ bool Routing::ParseRouteString(const std::string &route, * the route strings currently only come from a known set. */ NTV2StringList lines; - NTV2StringList tokens; lines = aja::split(route_strip, ';'); if (lines.empty()) @@ -338,7 +337,6 @@ void Routing::StartSourceAudio(const SourceProps &props, CNTV2Card *card) // Fix for AJA NTV2 internal bug #11467 ULWord magicAudioBits = 0; if (NTV2_INPUT_SOURCE_IS_HDMI(inputSrc)) { - magicAudioBits = 0x00100000; switch (inputSrc) { default: case NTV2_INPUTSOURCE_HDMI1: @@ -407,13 +405,7 @@ SDIWireFormat GuessSDIWireFormat(NTV2VideoFormat vf, IOSelection io, if (aja::IsSDIFourWireIOSelection(io)) { swf = SDIWireFormat::UHD4K_ST292_Quad_1_5_Squares; } else if (aja::IsSDITwoWireIOSelection(io)) { - if (t4k == SDI4KTransport::Squares) { - swf = SDIWireFormat:: - UHD4K_ST292_Dual_1_5_Squares; - } else { - swf = SDIWireFormat:: - UHD4K_ST425_Dual_3Gb_2SI; - } + swf = SDIWireFormat::UHD4K_ST292_Dual_1_5_Squares; } } else if (t4k == SDI4KTransport::TwoSampleInterleave) { if (aja::IsSDIOneWireIOSelection(io)) { diff --git a/plugins/aja/aja-routing.hpp b/plugins/aja/aja-routing.hpp index 380cbf816..bc9c08b48 100644 --- a/plugins/aja/aja-routing.hpp +++ b/plugins/aja/aja-routing.hpp @@ -50,7 +50,7 @@ struct RoutingConfig { */ using VPIDSpec = std::pair; -static const std::map kSDIWireFormats = { +static inline const std::map kSDIWireFormats = { {{RasterDefinition::SD, VPIDStandard_483_576}, SDIWireFormat::SD_ST352}, {{RasterDefinition::HD, VPIDStandard_720}, SDIWireFormat::HD_720p_ST292}, diff --git a/plugins/aja/aja-source.cpp b/plugins/aja/aja-source.cpp index e4caf076d..c919bb6a9 100644 --- a/plugins/aja/aja-source.cpp +++ b/plugins/aja/aja-source.cpp @@ -919,8 +919,7 @@ static void aja_source_update(void *data, obs_data_t *settings) auto prevCardEntry = cardManager.GetCardEntry(currentCardID); if (prevCardEntry) { const std::string &ioSelectStr = - aja::IOSelectionToString(curr_props.ioSelect) - .c_str(); + aja::IOSelectionToString(curr_props.ioSelect); if (!prevCardEntry->ReleaseInputSelection( curr_props.ioSelect, curr_props.deviceID, ajaSource->GetName())) { @@ -985,7 +984,7 @@ static void aja_source_update(void *data, obs_data_t *settings) // Release Channels if IOSelection changes if (want_props.ioSelect != curr_props.ioSelect) { const std::string &ioSelectStr = - aja::IOSelectionToString(curr_props.ioSelect).c_str(); + aja::IOSelectionToString(curr_props.ioSelect); if (!cardEntry->ReleaseInputSelection(curr_props.ioSelect, curr_props.deviceID, ajaSource->GetName())) { diff --git a/plugins/aja/routing/hdmi_rgb_capture.h b/plugins/aja/routing/hdmi_rgb_capture.h index fb8405acd..d9a4605e4 100644 --- a/plugins/aja/routing/hdmi_rgb_capture.h +++ b/plugins/aja/routing/hdmi_rgb_capture.h @@ -2,21 +2,21 @@ #include "../aja-routing.hpp" -static const std::map kHDMIRGBCaptureConfigs = { - {HDMIWireFormat::HD_RGB_LFR, - { - NTV2_MODE_CAPTURE, - 1, - 1, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - "hdmi[{ch1}][0]->fb[{ch1}][0];", - }}}; +static inline const std::map + kHDMIRGBCaptureConfigs = {{HDMIWireFormat::HD_RGB_LFR, + { + NTV2_MODE_CAPTURE, + 1, + 1, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + "hdmi[{ch1}][0]->fb[{ch1}][0];", + }}}; diff --git a/plugins/aja/routing/hdmi_rgb_display.h b/plugins/aja/routing/hdmi_rgb_display.h index a8c0b3884..42a45ed66 100644 --- a/plugins/aja/routing/hdmi_rgb_display.h +++ b/plugins/aja/routing/hdmi_rgb_display.h @@ -2,27 +2,28 @@ #include "../aja-routing.hpp" -static const std::map kHDMIRGBDisplayConfigs = { - {HDMIWireFormat::HD_RGB_LFR, - {NTV2_MODE_DISPLAY, 1, 1, true, false, false, false, false, false, - false, false, false, false, "fb[{ch1}][0]->hdmi[0][0];"}}, - {HDMIWireFormat::TTAP_PRO, - { - NTV2_MODE_DISPLAY, - 1, - 1, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - "fb[{ch1}][2]->dlo[{ch1}][0];" - "dlo[{ch1}][0]->sdi[{ch1}][0];" - "dlo[{ch1}][1]->sdi[{ch1}][1];" - "fb[{ch1}][2]->hdmi[{ch1}][0];", - }}}; +static inline const std::map + kHDMIRGBDisplayConfigs = {{HDMIWireFormat::HD_RGB_LFR, + {NTV2_MODE_DISPLAY, 1, 1, true, false, false, + false, false, false, false, false, false, + false, "fb[{ch1}][0]->hdmi[0][0];"}}, + {HDMIWireFormat::TTAP_PRO, + { + NTV2_MODE_DISPLAY, + 1, + 1, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + "fb[{ch1}][2]->dlo[{ch1}][0];" + "dlo[{ch1}][0]->sdi[{ch1}][0];" + "dlo[{ch1}][1]->sdi[{ch1}][1];" + "fb[{ch1}][2]->hdmi[{ch1}][0];", + }}}; diff --git a/plugins/aja/routing/hdmi_ycbcr_capture.h b/plugins/aja/routing/hdmi_ycbcr_capture.h index a2c9353e8..ea62d4b4d 100644 --- a/plugins/aja/routing/hdmi_ycbcr_capture.h +++ b/plugins/aja/routing/hdmi_ycbcr_capture.h @@ -2,46 +2,47 @@ #include "../aja-routing.hpp" -static const std::map kHDMIYCbCrCaptureConfigs = { - {HDMIWireFormat::HD_YCBCR_LFR, - { - NTV2_MODE_CAPTURE, - 1, - 1, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - "hdmi[{ch1}][0]->fb[{ch1}][0];", - }}, - {HDMIWireFormat::UHD_4K_YCBCR_LFR, - { - NTV2_MODE_CAPTURE, - 1, - 2, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - "hdmi[0][0]->tsi[{ch1}][0];" - "hdmi[0][1]->tsi[{ch1}][1];" - "hdmi[0][2]->tsi[{ch2}][0];" - "hdmi[0][3]->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];", - }}, +static inline const std::map + kHDMIYCbCrCaptureConfigs = { + {HDMIWireFormat::HD_YCBCR_LFR, + { + NTV2_MODE_CAPTURE, + 1, + 1, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + "hdmi[{ch1}][0]->fb[{ch1}][0];", + }}, + {HDMIWireFormat::UHD_4K_YCBCR_LFR, + { + NTV2_MODE_CAPTURE, + 1, + 2, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + "hdmi[0][0]->tsi[{ch1}][0];" + "hdmi[0][1]->tsi[{ch1}][1];" + "hdmi[0][2]->tsi[{ch2}][0];" + "hdmi[0][3]->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];", + }}, }; diff --git a/plugins/aja/routing/hdmi_ycbcr_display.h b/plugins/aja/routing/hdmi_ycbcr_display.h index 7210cf866..d24f5dfe9 100644 --- a/plugins/aja/routing/hdmi_ycbcr_display.h +++ b/plugins/aja/routing/hdmi_ycbcr_display.h @@ -2,63 +2,63 @@ #include "../aja-routing.hpp" -static const std::map kHDMIYCbCrDisplayConfigs = { - {HDMIWireFormat::HD_YCBCR_LFR, - { - NTV2_MODE_DISPLAY, - 1, - 1, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - "fb[{ch1}][0]->hdmi[0][0];", - }}, - {HDMIWireFormat::UHD_4K_YCBCR_LFR, - { - NTV2_MODE_DISPLAY, - 1, - 2, - false, - 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]->hdmi[0][0];" - "tsi[{ch1}][1]->hdmi[0][1];" - "tsi[{ch2}][0]->hdmi[0][2];" - "tsi[{ch2}][1]->hdmi[0][3];", - }}, - {HDMIWireFormat::TTAP_PRO, - { - NTV2_MODE_DISPLAY, - 1, - 1, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - "fb[{ch1}][0]->sdi[{ch1}][0];" - "fb[{ch1}][0]->hdmi[{ch1}][0];", - }}}; +static inline const std::map + kHDMIYCbCrDisplayConfigs = {{HDMIWireFormat::HD_YCBCR_LFR, + { + NTV2_MODE_DISPLAY, + 1, + 1, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + "fb[{ch1}][0]->hdmi[0][0];", + }}, + {HDMIWireFormat::UHD_4K_YCBCR_LFR, + { + NTV2_MODE_DISPLAY, + 1, + 2, + false, + 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]->hdmi[0][0];" + "tsi[{ch1}][1]->hdmi[0][1];" + "tsi[{ch2}][0]->hdmi[0][2];" + "tsi[{ch2}][1]->hdmi[0][3];", + }}, + {HDMIWireFormat::TTAP_PRO, + { + NTV2_MODE_DISPLAY, + 1, + 1, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + "fb[{ch1}][0]->sdi[{ch1}][0];" + "fb[{ch1}][0]->hdmi[{ch1}][0];", + }}}; diff --git a/plugins/aja/routing/sdi_rgb_capture.h b/plugins/aja/routing/sdi_rgb_capture.h index efcba030e..6447229c5 100644 --- a/plugins/aja/routing/sdi_rgb_capture.h +++ b/plugins/aja/routing/sdi_rgb_capture.h @@ -2,465 +2,466 @@ #include "../aja-routing.hpp" -static const std::map kSDIRGBCaptureConfigs = { - { - SDIWireFormat::SD_ST352, +static inline const std::map + kSDIRGBCaptureConfigs = { { - NTV2_MODE_CAPTURE, // i/o mode - 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? - "", + SDIWireFormat::SD_ST352, + { + NTV2_MODE_CAPTURE, // i/o mode + 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? + "", + }, }, - }, - {SDIWireFormat::HD_720p_ST292, - { - NTV2_MODE_CAPTURE, - 1, - 1, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch1}][1]->dli[{ch1}][1];" - "dli[{ch1}][0]->fb[{ch1}][0];", - }}, - {SDIWireFormat::HD_1080_ST292, - { - NTV2_MODE_CAPTURE, - 1, - 1, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - // Capture - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch1}][1]->dli[{ch1}][1];" - "dli[{ch1}][0]->fb[{ch1}][0];", - }}, - {SDIWireFormat::HD_1080_ST372_Dual, - { - NTV2_MODE_CAPTURE, - 2, - 1, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - // Capture - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch2}][0]->dli[{ch1}][1];" - "dli[{ch1}][0]->fb[{ch1}][0];", - }}, - {SDIWireFormat::HD_720p_ST425_3Ga, - { - NTV2_MODE_CAPTURE, - 1, - 1, - true, - false, - false, - false, - false, - true, - false, - false, - false, - false, - // Capture - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch1}][1]->dli[{ch1}][1];" - "dli[{ch1}][0]->fb[{ch1}][0];", - }}, - {SDIWireFormat::HD_1080p_ST425_3Ga, - { - NTV2_MODE_CAPTURE, - 1, - 1, - true, - false, - false, - false, - false, - true, - false, - false, - false, - false, - // Capture - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch1}][1]->dli[{ch1}][1];" - "dli[{ch1}][0]->fb[{ch1}][0];", - }}, - {SDIWireFormat::HD_1080p_ST425_3Gb_DL, - { - NTV2_MODE_CAPTURE, - 1, - 1, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - // Capture - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch1}][1]->dli[{ch1}][1];" - "dli[{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, - // Capture - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch1}][1]->dli[{ch1}][1];" - "dli[{ch1}][0]->fb[{ch1}][0];", - }}, - {SDIWireFormat::HD_1080p_ST425_3Gb, - { - NTV2_MODE_CAPTURE, - 1, - 2, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - // Capture - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch1}][1]->dli[{ch1}][1];" - "dli[{ch1}][0]->fb[{ch1}][0];", - }}, - {SDIWireFormat::HD_1080p_ST425_Dual_3Ga, - { - NTV2_MODE_CAPTURE, - 2, - 2, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - "", - }}, - {SDIWireFormat::HD_1080p_ST425_Dual_3Gb, - { - NTV2_MODE_CAPTURE, - 2, - 2, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - "", - }}, - {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, - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch1}][1]->dli[{ch1}][1];" + {SDIWireFormat::HD_720p_ST292, + { + NTV2_MODE_CAPTURE, + 1, + 1, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch1}][1]->dli[{ch1}][1];" + "dli[{ch1}][0]->fb[{ch1}][0];", + }}, + {SDIWireFormat::HD_1080_ST292, + { + NTV2_MODE_CAPTURE, + 1, + 1, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + // Capture + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch1}][1]->dli[{ch1}][1];" + "dli[{ch1}][0]->fb[{ch1}][0];", + }}, + {SDIWireFormat::HD_1080_ST372_Dual, + { + NTV2_MODE_CAPTURE, + 2, + 1, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + // Capture + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch2}][0]->dli[{ch1}][1];" + "dli[{ch1}][0]->fb[{ch1}][0];", + }}, + {SDIWireFormat::HD_720p_ST425_3Ga, + { + NTV2_MODE_CAPTURE, + 1, + 1, + true, + false, + false, + false, + false, + true, + false, + false, + false, + false, + // Capture + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch1}][1]->dli[{ch1}][1];" + "dli[{ch1}][0]->fb[{ch1}][0];", + }}, + {SDIWireFormat::HD_1080p_ST425_3Ga, + { + NTV2_MODE_CAPTURE, + 1, + 1, + true, + false, + false, + false, + false, + true, + false, + false, + false, + false, + // Capture + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch1}][1]->dli[{ch1}][1];" + "dli[{ch1}][0]->fb[{ch1}][0];", + }}, + {SDIWireFormat::HD_1080p_ST425_3Gb_DL, + { + NTV2_MODE_CAPTURE, + 1, + 1, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + // Capture + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch1}][1]->dli[{ch1}][1];" + "dli[{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, + // Capture + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch1}][1]->dli[{ch1}][1];" + "dli[{ch1}][0]->fb[{ch1}][0];", + }}, + {SDIWireFormat::HD_1080p_ST425_3Gb, + { + NTV2_MODE_CAPTURE, + 1, + 2, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + // Capture + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch1}][1]->dli[{ch1}][1];" + "dli[{ch1}][0]->fb[{ch1}][0];", + }}, + {SDIWireFormat::HD_1080p_ST425_Dual_3Ga, + { + NTV2_MODE_CAPTURE, + 2, + 2, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + "", + }}, + {SDIWireFormat::HD_1080p_ST425_Dual_3Gb, + { + NTV2_MODE_CAPTURE, + 2, + 2, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + "", + }}, + {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, + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch1}][1]->dli[{ch1}][1];" - "sdi[{ch2}][0]->dli[{ch2}][0];" - "sdi[{ch2}][1]->dli[{ch2}][1];" + "sdi[{ch2}][0]->dli[{ch2}][0];" + "sdi[{ch2}][1]->dli[{ch2}][1];" - "sdi[{ch3}][0]->dli[{ch3}][0];" - "sdi[{ch3}][1]->dli[{ch3}][1];" + "sdi[{ch3}][0]->dli[{ch3}][0];" + "sdi[{ch3}][1]->dli[{ch3}][1];" - "sdi[{ch4}][0]->dli[{ch4}][0];" - "sdi[{ch4}][1]->dli[{ch4}][1];" + "sdi[{ch4}][0]->dli[{ch4}][0];" + "sdi[{ch4}][1]->dli[{ch4}][1];" - "dli[{ch1}][0]->fb[{ch1}][2];" - "dli[{ch2}][0]->fb[{ch2}][2];" - "dli[{ch3}][0]->fb[{ch3}][2];" - "dli[{ch4}][0]->fb[{ch4}][2];", - }}, - {SDIWireFormat::UHD4K_ST425_Dual_3Gb_2SI, - { - NTV2_MODE_CAPTURE, - 2, - 2, - true, - false, - false, - false, - false, - false, - false, - false, - false, - true, - "", - }}, - {SDIWireFormat::UHD4K_ST425_Quad_3Ga_2SI, - { - NTV2_MODE_CAPTURE, - 4, - 4, - true, - false, - false, - false, - false, - false, - false, - false, - false, - true, - // SDI 1-4 -> Dual-Link 1-4 - // -> TSI Mux 1-2 -> Framestore 1-2 - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch1}][1]->dli[{ch1}][1];" - "sdi[{ch2}][0]->dli[{ch2}][0];" - "sdi[{ch2}][1]->dli[{ch2}][1];" - "sdi[{ch3}][0]->dli[{ch3}][0];" - "sdi[{ch3}][1]->dli[{ch3}][1];" - "sdi[{ch4}][0]->dli[{ch4}][0];" - "sdi[{ch4}][1]->dli[{ch4}][1];" + "dli[{ch1}][0]->fb[{ch1}][2];" + "dli[{ch2}][0]->fb[{ch2}][2];" + "dli[{ch3}][0]->fb[{ch3}][2];" + "dli[{ch4}][0]->fb[{ch4}][2];", + }}, + {SDIWireFormat::UHD4K_ST425_Dual_3Gb_2SI, + { + NTV2_MODE_CAPTURE, + 2, + 2, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + "", + }}, + {SDIWireFormat::UHD4K_ST425_Quad_3Ga_2SI, + { + NTV2_MODE_CAPTURE, + 4, + 4, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + // SDI 1-4 -> Dual-Link 1-4 + // -> TSI Mux 1-2 -> Framestore 1-2 + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch1}][1]->dli[{ch1}][1];" + "sdi[{ch2}][0]->dli[{ch2}][0];" + "sdi[{ch2}][1]->dli[{ch2}][1];" + "sdi[{ch3}][0]->dli[{ch3}][0];" + "sdi[{ch3}][1]->dli[{ch3}][1];" + "sdi[{ch4}][0]->dli[{ch4}][0];" + "sdi[{ch4}][1]->dli[{ch4}][1];" - "dli[{ch1}][0]->tsi[{ch1}][0];" - "dli[{ch2}][0]->tsi[{ch1}][1];" - "dli[{ch3}][0]->tsi[{ch2}][0];" - "dli[{ch4}][0]->tsi[{ch2}][1];" + "dli[{ch1}][0]->tsi[{ch1}][0];" + "dli[{ch2}][0]->tsi[{ch1}][1];" + "dli[{ch3}][0]->tsi[{ch2}][0];" + "dli[{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, - true, - false, - false, - false, - false, - false, - false, - false, - false, - true, - // SDI 1-4 -> Dual-Link 1-4 - // -> TSI Mux 1-2 -> Framestore 1-2 - "sdi[{ch1}][0]->dli[{ch1}][0];" - "sdi[{ch1}][1]->dli[{ch1}][1];" - "sdi[{ch2}][0]->dli[{ch2}][0];" - "sdi[{ch2}][1]->dli[{ch2}][1];" - "sdi[{ch3}][0]->dli[{ch3}][0];" - "sdi[{ch3}][1]->dli[{ch3}][1];" - "sdi[{ch4}][0]->dli[{ch4}][0];" - "sdi[{ch4}][1]->dli[{ch4}][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, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + // SDI 1-4 -> Dual-Link 1-4 + // -> TSI Mux 1-2 -> Framestore 1-2 + "sdi[{ch1}][0]->dli[{ch1}][0];" + "sdi[{ch1}][1]->dli[{ch1}][1];" + "sdi[{ch2}][0]->dli[{ch2}][0];" + "sdi[{ch2}][1]->dli[{ch2}][1];" + "sdi[{ch3}][0]->dli[{ch3}][0];" + "sdi[{ch3}][1]->dli[{ch3}][1];" + "sdi[{ch4}][0]->dli[{ch4}][0];" + "sdi[{ch4}][1]->dli[{ch4}][1];" - "dli[{ch1}][0]->tsi[{ch1}][0];" - "dli[{ch2}][0]->tsi[{ch1}][1];" - "dli[{ch3}][0]->tsi[{ch2}][0];" - "dli[{ch4}][0]->tsi[{ch2}][1];" + "dli[{ch1}][0]->tsi[{ch1}][0];" + "dli[{ch2}][0]->tsi[{ch1}][1];" + "dli[{ch3}][0]->tsi[{ch2}][0];" + "dli[{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, - 2, - 2, - false, - true, - false, - false, - false, - false, - false, - false, - false, - true, - "", - }}, - {SDIWireFormat::UHD4K_ST2018_12G_Squares_2SI, - { - 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, - "", - }}, + "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, + 2, + 2, + false, + true, + false, + false, + false, + false, + false, + false, + false, + true, + "", + }}, + {SDIWireFormat::UHD4K_ST2018_12G_Squares_2SI, + { + 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, + "", + }}, }; diff --git a/plugins/aja/routing/sdi_rgb_display.h b/plugins/aja/routing/sdi_rgb_display.h index 1e0e7c328..c41dc698b 100644 --- a/plugins/aja/routing/sdi_rgb_display.h +++ b/plugins/aja/routing/sdi_rgb_display.h @@ -2,467 +2,468 @@ #include "../aja-routing.hpp" -static const std::map kSDIRGBDisplayConfigs = { - { - SDIWireFormat::SD_ST352, +static inline const std::map + kSDIRGBDisplayConfigs = { { - 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? - "", // RGB Output Route + 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? + "", // RGB Output Route + }, }, - }, - {SDIWireFormat::HD_720p_ST292, - { - NTV2_MODE_DISPLAY, - 1, - 1, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - "fb[{ch1}][2]->dlo[{ch1}][0];" - "dlo[{ch1}][0]->sdi[{ch1}[0];" - "dlo[{ch1}][1]->sdi[{ch1}][1];", - }}, - {SDIWireFormat::HD_1080_ST292, - { - NTV2_MODE_DISPLAY, - 1, - 1, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - "fb[{ch1}][2]->dlo[{ch1}][0];" - "dlo[{ch1}][0]->sdi[{ch1}[0];" - "dlo[{ch1}][1]->sdi[{ch1}][1];", - }}, - {SDIWireFormat::HD_1080_ST372_Dual, - { - NTV2_MODE_DISPLAY, - 2, - 1, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - // Playout - "fb[{ch1}][2]->dlo[{ch1}][0];" - "dlo[{ch1}][0]->sdi[{ch1}[0];" - "dlo[{ch1}][1]->sdi[{ch2}][0];", - }}, - {SDIWireFormat::HD_720p_ST425_3Ga, - { - NTV2_MODE_DISPLAY, - 1, - 1, - true, - false, - false, - false, - false, - true, - false, - false, - false, - false, - // Output - "fb[{ch1}][2]->dlo[{ch1}][0];" - "dlo[{ch1}][0]->sdi[{ch1}][0];" - "dlo[{ch1}][1]->sdi[{ch1}][1];", - }}, - {SDIWireFormat::HD_1080p_ST425_3Ga, - { - NTV2_MODE_DISPLAY, - 1, - 1, - true, - false, - false, - false, - false, - true, - false, - false, - false, - false, - // Output - "fb[{ch1}][2]->dlo[{ch1}][0];" - "dlo[{ch1}][0]->sdi[{ch1}][0];" - "dlo[{ch1}][1]->sdi[{ch1}][1];", - }}, - {SDIWireFormat::HD_1080p_ST425_3Gb_DL, - { - NTV2_MODE_DISPLAY, - 1, - 1, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - // Output - "fb[{ch1}][2]->dlo[{ch1}][0];" - "dlo[{ch1}][0]->sdi[{ch1}][0];" - "dlo[{ch1}][1]->sdi[{ch1}][1];", - }}, - {SDIWireFormat::HD_720p_ST425_3Gb, - { - NTV2_MODE_DISPLAY, - 1, - 2, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - // Output - "fb[{ch1}][2]->dlo[{ch1}][0];" - "dlo[{ch1}][0]->sdi[{ch1}][0];" - "dlo[{ch1}][1]->sdi[{ch1}][1];", - }}, - {SDIWireFormat::HD_1080p_ST425_3Gb, - { - NTV2_MODE_DISPLAY, - 1, - 2, - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - // Output - "fb[{ch1}][2]->dlo[{ch1}][0];" - "dlo[{ch1}][0]->sdi[{ch1}][0];" - "dlo[{ch1}][1]->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_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, - // Framestores 1-4 -> Dual-Link 1-4 -> SDI 1-4 - "fb[{ch1}][2]->dlo[{ch1}][0];" - "fb[{ch2}][2]->dlo[{ch2}][0];" - "fb[{ch3}][2]->dlo[{ch3}][0];" - "fb[{ch4}][2]->dlo[{ch4}][0];" + {SDIWireFormat::HD_720p_ST292, + { + NTV2_MODE_DISPLAY, + 1, + 1, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + "fb[{ch1}][2]->dlo[{ch1}][0];" + "dlo[{ch1}][0]->sdi[{ch1}[0];" + "dlo[{ch1}][1]->sdi[{ch1}][1];", + }}, + {SDIWireFormat::HD_1080_ST292, + { + NTV2_MODE_DISPLAY, + 1, + 1, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + "fb[{ch1}][2]->dlo[{ch1}][0];" + "dlo[{ch1}][0]->sdi[{ch1}[0];" + "dlo[{ch1}][1]->sdi[{ch1}][1];", + }}, + {SDIWireFormat::HD_1080_ST372_Dual, + { + NTV2_MODE_DISPLAY, + 2, + 1, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + // Playout + "fb[{ch1}][2]->dlo[{ch1}][0];" + "dlo[{ch1}][0]->sdi[{ch1}[0];" + "dlo[{ch1}][1]->sdi[{ch2}][0];", + }}, + {SDIWireFormat::HD_720p_ST425_3Ga, + { + NTV2_MODE_DISPLAY, + 1, + 1, + true, + false, + false, + false, + false, + true, + false, + false, + false, + false, + // Output + "fb[{ch1}][2]->dlo[{ch1}][0];" + "dlo[{ch1}][0]->sdi[{ch1}][0];" + "dlo[{ch1}][1]->sdi[{ch1}][1];", + }}, + {SDIWireFormat::HD_1080p_ST425_3Ga, + { + NTV2_MODE_DISPLAY, + 1, + 1, + true, + false, + false, + false, + false, + true, + false, + false, + false, + false, + // Output + "fb[{ch1}][2]->dlo[{ch1}][0];" + "dlo[{ch1}][0]->sdi[{ch1}][0];" + "dlo[{ch1}][1]->sdi[{ch1}][1];", + }}, + {SDIWireFormat::HD_1080p_ST425_3Gb_DL, + { + NTV2_MODE_DISPLAY, + 1, + 1, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + // Output + "fb[{ch1}][2]->dlo[{ch1}][0];" + "dlo[{ch1}][0]->sdi[{ch1}][0];" + "dlo[{ch1}][1]->sdi[{ch1}][1];", + }}, + {SDIWireFormat::HD_720p_ST425_3Gb, + { + NTV2_MODE_DISPLAY, + 1, + 2, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + // Output + "fb[{ch1}][2]->dlo[{ch1}][0];" + "dlo[{ch1}][0]->sdi[{ch1}][0];" + "dlo[{ch1}][1]->sdi[{ch1}][1];", + }}, + {SDIWireFormat::HD_1080p_ST425_3Gb, + { + NTV2_MODE_DISPLAY, + 1, + 2, + true, + false, + false, + false, + false, + false, + false, + false, + false, + false, + // Output + "fb[{ch1}][2]->dlo[{ch1}][0];" + "dlo[{ch1}][0]->sdi[{ch1}][0];" + "dlo[{ch1}][1]->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_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, + // Framestores 1-4 -> Dual-Link 1-4 -> SDI 1-4 + "fb[{ch1}][2]->dlo[{ch1}][0];" + "fb[{ch2}][2]->dlo[{ch2}][0];" + "fb[{ch3}][2]->dlo[{ch3}][0];" + "fb[{ch4}][2]->dlo[{ch4}][0];" - "dlo[{ch1}][0]->sdi[{ch1}][0];" - "dlo[{ch1}][1]->sdi[{ch1}][1];" + "dlo[{ch1}][0]->sdi[{ch1}][0];" + "dlo[{ch1}][1]->sdi[{ch1}][1];" - "dlo[{ch2}][0]->sdi[{ch2}][0];" - "dlo[{ch2}][1]->sdi[{ch2}][1];" + "dlo[{ch2}][0]->sdi[{ch2}][0];" + "dlo[{ch2}][1]->sdi[{ch2}][1];" - "dlo[{ch3}][0]->sdi[{ch3}][0];" - "dlo[{ch3}][1]->sdi[{ch3}][1];" + "dlo[{ch3}][0]->sdi[{ch3}][0];" + "dlo[{ch3}][1]->sdi[{ch3}][1];" - "dlo[{ch4}][0]->sdi[{ch4}][0];" - "dlo[{ch4}][1]->sdi[{ch4}][1];", - }}, - {SDIWireFormat::UHD4K_ST425_Dual_3Gb_2SI, - { - NTV2_MODE_DISPLAY, - 2, - 2, - true, - false, - false, - false, - false, - false, - false, - false, - false, - true, - "", - }}, - {SDIWireFormat::UHD4K_ST425_Quad_3Ga_2SI, - { - NTV2_MODE_DISPLAY, - 4, - 4, - true, - false, - false, - false, - false, - false, - false, - false, - false, - true, - // Framestores 1-2 -> TSI Mux 1-2 - // -> Dual-Link 1-4 -> SDI 1-4 - "fb[{ch1}][2]->tsi[{ch1}][0];" - "fb[{ch1}][3]->tsi[{ch1}][1];" + "dlo[{ch4}][0]->sdi[{ch4}][0];" + "dlo[{ch4}][1]->sdi[{ch4}][1];", + }}, + {SDIWireFormat::UHD4K_ST425_Dual_3Gb_2SI, + { + NTV2_MODE_DISPLAY, + 2, + 2, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + "", + }}, + {SDIWireFormat::UHD4K_ST425_Quad_3Ga_2SI, + { + NTV2_MODE_DISPLAY, + 4, + 4, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + // Framestores 1-2 -> TSI Mux 1-2 + // -> Dual-Link 1-4 -> SDI 1-4 + "fb[{ch1}][2]->tsi[{ch1}][0];" + "fb[{ch1}][3]->tsi[{ch1}][1];" - "fb[{ch2}][2]->tsi[{ch2}][0];" - "fb[{ch2}][3]->tsi[{ch2}][1];" + "fb[{ch2}][2]->tsi[{ch2}][0];" + "fb[{ch2}][3]->tsi[{ch2}][1];" - "tsi[{ch1}][2]->dlo[{ch1}][0];" - "tsi[{ch1}][3]->dlo[{ch2}][0];" - "tsi[{ch2}][2]->dlo[{ch3}][0];" - "tsi[{ch2}][3]->dlo[{ch4}][0];" + "tsi[{ch1}][2]->dlo[{ch1}][0];" + "tsi[{ch1}][3]->dlo[{ch2}][0];" + "tsi[{ch2}][2]->dlo[{ch3}][0];" + "tsi[{ch2}][3]->dlo[{ch4}][0];" - "dlo[{ch1}][0]->sdi[{ch1}][0];" - "dlo[{ch1}][1]->sdi[{ch1}][1];" - "dlo[{ch2}][0]->sdi[{ch2}][0];" - "dlo[{ch2}][1]->sdi[{ch2}][1];" - "dlo[{ch3}][0]->sdi[{ch3}][0];" - "dlo[{ch3}][1]->sdi[{ch3}][1];" - "dlo[{ch4}][0]->sdi[{ch4}][0];" - "dlo[{ch4}][1]->sdi[{ch4}][1];", - }}, - {SDIWireFormat::UHD4K_ST425_Quad_3Gb_2SI, - { - NTV2_MODE_DISPLAY, - 4, - 4, - true, - false, - false, - false, - false, - false, - false, - false, - false, - true, - // Framestores 1-2 -> TSI Mux 1-2 - // -> Dual-Link 1-4 -> SDI 1-4 - "fb[{ch1}][2]->tsi[{ch1}][0];" - "fb[{ch1}][3]->tsi[{ch1}][1];" + "dlo[{ch1}][0]->sdi[{ch1}][0];" + "dlo[{ch1}][1]->sdi[{ch1}][1];" + "dlo[{ch2}][0]->sdi[{ch2}][0];" + "dlo[{ch2}][1]->sdi[{ch2}][1];" + "dlo[{ch3}][0]->sdi[{ch3}][0];" + "dlo[{ch3}][1]->sdi[{ch3}][1];" + "dlo[{ch4}][0]->sdi[{ch4}][0];" + "dlo[{ch4}][1]->sdi[{ch4}][1];", + }}, + {SDIWireFormat::UHD4K_ST425_Quad_3Gb_2SI, + { + NTV2_MODE_DISPLAY, + 4, + 4, + true, + false, + false, + false, + false, + false, + false, + false, + false, + true, + // Framestores 1-2 -> TSI Mux 1-2 + // -> Dual-Link 1-4 -> SDI 1-4 + "fb[{ch1}][2]->tsi[{ch1}][0];" + "fb[{ch1}][3]->tsi[{ch1}][1];" - "fb[{ch2}][2]->tsi[{ch2}][0];" - "fb[{ch2}][3]->tsi[{ch2}][1];" + "fb[{ch2}][2]->tsi[{ch2}][0];" + "fb[{ch2}][3]->tsi[{ch2}][1];" - "tsi[{ch1}][2]->dlo[{ch1}][0];" - "tsi[{ch1}][3]->dlo[{ch2}][0];" - "tsi[{ch2}][2]->dlo[{ch3}][0];" - "tsi[{ch2}][3]->dlo[{ch4}][0];" + "tsi[{ch1}][2]->dlo[{ch1}][0];" + "tsi[{ch1}][3]->dlo[{ch2}][0];" + "tsi[{ch2}][2]->dlo[{ch3}][0];" + "tsi[{ch2}][3]->dlo[{ch4}][0];" - "dlo[{ch1}][0]->sdi[{ch1}][0];" - "dlo[{ch1}][1]->sdi[{ch1}][1];" - "dlo[{ch2}][0]->sdi[{ch2}][0];" - "dlo[{ch2}][1]->sdi[{ch2}][1];" - "dlo[{ch3}][0]->sdi[{ch3}][0];" - "dlo[{ch3}][1]->sdi[{ch3}][1];" - "dlo[{ch4}][0]->sdi[{ch4}][0];" - "dlo[{ch4}][1]->sdi[{ch4}][1];", - }}, - {SDIWireFormat::UHD4K_ST2018_6G_Squares_2SI, - { - NTV2_MODE_DISPLAY, - 2, - 2, - false, - true, - false, - false, - false, - false, - false, - false, - false, - true, - "", - }}, - {SDIWireFormat::UHD4K_ST2018_12G_Squares_2SI, - { - NTV2_MODE_DISPLAY, - 1, - 1, - false, - false, - true, - false, - false, - true, - false, - false, - false, - true, - "", - }}, - {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, - "", - }}, + "dlo[{ch1}][0]->sdi[{ch1}][0];" + "dlo[{ch1}][1]->sdi[{ch1}][1];" + "dlo[{ch2}][0]->sdi[{ch2}][0];" + "dlo[{ch2}][1]->sdi[{ch2}][1];" + "dlo[{ch3}][0]->sdi[{ch3}][0];" + "dlo[{ch3}][1]->sdi[{ch3}][1];" + "dlo[{ch4}][0]->sdi[{ch4}][0];" + "dlo[{ch4}][1]->sdi[{ch4}][1];", + }}, + {SDIWireFormat::UHD4K_ST2018_6G_Squares_2SI, + { + NTV2_MODE_DISPLAY, + 2, + 2, + false, + true, + false, + false, + false, + false, + false, + false, + false, + true, + "", + }}, + {SDIWireFormat::UHD4K_ST2018_12G_Squares_2SI, + { + NTV2_MODE_DISPLAY, + 1, + 1, + false, + false, + true, + false, + false, + true, + false, + false, + false, + true, + "", + }}, + {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, + "", + }}, }; diff --git a/plugins/aja/routing/sdi_ycbcr_capture.h b/plugins/aja/routing/sdi_ycbcr_capture.h index 7cdb672d7..178dab1b1 100644 --- a/plugins/aja/routing/sdi_ycbcr_capture.h +++ b/plugins/aja/routing/sdi_ycbcr_capture.h @@ -2,7 +2,7 @@ #include "../aja-routing.hpp" -static const std::map kSDIYCbCrCaptureConfigs = { +static inline const std::map kSDIYCbCrCaptureConfigs = { { SDIWireFormat::SD_ST352, { diff --git a/plugins/aja/routing/sdi_ycbcr_display.h b/plugins/aja/routing/sdi_ycbcr_display.h index f905cc5a8..43a788a62 100644 --- a/plugins/aja/routing/sdi_ycbcr_display.h +++ b/plugins/aja/routing/sdi_ycbcr_display.h @@ -2,7 +2,7 @@ #include "../aja-routing.hpp" -static const std::map kSDIYCbCrDisplayConfigs = { +static inline const std::map kSDIYCbCrDisplayConfigs = { { SDIWireFormat::SD_ST352, {