[FFmpeg-cvslog] avcodec: v4l2_m2m: context: fix raising warning on POLLERR

Jorge Ramirez-Ortiz git at videolan.org
Sun Jan 21 02:37:45 EET 2018


ffmpeg | branch: master | Jorge Ramirez-Ortiz <jorge.ramirez-ortiz at linaro.org> | Tue Jan  9 23:56:43 2018 +0100| [0b9b7f0b46a80b848b19ebbb624cc7dc06bd33b7] | committer: Mark Thompson

avcodec: v4l2_m2m: context: fix raising warning on POLLERR

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>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0b9b7f0b46a80b848b19ebbb624cc7dc06bd33b7
---

 libavcodec/v4l2_context.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c
index dde97d0d1f..e0431b1b3e 100644
--- a/libavcodec/v4l2_context.c
+++ b/libavcodec/v4l2_context.c
@@ -290,7 +290,17 @@ start:
 
     /* 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 */
+        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);
+            }
+        }
+        else
+            av_log(logger(ctx), AV_LOG_WARNING, "%s POLLERR\n", ctx->name);
+
         return NULL;
     }
 



More information about the ffmpeg-cvslog mailing list