Ticket #2370 (open defect)

Opened 3 months ago

Last modified 2 weeks ago

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:1 Changed 3 months ago by cehoyos

Which change in FFmpeg introduced the regression?

comment:2 Changed 3 months ago by ubitux

514216d8a928cf80980ca8dc5daea46e9d41cad9 is the first bad commit.

comment:3 Changed 3 months ago by cehoyos

  • Status changed from new to open

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.

comment:6 Changed 2 weeks ago by ubitux

Any news from this or it should be ignored?

Note: See TracTickets for help on using tickets.