diff options
Diffstat (limited to 'ffmpeg-decklink-sdk-11.patch')
-rw-r--r-- | ffmpeg-decklink-sdk-11.patch | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/ffmpeg-decklink-sdk-11.patch b/ffmpeg-decklink-sdk-11.patch deleted file mode 100644 index dd655235d6b3..000000000000 --- a/ffmpeg-decklink-sdk-11.patch +++ /dev/null @@ -1,128 +0,0 @@ -diff -Naurp a/libavdevice/decklink_common.cpp b/libavdevice/decklink_common.cpp ---- a/libavdevice/decklink_common.cpp 2019-04-01 11:16:31.000000000 +0000 -+++ b/libavdevice/decklink_common.cpp 2019-04-19 19:12:28.000000000 +0000 -@@ -81,9 +81,9 @@ static int decklink_get_attr_string(IDec - { - DECKLINK_STR tmp; - HRESULT hr; -- IDeckLinkAttributes *attr; -+ IDeckLinkProfileAttributes *attr; - *s = NULL; -- if (dl->QueryInterface(IID_IDeckLinkAttributes, (void **)&attr) != S_OK) -+ if (dl->QueryInterface(IID_IDeckLinkProfileAttributes, (void **)&attr) != S_OK) - return AVERROR_EXTERNAL; - hr = attr->GetString(cfg_id, &tmp); - attr->Release(); -@@ -149,11 +149,28 @@ int ff_decklink_set_configs(AVFormatCont - if (ctx->duplex_mode) { - DECKLINK_BOOL duplex_supported = false; - -+#if BLACKMAGIC_DECKLINK_API_VERSION >= 0x0b000000 -+ IDeckLinkProfileManager *manager = NULL; -+ if (ctx->dl->QueryInterface(IID_IDeckLinkProfileManager, (void **)&manager) == S_OK) -+ duplex_supported = true; -+#else - if (ctx->attr->GetFlag(BMDDeckLinkSupportsDuplexModeConfiguration, &duplex_supported) != S_OK) - duplex_supported = false; -+#endif - - if (duplex_supported) { -+#if BLACKMAGIC_DECKLINK_API_VERSION >= 0x0b000000 -+ IDeckLinkProfile *profile = NULL; -+ BMDProfileID bmd_profile_id = ctx->duplex_mode == 2 ? bmdProfileOneSubDeviceFullDuplex : bmdProfileTwoSubDevicesHalfDuplex; -+ res = manager->GetProfile(bmd_profile_id, &profile); -+ if (res == S_OK) { -+ res = profile->SetActive(); -+ profile->Release(); -+ } -+ manager->Release(); -+#else - res = ctx->cfg->SetInt(bmdDeckLinkConfigDuplexMode, ctx->duplex_mode == 2 ? bmdDuplexModeFull : bmdDuplexModeHalf); -+#endif - if (res != S_OK) - av_log(avctx, AV_LOG_WARNING, "Setting duplex mode failed.\n"); - else -@@ -182,7 +199,11 @@ int ff_decklink_set_format(AVFormatConte - { - struct decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data; - struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx; -+#if BLACKMAGIC_DECKLINK_API_VERSION >= 0x0b000000 -+ DECKLINK_BOOL support; -+#else - BMDDisplayModeSupport support; -+#endif - IDeckLinkDisplayModeIterator *itermode; - IDeckLinkDisplayMode *mode; - int i = 1; -@@ -243,6 +264,31 @@ int ff_decklink_set_format(AVFormatConte - - if (ctx->bmd_mode == bmdModeUnknown) - return -1; -+ -+#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, -+ &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 (support) -+ return 0; -+#else - if (direction == DIRECTION_IN) { - if (ctx->dli->DoesSupportVideoMode(ctx->bmd_mode, (BMDPixelFormat) cctx->raw_format, - bmdVideoOutputFlagDefault, -@@ -264,6 +310,7 @@ int ff_decklink_set_format(AVFormatConte - } - if (support == bmdDisplayModeSupported) - return 0; -+#endif - - return -1; - } -@@ -468,7 +515,7 @@ int ff_decklink_init_device(AVFormatCont - return AVERROR_EXTERNAL; - } - -- if (ctx->dl->QueryInterface(IID_IDeckLinkAttributes, (void **)&ctx->attr) != S_OK) { -+ if (ctx->dl->QueryInterface(IID_IDeckLinkProfileAttributes, (void **)&ctx->attr) != S_OK) { - av_log(avctx, AV_LOG_ERROR, "Could not get attributes interface for '%s'\n", name); - ff_decklink_cleanup(avctx); - return AVERROR_EXTERNAL; -diff -Naurp a/libavdevice/decklink_common.h b/libavdevice/decklink_common.h ---- a/libavdevice/decklink_common.h 2019-04-01 11:16:31.000000000 +0000 -+++ b/libavdevice/decklink_common.h 2019-04-19 19:12:28.000000000 +0000 -@@ -24,6 +24,10 @@ - #define AVDEVICE_DECKLINK_COMMON_H - - #include <DeckLinkAPIVersion.h> -+#if BLACKMAGIC_DECKLINK_API_VERSION < 0x0b000000 -+#define IID_IDeckLinkProfileAttributes IID_IDeckLinkAttributes -+#define IDeckLinkProfileAttributes IDeckLinkAttributes -+#endif - - #include "libavutil/thread.h" - #include "decklink_common_c.h" -@@ -87,7 +91,7 @@ struct decklink_ctx { - IDeckLinkOutput *dlo; - IDeckLinkInput *dli; - IDeckLinkConfiguration *cfg; -- IDeckLinkAttributes *attr; -+ IDeckLinkProfileAttributes *attr; - decklink_output_callback *output_callback; - - /* DeckLink mode information */ |