summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>2018-01-09 23:56:43 +0100
committerMark Thompson <sw@jkqxz.net>2018-01-21 00:37:35 +0000
commit0b9b7f0b46a80b848b19ebbb624cc7dc06bd33b7 (patch)
tree72971c5dcb680293b66f6370ebe2ee2741c2ec83
parent5d5de3eba4c7890c2e8077f5b4ae569671d11cf8 (diff)
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@linaro.org>
-rw-r--r--libavcodec/v4l2_context.c12
1 files changed, 11 insertions, 1 deletions
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;
}