Commit fac834b2 authored by Aman Gupta's avatar Aman Gupta

avcodec/v4l2_context: expose timeout for dequeue_frame

Signed-off-by: 's avatarAman Gupta <aman@tmm1.net>
parent 3475758a
...@@ -582,16 +582,16 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt) ...@@ -582,16 +582,16 @@ int ff_v4l2_context_enqueue_packet(V4L2Context* ctx, const AVPacket* pkt)
return ff_v4l2_buffer_enqueue(avbuf); 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; V4L2Buffer* avbuf = NULL;
/* /*
* blocks until: * timeout=-1 blocks until:
* 1. decoded frame available * 1. decoded frame available
* 2. an input buffer is ready to be dequeued * 2. an input buffer is ready to be dequeued
*/ */
avbuf = v4l2_dequeue_v4l2buf(ctx, -1); avbuf = v4l2_dequeue_v4l2buf(ctx, timeout);
if (!avbuf) { if (!avbuf) {
if (ctx->done) if (ctx->done)
return AVERROR_EOF; return AVERROR_EOF;
......
...@@ -154,9 +154,10 @@ int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt); ...@@ -154,9 +154,10 @@ int ff_v4l2_context_dequeue_packet(V4L2Context* ctx, AVPacket* pkt);
* The frame must be non NULL. * The frame must be non NULL.
* @param[in] ctx The V4L2Context to dequeue from. * @param[in] ctx The V4L2Context to dequeue from.
* @param[inout] f The AVFrame to dequeue to. * @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. * @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 * Enqueues a buffer to a V4L2Context from an AVPacket
......
...@@ -162,7 +162,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) ...@@ -162,7 +162,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame)
dequeue: dequeue:
av_packet_unref(&avpkt); 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) static av_cold int v4l2_decode_init(AVCodecContext *avctx)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment