decklinkvideosrc: Video freezes when switch input video mode.
Hi,
I am using Blackmagic decklink card to capture video from camera into v4l2 device and use Qt camera and videowidget to display live video.
I am using following pipeline code.
gst-launch-1.0 decklinkvideosrc device-number=0 mode=auto drop-no-signal-frames=true ! deinterlace ! videoscale ! video/x-raw,width=960,height=540 ! videorate max-rate=30 ! videoconvert ! tee ! v4l2sink device=/dev/video0 sync=false
It works fine but when i switch output video mode in camera (ie 50p to 50i ) the video freezes for a variable time and then restart.
The time duration of video freeze is same time duration if calculate from start till mode switch.
for eg:-
if switch mode after 10 minute from start, the video freezes for 10 minute.
if switch mode after 20 minute from start, the video freezes for 20 minute.
I think the issue is with gst clock synchronization. It shows following debug messages during freeze:-
:00:36.413496149 8567 0x7fc4e4009e00 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:634:gst_decklink_video_src_update_time_mapping: New time mapping causes difference of 0:00:09.859546400 0:00:36.413515392 8567 0x7fc4e4009e00 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:636:gst_decklink_video_src_update_time_mapping: Maximum allowed per frame 0:00:00.001668333 0:00:36.413539206 8567 0x7fc4e4009e00 DEBUG decklink gstdecklink.cpp:934:VideoInputFrameArrived: Received no audio packet at 0:00:35.952360722 0:00:36.413591782 8567 0x557fdd53ec50 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:1046:gst_decklink_video_src_create: Outputting buffer 0x557fdd8f4aa0 with timestamp 0:00:01.301300000 and duration 0:00:00.033366666 0:00:36.446824157 8567 0x7fc4e4009e00 DEBUG decklink gstdecklink.cpp:916:VideoInputFrameArrived: Failed to get timecode: 0x00000001 0:00:36.446863826 8567 0x7fc4e4009e00 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:634:gst_decklink_video_src_update_time_mapping: New time mapping causes difference of 0:00:09.844520587 0:00:36.446882001 8567 0x7fc4e4009e00 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:636:gst_decklink_video_src_update_time_mapping: Maximum allowed per frame 0:00:00.001668333 0:00:36.446906130 8567 0x7fc4e4009e00 DEBUG decklink gstdecklink.cpp:934:VideoInputFrameArrived: Received no audio packet at 0:00:35.985727437 0:00:36.446957850 8567 0x557fdd53ec50 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:1046:gst_decklink_video_src_create: Outputting buffer 0x557fdd8f4bb0 with timestamp 0:00:01.334666666 and duration 0:00:00.033366666 0:00:36.480160023 8567 0x7fc4e4009e00 DEBUG decklink gstdecklink.cpp:916:VideoInputFrameArrived: Failed to get timecode: 0x00000001 0:00:36.480200415 8567 0x7fc4e4009e00 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:634:gst_decklink_video_src_update_time_mapping: New time mapping causes difference of 0:00:09.829494774 0:00:36.480218902 8567 0x7fc4e4009e00 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:636:gst_decklink_video_src_update_time_mapping: Maximum allowed per frame 0:00:00.001668333 0:00:36.480243565 8567 0x7fc4e4009e00 DEBUG decklink gstdecklink.cpp:934:VideoInputFrameArrived: Received no audio packet at 0:00:36.019062782 0:00:36.480298276 8567 0x557fdd53ec50 DEBUG decklinkvideosrc gstdecklinkvideosrc.cpp:1046:gst_decklink_video_src_create: Outputting buffer 0x557fdd8f4660 with timestamp 0:00:01.368033333 and duration 0:00:00.033366666