summaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorAman Gupta <aman@tmm1.net>2019-08-24 12:02:30 -0700
committerAman Gupta <aman@tmm1.net>2019-09-11 10:31:18 -0700
commitfac834b2ae0b2802f1eca9fd804fbdf6cd34ac33 (patch)
tree4a14161ef323849fab1a6d1e6b3da3507826a9b0 /libavcodec
parent3475758a3791dc89c6e7c406f8b032f035cd7d1e (diff)
downloadffmpeg-streaming-fac834b2ae0b2802f1eca9fd804fbdf6cd34ac33.zip
ffmpeg-streaming-fac834b2ae0b2802f1eca9fd804fbdf6cd34ac33.tar.gz
avcodec/v4l2_context: expose timeout for dequeue_frame
Signed-off-by: Aman Gupta <aman@tmm1.net>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/v4l2_context.c6
-rw-r--r--libavcodec/v4l2_context.h3
-rw-r--r--libavcodec/v4l2_m2m_dec.c2
3 files changed, 6 insertions, 5 deletions
diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c
index 1f1b834..862b382 100644
--- a/libavcodec/v4l2_context.c
+++ b/libavcodec/v4l2_context.c
@@ -582,16 +582,16 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt)
return ff_v4l2_buffer_enqueue(avbuf);
}
-int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame)
+int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* frame, int timeout)
{
V4L2Buffer* avbuf = NULL;
/*
- * blocks until:
+ * timeout=-1 blocks until:
* 1. decoded frame available
* 2. an input buffer is ready to be dequeued
*/
- avbuf = v4l2_dequeue_v4l2buf(ctx, -1);
+ avbuf = v4l2_dequeue_v4l2buf(ctx, timeout);
if (!avbuf) {
if (ctx->done)
return AVERROR_EOF;
diff --git a/libavcodec/v4l2_context.h b/libavcodec/v4l2_context.h
index ee08f3d..1026f5b 100644
--- a/libavcodec/v4l2_context.h
+++ b/libavcodec/v4l2_context.h
@@ -154,9 +154,10 @@ int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt);
* The frame must be non NULL.
* @param[in] ctx The V4L2Context to dequeue from.
* @param[inout] f The AVFrame to dequeue to.
+ * @param[in] timeout The timeout for dequeue (-1 to block, 0 to return immediately, or milliseconds)
* @return 0 in case of success, AVERROR(EAGAIN) if no buffer was ready, another negative error in case of error.
*/
-int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* f);
+int ff_v4l2_context_dequeue_frame(V4L2Context* ctx, AVFrame* f, int timeout);
/**
* Enqueues a buffer to a V4L2Context from an AVPacket
diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c
index a374420..686e130 100644
--- a/libavcodec/v4l2_m2m_dec.c
+++ b/libavcodec/v4l2_m2m_dec.c
@@ -162,7 +162,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame)
dequeue:
av_packet_unref(&avpkt);
- return ff_v4l2_context_dequeue_frame(capture, frame);
+ return ff_v4l2_context_dequeue_frame(capture, frame, -1);
}
static av_cold int v4l2_decode_init(AVCodecContext *avctx)
OpenPOWER on IntegriCloud