GNOME Bugzilla – Bug 771734
decklinkvideosrc: add support for duplex mode configuration
Last modified: 2018-11-03 13:55:25 UTC
The BlackmagicDesign DeckLink Duo 2 is a 4 input SDI capture card; the decklinksrc works fine for device-number 0 and 1, but crashes with inputs 2 and 3. 0:00:00.092931712 26035 0x1374b20 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:392:gst_decklink_video_src_set_caps:<decklinkvideosrc0> Failed to enable video input ERROR: from element /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0: Internal data stream error. Additional debug info: gstbasesrc.c(2950): gst_base_src_loop (): /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0: streaming stopped, reason not-negotiated (-4) Logs for device-numbers 0 to 4: fthiery@flowmixer:~/gst/master$ GST_DEBUG=decklink*:5 gst-launch-1.0 decklinkvideosrc device-number=0 num-buffers=1 ! xvimagesink 0:00:00.065207266 24536 0x1ec3270 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:743:gst_decklink_video_src_open:<decklinkvideosrc0> Opening Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... 0:00:00.092581616 24536 0x1f8c320 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:323:gst_decklink_video_src_set_caps:<decklinkvideosrc0> Setting caps video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2 0:00:00.092610454 24536 0x1ec3270 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:857:gst_decklink_video_src_start_streams:<decklinkvideosrc0> Not starting streams yet New clock: GstDecklinkInputClock 0:00:00.098118730 24536 0x1f8c320 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:829:gst_decklink_video_src_start_streams:<decklinkvideosrc0> Starting streams 0:00:00.171848827 24536 0x7fa1d0001920 DEBUG decklink gstdecklink.cpp:762:VideoInputFrameArrived:<decklinkvideosrc0> Failed to get timecode: 0x00000001 0:00:00.171884609 24536 0x7fa1d0001920 DEBUG decklink gstdecklink.cpp:819:VideoInputFrameArrived: Received no audio packet at 0:00:00.073325545 0:00:00.171903391 24536 0x1f8c320 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:608:gst_decklink_video_src_create:<decklinkvideosrc0> Mode changed from 0 to 1 0:00:00.171971273 24536 0x1f8c320 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:669:gst_decklink_video_src_create:<decklinkvideosrc0> Outputting buffer 0x1d048d0 with timestamp 0:00:00.073325545 and duration 0:00:00.033366666 Redistribute latency... 0:00:00.205221875 24536 0x7fa1d0001920 DEBUG decklink gstdecklink.cpp:762:VideoInputFrameArrived:<decklinkvideosrc0> Failed to get timecode: 0x00000001 0:00:00.205242046 24536 0x7fa1d0001920 DEBUG decklink gstdecklink.cpp:819:VideoInputFrameArrived: Received no audio packet at 0:00:00.106723532 Got EOS from element "pipeline0". Execution ended after 0:00:00.145754691 Setting pipeline to PAUSED ... 0:00:00.238414463 24536 0x1ec3270 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:940:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams Setting pipeline to READY ... 0:00:00.238726407 24536 0x1ec3270 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:793:gst_decklink_video_src_stop:<decklinkvideosrc0> Stopping Setting pipeline to NULL ... 0:00:00.767056043 24536 0x1ec3270 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:772:gst_decklink_video_src_close:<decklinkvideosrc0> Closing Freeing pipeline ... fthiery@flowmixer:~/gst/master$ GST_DEBUG=decklink*:5 gst-launch-1.0 decklinkvideosrc device-number=1 num-buffers=1 ! xvimagesink Setting pipeline to PAUSED ... 0:00:00.072590969 25359 0xf7c4f0 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:743:gst_decklink_video_src_open:<decklinkvideosrc0> Opening Pipeline is live and does not need PREROLL ... 0:00:00.099498638 25359 0xd87720 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:323:gst_decklink_video_src_set_caps:<decklinkvideosrc0> Setting caps video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2 Setting pipeline to PLAYING ... 0:00:00.099553440 25359 0xf7c4f0 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:857:gst_decklink_video_src_start_streams:<decklinkvideosrc0> Not starting streams yet New clock: GstDecklinkInputClock 0:00:00.104353182 25359 0xd87720 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:829:gst_decklink_video_src_start_streams:<decklinkvideosrc0> Starting streams 0:00:00.160194730 25359 0x7f307c001930 DEBUG decklink gstdecklink.cpp:762:VideoInputFrameArrived:<decklinkvideosrc0> Failed to get timecode: 0x00000001 0:00:00.160225458 25359 0x7f307c001930 DEBUG decklink gstdecklink.cpp:819:VideoInputFrameArrived: Received no audio packet at 0:00:00.055446790 0:00:00.160235209 25359 0x7f307c001930 INFO decklink gstdecklink.cpp:698:VideoInputFormatChanged: Video input format changed 0:00:00.160233132 25359 0xd87720 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:608:gst_decklink_video_src_create:<decklinkvideosrc0> Mode changed from 0 to 1 0:00:00.160306477 25359 0xd87720 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:669:gst_decklink_video_src_create:<decklinkvideosrc0> Outputting buffer 0xd85950 with timestamp 0:00:00.055446790 and duration 0:00:00.033366666 Redistribute latency... 0:00:00.212742935 25359 0x7f307c001930 DEBUG decklink gstdecklink.cpp:762:VideoInputFrameArrived:<decklinkvideosrc0> Failed to get timecode: 0x00000001 0:00:00.212779179 25359 0x7f307c001930 DEBUG decklink gstdecklink.cpp:819:VideoInputFrameArrived: Received no audio packet at 0:00:00.106802837 Got EOS from element "pipeline0". Execution ended after 0:00:00.127178171 Setting pipeline to PAUSED ... 0:00:00.226793399 25359 0xf7c4f0 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:940:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams Setting pipeline to READY ... 0:00:00.227196936 25359 0xf7c4f0 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:793:gst_decklink_video_src_stop:<decklinkvideosrc0> Stopping Setting pipeline to NULL ... 0:00:00.724605715 25359 0xf7c4f0 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:772:gst_decklink_video_src_close:<decklinkvideosrc0> Closing Freeing pipeline ... fthiery@flowmixer:~/gst/master$ GST_DEBUG=decklink*:5 gst-launch-1.0 decklinkvideosrc device-number=2 num-buffers=1 ! xvimagesink Setting pipeline to PAUSED ... 0:00:00.065090192 26035 0x128da70 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:743:gst_decklink_video_src_open:<decklinkvideosrc0> Opening Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... 0:00:00.092652881 26035 0x1374b20 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:323:gst_decklink_video_src_set_caps:<decklinkvideosrc0> Setting caps video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2 0:00:00.092675531 26035 0x128da70 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:857:gst_decklink_video_src_start_streams:<decklinkvideosrc0> Not starting streams yet New clock: GstDecklinkInputClock 0:00:00.092931712 26035 0x1374b20 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:392:gst_decklink_video_src_set_caps:<decklinkvideosrc0> Failed to enable video input ERROR: from element /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0: Internal data stream error. Additional debug info: gstbasesrc.c(2950): gst_base_src_loop (): /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0: streaming stopped, reason not-negotiated (-4) Execution ended after 0:00:00.000305325 Setting pipeline to PAUSED ... 0:00:00.093004626 26035 0x128da70 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:940:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams 0:00:00.093010839 26035 0x128da70 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:948:gst_decklink_video_src_change_state:<decklinkvideosrc0> error: Failed to stop streams: 0x80000009 Setting pipeline to READY ... 0:00:00.093042442 26035 0x128da70 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:940:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams 0:00:00.093048184 26035 0x128da70 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:948:gst_decklink_video_src_change_state:<decklinkvideosrc0> error: Failed to stop streams: 0x80000009 Setting pipeline to NULL ... 0:00:00.093063750 26035 0x128da70 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:940:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams 0:00:00.093067647 26035 0x128da70 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:948:gst_decklink_video_src_change_state:<decklinkvideosrc0> error: Failed to stop streams: 0x80000009 Freeing pipeline ... (gst-launch-1.0:26035): GStreamer-CRITICAL **: Trying to dispose element pipeline0, but it is in PAUSED instead of the NULL state. You need to explicitly set elements to the NULL state before dropping the final reference, to allow them to clean up. This problem may also be caused by a refcounting bug in the application or some element. ^C fthiery@flowmixer:~/gst/master$ GST_DEBUG=decklink*:5 gst-launch-1.0 decklinkvideosrc device-number=3 num-buffers=1 ! xvimagesink Setting pipeline to PAUSED ... 0:00:00.068787281 27493 0x1610980 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:743:gst_decklink_video_src_open:<decklinkvideosrc0> Opening Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... 0:00:00.096260956 27493 0x1610980 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:857:gst_decklink_video_src_start_streams:<decklinkvideosrc0> Not starting streams yet New clock: GstDecklinkInputClock 0:00:00.096281588 27493 0x1744f20 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:323:gst_decklink_video_src_set_caps:<decklinkvideosrc0> Setting caps video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2 0:00:00.096516527 27493 0x1744f20 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:392:gst_decklink_video_src_set_caps:<decklinkvideosrc0> Failed to enable video input ERROR: from element /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0: Internal data stream error. Additional debug info: gstbasesrc.c(2950): gst_base_src_loop (): /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0: streaming stopped, reason not-negotiated (-4) Execution ended after 0:00:00.000299774 Setting pipeline to PAUSED ... 0:00:00.096583029 27493 0x1610980 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:940:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams 0:00:00.096588907 27493 0x1610980 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:948:gst_decklink_video_src_change_state:<decklinkvideosrc0> error: Failed to stop streams: 0x80000009 Setting pipeline to READY ... 0:00:00.096625874 27493 0x1610980 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:940:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams 0:00:00.096632183 27493 0x1610980 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:948:gst_decklink_video_src_change_state:<decklinkvideosrc0> error: Failed to stop streams: 0x80000009 Setting pipeline to NULL ... 0:00:00.096648297 27493 0x1610980 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:940:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams 0:00:00.096652238 27493 0x1610980 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:948:gst_decklink_video_src_change_state:<decklinkvideosrc0> error: Failed to stop streams: 0x80000009 Freeing pipeline ... (gst-launch-1.0:27493): GStreamer-CRITICAL **: Trying to dispose element pipeline0, but it is in PAUSED instead of the NULL state. You need to explicitly set elements to the NULL state before dropping the final reference, to allow them to clean up. This problem may also be caused by a refcounting bug in the application or some element. ^C fthiery@flowmixer:~/gst/master$ GST_DEBUG=decklink*:5 gst-launch-1.0 decklinkvideosrc device-number=4 num-buffers=1 ! xvimagesink Setting pipeline to PAUSED ... 0:00:00.342124277 28802 0x1d47470 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:743:gst_decklink_video_src_open:<decklinkvideosrc0> Opening 0:00:00.369050310 28802 0x1d47470 ERROR decklinkvideosrc gstdecklinkvideosrc.cpp:749:gst_decklink_video_src_open:<decklinkvideosrc0> Failed to acquire input ERROR: Pipeline doesn't want to pause. Setting pipeline to NULL ... Freeing pipeline ...
Kernel: 4.7.4-1-ARCH Blackmagic driver version 10.8a2 dmesg: [ 2.197846] Probe subdriver ffffffffa0598320 (serial): ffff88040d670b40 [ 2.197848] BlackmagicIO: Initialised serial driver for blackmagic!io0 [ 2.197942] BlackmagicIO: Enabled device "DeckLink Duo 2 (3)" x4/5.0 Gbps (38254df2,510101) FW Date: 03-15 08:29 [ 2.199146] BlackmagicIO: DeckLink Duo 2 (3) as blackmagic!io1 [0000:01:00.0] [ 2.199147] Probe subdriver ffffffffa0598320 (serial): ffff88040c9fe540 [ 2.199148] BlackmagicIO: Initialised serial driver for blackmagic!io1 [ 2.199216] BlackmagicIO: Enabled device "DeckLink Duo 2 (2)" x4/5.0 Gbps (38254df1,510102) FW Date: 03-15 08:29 [ 2.199785] BlackmagicIO: DeckLink Duo 2 (2) as blackmagic!io2 [0000:01:00.0] [ 2.199787] Probe subdriver ffffffffa0598320 (serial): ffff880405e00f00 [ 2.199788] BlackmagicIO: Initialised serial driver for blackmagic!io2 [ 2.199854] BlackmagicIO: Enabled device "DeckLink Duo 2 (4)" x4/5.0 Gbps (38254df3,510103) FW Date: 03-15 08:29 [ 2.200464] BlackmagicIO: DeckLink Duo 2 (4) as blackmagic!io3 [0000:01:00.0] [ 2.200465] Probe subdriver ffffffffa0598320 (serial): ffff88040ad42a80 [ 2.200465] BlackmagicIO: Initialised serial driver for blackmagic!io3
Sebastian, i see that the SDK headers have not been updated for quite some time, can i help there ? fthiery@flowmixer:~/gst/master/gst-plugins-bad$ (master) git log ./sys/decklink/linux/DeckLinkAPI.h commit 5d74b4ba425533263889298e3e6eb9096f8c6806 Author: Sebastian Dröge <sebastian@centricular.com> Date: Wed Dec 3 14:39:13 2014 +0100 decklink: Update Linux SDK headers to 10.3.1
Nothing really changed there, and that's not going to be the problem :) Not sure what the problem is though, would have to debug that further (can you upload a full debug log with GST_DEBUG=decklink*:6 ? ) but no time for that currently. It's supposed to work though, I know of people capturing from two cards at once.
Well, for the headers i just thought it could be an issue because the SDK version of the headers is 10.3.1 where my system uses the current vendor version 10.8 Here is the log fthiery@flowmixer:~$ LANG=C GST_DEBUG=decklink*:6 gst-launch-1.0 decklinkvideosrc device-number=3 num-buffers=1 ! fakesink Setting pipeline to PAUSED ... 0:00:00.011882491 4227 0x1a1fd30 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:636:gst_decklink_video_src_open:<decklinkvideosrc0> Opening Pipeline is live and does not need PREROLL ... 0:00:00.037553549 4227 0x1a66000 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:266:gst_decklink_video_src_set_caps:<decklinkvideosrc0> Setting caps video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2 Setting pipeline to PLAYING ... 0:00:00.037586493 4227 0x1a1fd30 LOG decklink gstdecklink.cpp:999:gst_decklink_clock_get_internal_time:<GstDecklinkInputClock> result 0:00:00.000000000 time 99:99:99.999999999 last time 0:00:00.000000000 offset 0:00:00.000000000 start time 99:99:99.999999999 (ret: 0xffffffff) 0:00:00.037628339 4227 0x1a1fd30 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:740:gst_decklink_video_src_start_streams:<decklinkvideosrc0> Not starting streams yet New clock: GstDecklinkInputClock 0:00:00.037769955 4227 0x1a66000 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:335:gst_decklink_video_src_set_caps:<decklinkvideosrc0> Failed to enable video input ERROR: from element /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0: Internal data flow error. Additional debug info: gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0: streaming task paused, reason not-negotiated (-4) Execution ended after 0:00:00.000206096 Setting pipeline to PAUSED ... 0:00:00.037854147 4227 0x1a1fd30 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:810:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams 0:00:00.037860589 4227 0x1a1fd30 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:818:gst_decklink_video_src_change_state:<decklinkvideosrc0> error: Failed to stop streams: 0x80000009 Setting pipeline to READY ... 0:00:00.037925831 4227 0x1a1fd30 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:810:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams 0:00:00.037934531 4227 0x1a1fd30 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:818:gst_decklink_video_src_change_state:<decklinkvideosrc0> error: Failed to stop streams: 0x80000009 Setting pipeline to NULL ... 0:00:00.037956128 4227 0x1a1fd30 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:810:gst_decklink_video_src_change_state:<decklinkvideosrc0> Stopping streams 0:00:00.037960514 4227 0x1a1fd30 WARN decklinkvideosrc gstdecklinkvideosrc.cpp:818:gst_decklink_video_src_change_state:<decklinkvideosrc0> error: Failed to stop streams: 0x80000009 Freeing pipeline ... (gst-launch-1.0:4227): GStreamer-CRITICAL **: Trying to dispose element pipeline0, but it is in PAUSED instead of the NULL state. You need to explicitly set elements to the NULL state before dropping the final reference, to allow them to clean up. This problem may also be caused by a refcounting bug in the application or some element.
I intentionally said that you should *attach* the log :) It's annoying to read in Bugzilla comments. Can you get a new log with this commit: commit f9a8b843df2ef45c2ae196ebb2b8ba2308227d99 Author: Sebastian Dröge <sebastian@centricular.com> Date: Wed Sep 21 09:31:23 2016 -0400 decklink: Print the Decklink API error return values in debug output in all places
Created attachment 335998 [details] log error Generated with GST_DEBUG_COLOR_MODE=off LANG=C GST_DEBUG=decklink*:6 gst-launch-1.0-nocolor decklinkvideosrc device-number=3 num-buffers=1 ! fakesink &> /tmp/error.log
Really sorry for the logs in the ticket, will attach now
Hm, why does not contain the decklink debug category? Can you try with decklin*:6 maybe? I'm interested in what happens during probing here.
Created attachment 336003 [details] error log GST_DEBUG_COLOR_MODE=off LANG=C GST_DEBUG=*deck*:6 gst-launch-1.0-nocolor decklinkvideosrc device-number=3 num-buffers=1 ! fakesink
There's nothing more; i updated and recompiled though (saw your commit passing)...
I was looking for the output here in this function https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/sys/decklink/gstdecklink.cpp#n885 but nothing is printed when it all goes fine. That means all your devices can do input and output I guess. Not sure how to further debug this, we only get "FAILED" as error from the driver. Maybe the mode you selected is not supported, not sure what else could fail until that point.
Actually, just tried to use the vendor software, where the inputs 3 & 4 choices are greyed out... Sorry, i should have tried sooner.
Okay, sorry for all the fuss, in fact the connectors have to be mapped through the vendor software, and apparently by default connectors 1 & 2 are in/out, 3 & 4 in/out, leaving the 2 remaining capture channels unmapped.
Apparently, the latest SDK (10.8) allows configuring the duplex mode using bmdDeckLinkConfigDuplexMode (in this case, trying to use input 3 would require disabling full-duplex mode on inputs 1&2 which are linked); would it sound right to automatically reconfigure the mapping instead of failing like it does today ? Also, is the current behaviour good enough (Internal data stream error) ? Unfortunately the return code #define E_FAIL ((HRESULT)0x80000008L) is completely generic, so it doesn't indicate wheter the channel is just unmapped (a quick helpful error message is not an option then)... AFAIK the full-duplex feature is designed for looping out the input, but also performing hardware-based keying -- is that an actual use-case for gstreamer currently (hence, a reason for not disabling full duplex when trying to open an unmapped channel)? I tried to query if the device supports duplex mode (BMDDeckLinkSupportsDuplexModeConfiguration and getting BMDDeckLinkPairedDevicePersistentID) but it's not in the current headers included in gstdecklink (only in the latest SDK headers). Also, when i query it for BMDDeckLinkSupportsFullDuplex, i always get 0 as return code (on all inputs), so i think that the SDK needs to be updated anyway (the card i'm trying to use is probably more recent than the current SDK release). As a workaroud, users can use the BMD utility to disable full duplex on channels 1 and 2, which enables capture channels 3 and 4, but i still believe it would be good to support this, if you don't mind i would like to reopen this ticket and adjust the title.
If we can do something here, that would be useful. But no magic, it should all be controller via properties. Would you like to provide a patch? (If you do, make updating the SDK headers a separate commit)
Yes i will try to provide a patch. I'll keep in mind to update the SDK headers. Anything shady i should be aware of (some SDK patching required or just copying should suffice) ?
There are 3 different platforms to update, Windows, Linux, OSX. Apart from that nothing I can remember :)
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/425.