ffmpeg | branch: master | Marton Balint <c...@passwd.hu> | Wed May  1 12:47:43 
2019 +0200| [15b8f36be17c45f17b662090ee2039c93eff9635] | committer: Marton 
Balint

avdevice/decklink: fix checking video mode in SDK version 11

Apparently in the new SDK one cannot query if VANC output is supported, so we
will fall back to non-VANC output if enabling the video output with VANC fails.

Fixes ticket #7867.

Signed-off-by: Marton Balint <c...@passwd.hu>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=15b8f36be17c45f17b662090ee2039c93eff9635
---

 libavdevice/decklink_common.cpp | 16 +++++-----------
 libavdevice/decklink_enc.cpp    |  7 +++++--
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/libavdevice/decklink_common.cpp b/libavdevice/decklink_common.cpp
index c3a1d5588c..659aa9be3f 100644
--- a/libavdevice/decklink_common.cpp
+++ b/libavdevice/decklink_common.cpp
@@ -273,21 +273,15 @@ int ff_decklink_set_format(AVFormatContext *avctx,
 #if BLACKMAGIC_DECKLINK_API_VERSION >= 0x0b000000
     if (direction == DIRECTION_IN) {
         if (ctx->dli->DoesSupportVideoMode(ctx->video_input, ctx->bmd_mode, 
(BMDPixelFormat) cctx->raw_format,
-                                           bmdVideoInputFlagDefault,
+                                           bmdSupportedVideoModeDefault,
                                            &support) != S_OK)
             return -1;
     } else {
         BMDDisplayMode actualMode = ctx->bmd_mode;
-        if (!ctx->supports_vanc || 
ctx->dlo->DoesSupportVideoMode(bmdVideoConnectionUnspecified, ctx->bmd_mode, 
ctx->raw_format,
-                                                                  
bmdVideoOutputVANC,
-                                                                  &actualMode, 
&support) != S_OK || !support || ctx->bmd_mode != actualMode) {
-            /* Try without VANC enabled */
-            if (ctx->dlo->DoesSupportVideoMode(bmdVideoConnectionUnspecified, 
ctx->bmd_mode, ctx->raw_format,
-                                               bmdVideoOutputFlagDefault,
-                                               &actualMode, &support) != S_OK 
|| !support || ctx->bmd_mode != actualMode) {
-                return -1;
-            }
-            ctx->supports_vanc = 0;
+        if (ctx->dlo->DoesSupportVideoMode(bmdVideoConnectionUnspecified, 
ctx->bmd_mode, ctx->raw_format,
+                                           bmdSupportedVideoModeDefault,
+                                           &actualMode, &support) != S_OK || 
!support || ctx->bmd_mode != actualMode) {
+            return -1;
         }
 
     }
diff --git a/libavdevice/decklink_enc.cpp b/libavdevice/decklink_enc.cpp
index 8b621d0054..04b06aee3a 100644
--- a/libavdevice/decklink_enc.cpp
+++ b/libavdevice/decklink_enc.cpp
@@ -197,8 +197,11 @@ static int decklink_setup_video(AVFormatContext *avctx, 
AVStream *st)
                " Check available formats with -list_formats 1.\n");
         return -1;
     }
-    if (ctx->dlo->EnableVideoOutput(ctx->bmd_mode,
-                                    ctx->supports_vanc ? bmdVideoOutputVANC : 
bmdVideoOutputFlagDefault) != S_OK) {
+    if (ctx->supports_vanc && ctx->dlo->EnableVideoOutput(ctx->bmd_mode, 
bmdVideoOutputVANC) != S_OK) {
+        av_log(avctx, AV_LOG_WARNING, "Could not enable video output with 
VANC! Trying without...\n");
+        ctx->supports_vanc = 0;
+    }
+    if (!ctx->supports_vanc && ctx->dlo->EnableVideoOutput(ctx->bmd_mode, 
bmdVideoOutputFlagDefault) != S_OK) {
         av_log(avctx, AV_LOG_ERROR, "Could not enable video output!\n");
         return -1;
     }

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to