[MPlayer-users] MPlayer hangs after playing video from webcam (pwc)

Andrea mariofutire at googlemail.com
Mon Jul 7 22:26:02 CEST 2008


Andrea wrote:
> Hi,
> 
> I'm trying to play video from my webcam Logitech QuickCam 4000 Pro USB.
> MPlayer is the latest svn (27205), and the kernel driver (PWC) comes from 2.6.25.10.
> 
> This is the command line
> 
> mplayer -tv width=640:height=480:driver=v4l2 -fps 15 tv://

corrected in

mplayer -tv width=640:height=480:driver=v4l2:fps=15 tv://

> 
> When I stop the player with Q, mplayer hangs and I have to press Crtl-C to stop it.
> No messages are written to the screen.
> The same happened a while ago, and I think the "culprit" is this code in stream/tvi_v4l2.c (around 
> line 1132, in funtion "uninit"):
> 
>          /* unqueue all remaining buffers */
>          memset(&buf,0,sizeof(buf));
>          buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
>          buf.memory = V4L2_MEMORY_MMAP;
>          while (!ioctl(priv->video_fd, VIDIOC_DQBUF, &buf));
> 
> The ioctl call VIDIOC_DQBUF never returns (it is called only once).
> Reading the document
> http://www.linuxtv.org/downloads/video4linux/API/V4L2_API/spec/r8849.htmation

Sorry I meant

http://www.linuxtv.org/downloads/video4linux/API/V4L2_API/spec/r8849.htm

> 
> VIDIOC_DQBUF should block if there are no buffers to unqueue, unless the device is opened with 
> O_NONBLOCK.
> 
> Here the device is NOT opened with O_NONBLOCK (function "init", same file, line 1198), so it blocks.
> 
> I cannot figure out how
> 
>          while (!ioctl(priv->video_fd, VIDIOC_DQBUF, &buf));
> 
> is supposed to work.
> When all buffer have been unqueued, the call will eventually block.
> 
> I am trying to understand if the problem is in mplayer or pwc, and I'd like to understand how 
> mplayer is using the v4l2 call.
> 
> Thanks
> 
> Andrea




More information about the MPlayer-users mailing list