mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-04-08 16:54:03 +02:00
avcodec/v4l2_context: expose timeout for dequeue_frame
Signed-off-by: Aman Gupta <aman@tmm1.net>
This commit is contained in:
parent
3475758a37
commit
fac834b2ae
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user