diff options
author | Marton Balint <cus@passwd.hu> | 2019-05-01 12:47:43 +0200 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2019-05-05 20:07:35 +0200 |
commit | 15b8f36be17c45f17b662090ee2039c93eff9635 (patch) | |
tree | de4eb8c609b0271e95f2ef1212d0ff37a37a8eb2 | |
parent | 73f234fdf8d096ba2ab2cfd548b316937bf706b6 (diff) | |
download | ffmpeg-streaming-15b8f36be17c45f17b662090ee2039c93eff9635.zip ffmpeg-streaming-15b8f36be17c45f17b662090ee2039c93eff9635.tar.gz |
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 <cus@passwd.hu>
-rw-r--r-- | libavdevice/decklink_common.cpp | 16 | ||||
-rw-r--r-- | 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 c3a1d55..659aa9b 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 8b621d0..04b06ae 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; } |