mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-01-12 04:02:19 +01:00
44 lines
1.7 KiB
Diff
44 lines
1.7 KiB
Diff
From 4fa1d3e7910c3fbe3aacbe5ae5233d0067569c02 Mon Sep 17 00:00:00 2001
|
|
From: Richard Acayan <mailingradian@gmail.com>
|
|
Date: Tue, 25 Jul 2023 17:38:39 -0400
|
|
Subject: [PATCH] avcodec/v4l2_context: suppress POLLERR and fix crash when
|
|
buffers are uninitialized
|
|
|
|
A POLLERR occurs when libavcodec attempts to dequeue output buffers
|
|
before enqueuing capture buffers. This could happen to an application
|
|
deciding to send the first coded packet. Suppress these POLLERRs when
|
|
the buffers are uninitialized and avoid crashing because of enumerating
|
|
uninitialized buffers.
|
|
|
|
See https://trac.ffmpeg.org/ticket/9957 for the original bug report.
|
|
|
|
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
|
|
Signed-off-by: Marton Balint <cus@passwd.hu>
|
|
---
|
|
libavcodec/v4l2_context.c | 8 ++++++--
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c
|
|
index a40be94690..f20f713e1d 100644
|
|
--- a/libavcodec/v4l2_context.c
|
|
+++ b/libavcodec/v4l2_context.c
|
|
@@ -325,9 +325,13 @@ start:
|
|
|
|
/* 0. handle errors */
|
|
if (pfd.revents & POLLERR) {
|
|
- /* if we are trying to get free buffers but none have been queued yet
|
|
- no need to raise a warning */
|
|
+ /* if we are trying to get free buffers but none have been queued yet,
|
|
+ * or if no buffers have been allocated yet, no need to raise a warning
|
|
+ */
|
|
if (timeout == 0) {
|
|
+ if (!ctx->buffers)
|
|
+ return NULL;
|
|
+
|
|
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);
|
|
--
|
|
2.30.2
|
|
|