[FFmpeg-cvslog] avdevice/decklink: fix checking video mode in SDK version 11
Marton Balint
git at videolan.org
Sun May 5 21:20:54 EEST 2019
ffmpeg | branch: master | Marton Balint <cus at 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 <cus at 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;
}
More information about the ffmpeg-cvslog
mailing list