From fecb91a0a75b114baafd9a422c2f6b3cd1dbedfe Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Thu, 4 Apr 2024 01:50:20 +0900 Subject: [PATCH] decklink2: Fix caps to mode conversion Build format list with custom mode preserved, instead of real mode --- .../sys/decklink2/gstdecklink2utils.cpp | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2utils.cpp b/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2utils.cpp index 3a930ab223..276795499e 100644 --- a/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2utils.cpp +++ b/subprojects/gst-plugins-bad/sys/decklink2/gstdecklink2utils.cpp @@ -1054,9 +1054,26 @@ gst_decklink2_build_template_caps (GstObject * io_object, /* Add custom wide mode */ switch (bdm_mode) { case bmdModeNTSC: + gst_mode_wide = gst_mode; + gst_mode_wide.mode = bmdModeNTSC_W; + gst_mode_wide.par_n = 40; + gst_mode_wide.par_d = 33; + s_wide = gst_structure_copy (s); + gst_structure_set (s_wide, + "pixel-aspect-ratio", GST_TYPE_FRACTION, 40, 33, NULL); + break; case bmdModeNTSC2398: + gst_mode_wide = gst_mode; + gst_mode_wide.mode = bmdModeNTSC2398_W; + gst_mode_wide.par_n = 40; + gst_mode_wide.par_d = 33; + s_wide = gst_structure_copy (s); + gst_structure_set (s_wide, + "pixel-aspect-ratio", GST_TYPE_FRACTION, 40, 33, NULL); + break; case bmdModeNTSCp: gst_mode_wide = gst_mode; + gst_mode_wide.mode = bmdModeNTSCp_W; gst_mode_wide.par_n = 40; gst_mode_wide.par_d = 33; s_wide = gst_structure_copy (s); @@ -1064,8 +1081,17 @@ gst_decklink2_build_template_caps (GstObject * io_object, "pixel-aspect-ratio", GST_TYPE_FRACTION, 40, 33, NULL); break; case bmdModePAL: + gst_mode_wide = gst_mode; + gst_mode_wide.mode = bmdModePAL_W; + gst_mode_wide.par_n = 16; + gst_mode_wide.par_d = 11; + s_wide = gst_structure_copy (s); + gst_structure_set (s_wide, + "pixel-aspect-ratio", GST_TYPE_FRACTION, 16, 11, NULL); + break; case bmdModePALp: gst_mode_wide = gst_mode; + gst_mode_wide.mode = bmdModePALp_W; gst_mode_wide.par_n = 16; gst_mode_wide.par_d = 11; s_wide = gst_structure_copy (s);