From 319cfdeef6affacb40fc693cb3a3c4e33db7bd34 Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Tue, 6 May 2025 11:00:23 +0200 Subject: [PATCH] decklink: deprecate PsF in/out options Since now the options can be specified generically by FourCC 'cfpr' (capture) and 'pfpr' (display), there is no need to have this explicitly. Also it doesn't seem to be much useful (at least with the PsF stream from XDCAM, the stream is detected to be interlaced, not progressive, even though decklink reports BMDDeckLinkSupportsAutoSwitchingPPsFOnInput=yes). --- src/video_capture/decklink.cpp | 7 +++---- src/video_display/decklink.cpp | 5 ++++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/video_capture/decklink.cpp b/src/video_capture/decklink.cpp index 991d2459e..66ae46eaf 100644 --- a/src/video_capture/decklink.cpp +++ b/src/video_capture/decklink.cpp @@ -573,10 +573,6 @@ decklink_help(bool full, const char *query_prop_fcc = nullptr) col() << "\tIncoming signal should be treated as progressive even if detected as interlaced (PsF).\n"; col() << "\n"; - col() << SBOLD("Use1080PsF[=true|false]") << "\n"; - col() << "\tIncoming signal should be treated as PsF instead of progressive.\n"; - col() << "\n"; - col() << SBOLD("nosig-send") << "\n"; col() << "\tSend video even if no signal was detected (useful when video interrupts\n" "\tbut the video stream needs to be preserved, eg. to keep sync with audio).\n"; @@ -602,6 +598,8 @@ decklink_help(bool full, const char *query_prop_fcc = nullptr) col() << SBOLD("\taacl[=no]") << "\tset analog audio levels to maximum gain " "(consumer audio level)\n"; + col() << SBOLD("\tcfpr[=no]") + << "\tincoming signal should be treated as PsF instead of progressive\n"; col() << "\n"; } else { col() << "(other options available, use \"" << SBOLD("fullhelp") << "\" to see complete list of options)\n\n"; @@ -771,6 +769,7 @@ static bool parse_option(struct vidcap_decklink_state *s, const char *opt) } else if (strcasecmp(opt, "p_not_i") == 0) { s->p_not_i = true; } else if (strstr(opt, "Use1080PsF") != nullptr) { + MSG(WARNING, "Use1080PsF deprecated, use 'cfpr[=no] instead\n"); s->device_options[bmdDeckLinkConfigCapture1080pAsPsF].set_flag(strchr(opt, '=') == nullptr || strcasecmp(strchr(opt, '='), "false") != 0); } else if (strncasecmp(opt, "passthrough", 4) == 0 || strncasecmp(opt, "nopassthrough", 6) == 0) { diff --git a/src/video_display/decklink.cpp b/src/video_display/decklink.cpp index 26ceee5aa..b4a29246c 100644 --- a/src/video_display/decklink.cpp +++ b/src/video_display/decklink.cpp @@ -584,6 +584,8 @@ show_help(bool full, const char *query_prop_fcc = nullptr) << "\tset maximum analog audio attenuation (consumer line level)\n"; col() << SBOLD("\t\tvoio=blac|lafa") << "\tdisplay either black or last frame when idle\n"; + col() << SBOLD("\t\tpfpr[=no]") + << "\tuse of PsF on output instead of progressive (no for the opposite)\n"; if (!full) { col() << SBOLD("\tconversion") << "\toutput size conversion, use '-d decklink:fullhelp' for list of conversions\n"; @@ -616,7 +618,6 @@ show_help(bool full, const char *query_prop_fcc = nullptr) SBOLD("\t\tup1i") << " - simultaneous output of SD and up-converted pollarbox 1080i\n"; col() << SBOLD("\tHDMI3DPacking") << " can be (used in conjunction with \"3D\" option):\n" << SBOLD("\t\tSideBySideHalf, LineByLine, TopAndBottom, FramePacking, LeftOnly, RightOnly\n"); - col() << SBOLD("\tUse1080PsF[=true|false|keep]") << " flag sets use of PsF on output instead of progressive (default is false)\n"; col() << SBOLD("\tprofile=

") << "\tuse desired device profile:\n"; print_bmd_device_profiles("\t\t"); col() << SBOLD("\tconnection=") << " set output video connection (usually unneeded)\n"; @@ -1283,6 +1284,8 @@ static bool settings_init(struct state_decklink *s, const char *fmt, } else if (IS_KEY_PREFIX(ptr, "conversion")) { s->device_options[bmdDeckLinkConfigVideoOutputConversionMode].parse(strchr(ptr, '=') + 1); } else if (is_prefix_of(ptr, "Use1080pNotPsF") || is_prefix_of(ptr, "Use1080PsF")) { + MSG(WARNING, "Use1080pNotPsF/Use1080PsF deprecated, " + "use 'pfpr[=no] instead\n"); s->device_options[bmdDeckLinkConfigOutput1080pAsPsF].parse(strchr(ptr, '=') + 1); if (strncasecmp(ptr, "Use1080pNotPsF", strlen("Use1080pNotPsF")) == 0) { // compat, inverse s->device_options[bmdDeckLinkConfigOutput1080pAsPsF].set_flag(s->device_options[bmdDeckLinkConfigOutput1080pAsPsF].get_flag());