[FFmpeg-devel] [PATCH] V4L2 wait for new frames

Nicolas George nicolas.george at normalesup.org
Wed Aug 10 16:28:33 CEST 2011

Le tridi 23 thermidor, an CCXIX, Samuli Valo a écrit :
> Yes, ioctl returned successfully.
> So this seems to be driver problem.

It looks like it, although some more in depth examination would be required
to be sure. The best cours would probably be to build a minimalistic
stand-alone application exhibiting the problem.

>					At least that poll() patch fixes our
> problem until driver is fixed...

I am not against temporary workarounds, but the final decision is not mine
to take.

> +restart_poll:

I think a loop would be nicer.

> +    p.fd = s->fd;

This does not need to be in the loop (or pseudo-loop), poll does not reset
the structure members.

> +    p.events = POLLIN | POLLERR | POLLHUP;

POLLERR and POLLUP are not valid in the events field, only in the revents

> +    if (poll(&p, 1, -1) < 0) {
> +        if (errno == EAGAIN || errno == EINTR)
> +            goto restart_poll;

If the device has the NONBLOCK flag, EAGAIN should be returned immediately.
Otherwise, you risk to get, for example, ALSA underruns while waiting for a
video frame.

> +        av_log(ctx, AV_LOG_ERROR, "Poll failed: %s\n", strerror(errno));
> +        return AVERROR(EIO);

Why not just return AVERROR(errno) and let the caller log what it wants?


  Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20110810/99fe4055/attachment.asc>

More information about the ffmpeg-devel mailing list