Ticket #2370 (open defect)
v4l2 should not need ENUMSTD
| Reported by: | ubitux | Owned by: | holden |
|---|---|---|---|
| Priority: | normal | Component: | avdevice |
| Version: | git-master | Keywords: | v4l2 regression |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | yes |
Description
Problem: lavd/v4l2.c now requires the device to support VIDIOC_ENUMSTD.
This seems to be a regression according to https://github.com/umlaeute/v4l2loopback/issues/38
Steps to reproduce:
- install v4l2loopback and load the module
git clone git://github.com/umlaeute/v4l2loopback.git cd v4l2loopback make && sudo make install modprobe v4l2loopback
- push some video to the device with for instance:
gst-launch-0.10 videotestsrc ! v4l2sink device=/dev/video0
- try to play the device with FFmpeg
% ./ffplay -v verbose -f v4l2 /dev/video0 ffplay version N-51026-g3313b9c Copyright (c) 2003-2013 the FFmpeg developers built on Mar 17 2013 04:38:52 with gcc 4.7.2 (GCC) configuration: --enable-gpl --enable-version3 --enable-fontconfig --enable-libfreetype --enable-libmp3lame --enable-libvorbis --enable-libxvid --enable-libx264 --enable-libvpx --enable-libtheora --enable-x11grab --enable-libopenjpeg --enable-libass --enable-libmodplug --enable-libv4l2 --cc=colorgcc --samples=/home/ubitux/fate-samples --prefix=/tmp/ffinstall --disable-runtime-cpudetect --enable-libcelt --enable-libopencv --enable-frei0r --enable-libcaca --enable-libiec61883 --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-libopus --enable-libpulse --enable-libspeex --enable-openal --enable-libopencv libavutil 52. 19.101 / 52. 19.101 libavcodec 55. 0.100 / 55. 0.100 libavformat 55. 0.100 / 55. 0.100 libavdevice 55. 0.100 / 55. 0.100 libavfilter 3. 47.102 / 3. 47.102 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 [video4linux2,v4l2 @ 0x7f457c000940] fd:7 capabilities:50000030/0 [video4linux2,v4l2 @ 0x7f457c000940] Querying the device for the current frame size [video4linux2,v4l2 @ 0x7f457c000940] Setting frame size to 320x240 [video4linux2,v4l2 @ 0x7f457c000940] ioctl(VIDIOC_ENUMSTD): Invalid argument /dev/video0: Invalid argument
The device plays fine with for example mplayer, and with older ffplay (1.1.3 is working).
Change History
comment:2 Changed 3 months ago by ubitux
514216d8a928cf80980ca8dc5daea46e9d41cad9 is the first bad commit.
comment:4 Changed 3 months ago by ubitux
Note that while supporting the latest version of v4l2loopback is also important, it seems some workaround recently got pushed in it to handle that issue (see github ticket). To reproduce properly the problem, you need to checkout 5568514931b063eda0aa83976fd9a68cacc53e52 in v4l2loopback repository.
comment:5 Changed 3 months ago by holden
- Analyzed by developer set
- Owner set to holden
- Priority changed from important to normal
The problem has been fixed on v4l2loopback git/master, so now ffmpeg should work again.
I will try to see if we can apply a workaround to allow ffmpeg to work with older versions of v4l2loopback.



Which change in FFmpeg introduced the regression?