decklinkvideosrc: add support for duplex mode configuration
@florent.thiery
Submitted by Florent Thiery Link to original bug (#771734)
Description
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 ...