Opened 10 years ago
Last modified 10 years ago
#4407 new defect
Blackmagic/video signal to v4l2 loopback device has hickups
Reported by: | Cas Adriani | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | undetermined |
Version: | git-master | Keywords: | v4l2, v4l2loopback, decklink |
Cc: | thecas@gmail.com | Blocked By: | |
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug:
I try to use a v4l2 loopback device for playback my Blackmagic Decklink card but the video stalls multiple times per second.
When I playback a video to the device ffmpeg -re -i bbb_sunflower_1080p_30fps_normal.mp4 -f v4l2 /dev/video0
it looks fine. Also when I record my bmd device to a video file ffmpeg -f decklink -i DeckLink\ SDI\ \(1\)@8 output.mkv
I get a great result. But the combination BMD->V4l2loopback seems lagging.
I tried to play with -rtbufsize, -vsync, bmdtools and piping through the matroska container but none seem the solution.
How to reproduce:
$ ffmpeg -v 9 -loglevel 99 -f decklink -i DeckLink\ SDI\ \(1\)@8 -f v4l2 /dev/video0 ffmpeg version N-71087-g589a604 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --enable-libxcb --enable-libxcb-shm --disable-libxcb-xfixes --disable-libxcb-shape --enable-decklink --enable-gpl --enable-libx264 --extra-cflags='-I /home/pluxbox/blackmagic/sdk/Linux/include' --extra-libs=-ldl libavutil 54. 20.101 / 54. 20.101 libavcodec 56. 30.100 / 56. 30.100 libavformat 56. 26.101 / 56. 26.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 13.101 / 5. 13.101 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Splitting the commandline. Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'. Reading option '-f' ... matched as option 'f' (force format) with argument 'decklink'. Reading option '-i' ... matched as input file with argument 'DeckLink SDI (1)@8'. Reading option '-f' ... matched as option 'f' (force format) with argument 'v4l2'. Reading option '/dev/video0' ... matched as output file. Finished splitting the commandline. Parsing a group of options: global . Applying option v (set logging level) with argument 9. Successfully parsed a group of options. Parsing a group of options: input file DeckLink SDI (1)@8. Applying option f (force format) with argument decklink. Successfully parsed a group of options. Opening an input file: DeckLink SDI (1)@8. [decklink @ 0x2b1d140] Found Decklink mode 1920 x 1080 with rate 30.00 [decklink @ 0x2b1d140] Frame received (#1) - No input signal detected - Frames dropped 1 [decklink @ 0x2b1d140] All info found Guessed Channel Layout for Input Stream #0.0 : stereo Input #0, decklink, from 'DeckLink SDI (1)@8': Duration: N/A, start: 0.000000, bitrate: 1536 kb/s Stream #0:0, 1, 1/1000000: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s Stream #0:1, 1, 1/1000000: Video: rawvideo, 1 reference frame (UYVY / 0x59565955), uyvy422, 1920x1080, 1/30, -5 kb/s, 30 tbr, 1000k tbn, 30 tbc Successfully opened the file. Parsing a group of options: output file /dev/video0. Applying option f (force format) with argument v4l2. Successfully parsed a group of options. Opening an output file: /dev/video0. Successfully opened the file. detected 4 logical cores [graph 0 input from stream 0:1 @ 0x2b08420] Setting 'video_size' to value '1920x1080' [graph 0 input from stream 0:1 @ 0x2b08420] Setting 'pix_fmt' to value '17' [graph 0 input from stream 0:1 @ 0x2b08420] Setting 'time_base' to value '1/1000000' [graph 0 input from stream 0:1 @ 0x2b08420] Setting 'pixel_aspect' to value '0/1' [graph 0 input from stream 0:1 @ 0x2b08420] Setting 'sws_param' to value 'flags=2' [graph 0 input from stream 0:1 @ 0x2b08420] Setting 'frame_rate' to value '30000/1000' [graph 0 input from stream 0:1 @ 0x2b08420] w:1920 h:1080 pixfmt:uyvy422 tb:1/1000000 fr:30000/1000 sar:0/1 sws_param:flags=2 [AVFilterGraph @ 0x2b128c0] query_formats: 3 queried, 2 merged, 0 already done, 0 delayed Output #0, v4l2, to '/dev/video0': Metadata: encoder : Lavf56.26.101 Stream #0:0, 0, 1/30: Video: rawvideo, 1 reference frame (UYVY / 0x59565955), uyvy422, 1920x1080, 1/30, q=2-31, 200 kb/s, 30 fps, 30 tbn, 30 tbc Metadata: encoder : Lavc56.30.100 rawvideo Stream mapping: Stream #0:1 -> #0:0 (rawvideo (native) -> rawvideo (native)) Press [q] to stop, [?] for help Cliping frame in rate conversion by 0.000008 [decklink @ 0x2b1d140] Frame received (#2) - Input returned - Frames dropped 2 *** 16 dup! Cliping frame in rate conversion by 0.0000230:00.60 bitrate=N/A dup=16 drop=0 Last message repeated 3 times Cliping frame in rate conversion by 0.0000230:01.03 bitrate=N/A dup=16 drop=0 Last message repeated 2 times [decklink @ 0x2b1d140] Frame received (#25) - Valid (4147200B) - QSize 0.006203MB Cliping frame in rate conversion by 0.0000230:01.33 bitrate=N/A dup=16 drop=0 Last message repeated 4 times Cliping frame in rate conversion by 0.0000230:01.86 bitrate=N/A dup=16 drop=0 [decklink @ 0x2b1d140] Frame received (#50) - Valid (4147200B) - QSize 23.774483MB Cliping frame in rate conversion by 0.000023 Last message repeated 4 times Cliping frame in rate conversion by 0.0000230:02.43 bitrate=N/A dup=16 drop=0 Last message repeated 4 times [decklink @ 0x2b1d140] Frame received (#75) - Valid (4147200B) - QSize 3.967583MB Cliping frame in rate conversion by 0.0000230:02.96 bitrate=N/A dup=16 drop=0 Last message repeated 5 times Cliping frame in rate conversion by 0.0000230:03.50 bitrate=N/A dup=16 drop=0 [decklink @ 0x2b1d140] Frame received (#100) - Valid (4147200B) - QSize 23.774483MB Cliping frame in rate conversion by 0.000023 Last message repeated 3 times Cliping frame in rate conversion by 0.0000230:04.06 bitrate=N/A dup=16 drop=0 Last message repeated 5 times [decklink @ 0x2b1d140] Frame received (#125) - Valid (4147200B) - QSize 7.922760MB Cliping frame in rate conversion by 0.000023 Last message repeated 4 times Cliping frame in rate conversion by 0.0000230:05.16 bitrate=N/A dup=16 drop=0 Last message repeated 1 times [decklink @ 0x2b1d140] Frame received (#150) - Valid (4147200B) - QSize 23.774483MB Cliping frame in rate conversion by 0.000023 Last message repeated 3 times Cliping frame in rate conversion by 0.0000230:05.70 bitrate=N/A dup=16 drop=0 Last message repeated 4 times [decklink @ 0x2b1d140] Frame received (#175) - Valid (4147200B) - QSize 7.928963MB Cliping frame in rate conversion by 0.000023 Last message repeated 5 times Cliping frame in rate conversion by 0.0000230:06.80 bitrate=N/A dup=16 drop=0 [decklink @ 0x2b1d140] Frame received (#200) - Valid (4147200B) - QSize 27.735863MB Cliping frame in rate conversion by 0.000023 Last message repeated 3 times Cliping frame in rate conversion by 0.0000230:07.33 bitrate=N/A dup=16 drop=0 Last message repeated 4 times Cliping frame in rate conversion by 0.0000230:07.86 bitrate=N/A dup=16 drop=0 [decklink @ 0x2b1d140] Frame received (#225) - Valid (4147200B) - QSize 11.890343MB Cliping frame in rate conversion by 0.000023 Last message repeated 4 times Cliping frame in rate conversion by 0.0000230:08.43 bitrate=N/A dup=16 drop=0 Last message repeated 1 times [decklink @ 0x2b1d140] Frame received (#250) - Valid (4147200B) - QSize 27.735863MB Cliping frame in rate conversion by 0.000023 Last message repeated 2 times Cliping frame in rate conversion by 0.0000230:08.96 bitrate=N/A dup=16 drop=0 Last message repeated 5 times frame= 286 fps= 29 q=0.0 Lsize=N/A time=00:00:09.53 bitrate=N/A dup=16 drop=0 video:1158300kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown Input file #0 (DeckLink SDI (1)@8): Input stream #0:0 (audio): 269 packets read (1721600 bytes); Input stream #0:1 (video): 270 packets read (1119744000 bytes); 270 frames decoded; Total: 539 packets (1121465600 bytes) demuxed Output file #0 (/dev/video0): Output stream #0:0 (video): 286 frames encoded; 286 packets muxed (1186099200 bytes); Total: 286 packets (1186099200 bytes) muxed 270 frames successfully decoded, 0 decoding errors Received signal 2: terminating.
The dub frames seems stable after initialization, the load of the computer is 0.3 and the memory is 90% free.
When I playback my /dev/video0 with mpv mpv tv://
I get the following errors (the seems sync with the frame freeze):
Non-monotonic video pts: 0.000000 <= 0.00000
--no-correct-pts with mpv omits the errors but not solve the problem.
Hopefully someone has some ideas.