History

avdevice/decklink: add support for setting duplex mode

This patch also makes BlackMagic drivers v10.6.1 a hard requirement.

Marton Balint committed 10 years ago

Commit 8f9fa491 parent e22760a7 files · +48 −1Browse files

Showing the changes to libavdevice/decklink_common.cpp (1 of 7 files). Show all

Unified · Split

libavdevice/decklink_common.cpp+33−0
@@ -111,6 +111,23 @@ int ff_decklink_set_format(AVFormatContext *avctx, · 110 unmodified lines
111 int i = 1;111 int i = 1;
112 HRESULT res;112 HRESULT res;
113 113
114 if (ctx->duplex_mode) {
115 bool duplex_supported = false;
116
117 if (ctx->attr->GetFlag(BMDDeckLinkSupportsDuplexModeConfiguration, &duplex_supported) != S_OK)
118 duplex_supported = false;
119
120 if (duplex_supported) {
121 res = ctx->cfg->SetInt(bmdDeckLinkConfigDuplexMode, ctx->duplex_mode == 2 ? bmdDuplexModeFull : bmdDuplexModeHalf);
122 if (res != S_OK)
123 av_log(avctx, AV_LOG_WARNING, "Setting duplex mode failed.\n");
124 else
125 av_log(avctx, AV_LOG_VERBOSE, "Succesfully set duplex mode to %s duplex.\n", ctx->duplex_mode == 2 ? "full" : "half");
126 } else {
127 av_log(avctx, AV_LOG_WARNING, "Unable to set duplex mode, because it is not supported.\n");
128 }
129 }
130
114 if (direction == DIRECTION_IN) {131 if (direction == DIRECTION_IN) {
115 res = ctx->dli->GetDisplayModeIterator (&itermode);132 res = ctx->dli->GetDisplayModeIterator (&itermode);
116 } else {133 } else {
@@ -249,6 +266,10 @@ void ff_decklink_cleanup(AVFormatContext *avctx) · 132 unmodified lines
249 ctx->dli->Release();266 ctx->dli->Release();
250 if (ctx->dlo)267 if (ctx->dlo)
251 ctx->dlo->Release();268 ctx->dlo->Release();
269 if (ctx->attr)
270 ctx->attr->Release();
271 if (ctx->cfg)
272 ctx->cfg->Release();
252 if (ctx->dl)273 if (ctx->dl)
253 ctx->dl->Release();274 ctx->dl->Release();
254}275}
@@ -279,5 +300,17 @@ int ff_decklink_init_device(AVFormatContext *avctx, const char* name) · 24 unmodified lines
279 if (!ctx->dl)300 if (!ctx->dl)
280 return AVERROR(ENXIO);301 return AVERROR(ENXIO);
281 302
303 if (ctx->dl->QueryInterface(IID_IDeckLinkConfiguration, (void **)&ctx->cfg) != S_OK) {
304 av_log(avctx, AV_LOG_ERROR, "Could not get configuration interface for '%s'\n", name);
305 ff_decklink_cleanup(avctx);
306 return AVERROR_EXTERNAL;
307 }
308
309 if (ctx->dl->QueryInterface(IID_IDeckLinkAttributes, (void **)&ctx->attr) != S_OK) {
310 av_log(avctx, AV_LOG_ERROR, "Could not get attributes interface for '%s'\n", name);
311 ff_decklink_cleanup(avctx);
312 return AVERROR_EXTERNAL;
313 }
314
282 return 0;315 return 0;
283}316}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t