From e11110dee40837b766921855221968e1541230d3 Mon Sep 17 00:00:00 2001 From: Nicolas George Date: Thu, 19 Apr 2012 17:08:27 +0200 Subject: [PATCH] buffersink: add AV_BUFFERSINK_FLAG_NO_REQUEST. --- libavfilter/buffersink.h | 7 +++++++ libavfilter/sink_buffer.c | 2 ++ libavfilter/version.h | 4 ++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/libavfilter/buffersink.h b/libavfilter/buffersink.h index 73926a4539..cf6bd69612 100644 --- a/libavfilter/buffersink.h +++ b/libavfilter/buffersink.h @@ -63,6 +63,13 @@ AVABufferSinkParams *av_abuffersink_params_alloc(void); */ #define AV_BUFFERSINK_FLAG_PEEK 1 +/** + * Tell av_buffersink_get_buffer_ref() not to request a frame fom its input. + * If a frame is already buffered, it is read (and removed from the buffer), + * but if no frame is present, return AVERROR(EAGAIN). + */ +#define AV_BUFFERSINK_FLAG_NO_REQUEST 2 + /** * Get an audio/video buffer data from buffer_sink and put it in bufref. * diff --git a/libavfilter/sink_buffer.c b/libavfilter/sink_buffer.c index 8eb695e167..b0cc519217 100644 --- a/libavfilter/sink_buffer.c +++ b/libavfilter/sink_buffer.c @@ -126,6 +126,8 @@ int av_buffersink_get_buffer_ref(AVFilterContext *ctx, /* no picref available, fetch it from the filterchain */ if (!av_fifo_size(buf->fifo)) { + if (flags & AV_BUFFERSINK_FLAG_NO_REQUEST) + return AVERROR(EAGAIN); if ((ret = avfilter_request_frame(inlink)) < 0) return ret; } diff --git a/libavfilter/version.h b/libavfilter/version.h index 361155fe33..0f7ea501e6 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -29,8 +29,8 @@ #include "libavutil/avutil.h" #define LIBAVFILTER_VERSION_MAJOR 2 -#define LIBAVFILTER_VERSION_MINOR 71 -#define LIBAVFILTER_VERSION_MICRO 102 +#define LIBAVFILTER_VERSION_MINOR 72 +#define LIBAVFILTER_VERSION_MICRO 100 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ LIBAVFILTER_VERSION_MINOR, \