[FFmpeg-devel] [PATCH 3/3] avcodec: v4l2_m2m: context: fix raising warning on POLLERR
Jorge Ramirez
jorge.ramirez.ortiz at gmail.com
Wed Jan 10 00:08:35 EET 2018
On 01/09/2018 06:06 PM, Jorge Ramirez-Ortiz wrote:
> From: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz at linaro.org>
>
> During the initialization stage, the codec attempts to get free
> buffers from the driver before any have been queued (this is to keep
> the code simple and generic)
>
> When the kernel driver detects this situation, it returns POLLERR in
> revents and ffmpeg therefore raises a warning.
>
> This commit disables the warning since no buffers were queued to the
> driver yet.
>
> Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz at linaro.org>
> ---
> libavcodec/v4l2_context.c | 16 ++++++++++++++--
> 1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c
> index fb482cf..5bacaaf 100644
> --- a/libavcodec/v4l2_context.c
> +++ b/libavcodec/v4l2_context.c
> @@ -258,7 +258,7 @@ static V4L2Buffer* v4l2_dequeue_v4l2buf(V4L2Context *ctx, int timeout)
> .events = POLLIN | POLLRDNORM | POLLPRI | POLLOUT | POLLWRNORM, /* default blocking capture */
> .fd = ctx_to_m2mctx(ctx)->fd,
> };
> - int ret;
> + int i, ret;
>
> if (V4L2_TYPE_IS_OUTPUT(ctx->type))
> pfd.events = POLLOUT | POLLWRNORM;
> @@ -279,7 +279,19 @@ static V4L2Buffer* v4l2_dequeue_v4l2buf(V4L2Context *ctx, int timeout)
>
> /* 0. handle errors */
> if (pfd.revents & POLLERR) {
> - av_log(logger(ctx), AV_LOG_WARNING, "%s POLLERR\n", ctx->name);
> + /* if we are trying to get free buffers but none have been queued yet
> + no need to raise a warning */
sorry about the linux tabs (my editor messed it up, my fault)
will fix.
> + if (timeout == 0 ) {
> + for (i = 0; i < ctx->num_buffers; i++) {
> + if (ctx->buffers[i].status != V4L2BUF_AVAILABLE) {
> + av_log(logger(ctx), AV_LOG_WARNING, "%s POLLERR\n", ctx->name);
> + return NULL;
> + }
> + }
> + }
> + else
> + av_log(logger(ctx), AV_LOG_WARNING, "%s POLLERR\n", ctx->name);
> +
> return NULL;
> }
>
More information about the ffmpeg-devel
mailing list