diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2012-06-25 00:30:15 +0200 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2012-06-30 14:03:54 +0200 |
commit | 1f5c1333a733a7cba1803c9f9eab86da5f010bd5 (patch) | |
tree | 878a452703b4b0e088266a13edd3cbbcecac2ca2 | |
parent | 0689d5e17ac0a3269c604b4df2c01140be328647 (diff) | |
download | ffmpeg-1f5c1333a733a7cba1803c9f9eab86da5f010bd5.tar.gz |
sink_buffer: implement fixed frame size.
-rw-r--r-- | libavfilter/buffersink.h | 9 | ||||
-rw-r--r-- | libavfilter/sink_buffer.c | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/libavfilter/buffersink.h b/libavfilter/buffersink.h index e9148f7edc..808c0c7aad 100644 --- a/libavfilter/buffersink.h +++ b/libavfilter/buffersink.h @@ -56,6 +56,15 @@ typedef struct { AVABufferSinkParams *av_abuffersink_params_alloc(void); /** + * Set the frame size for an audio buffer sink. + * + * All calls to av_buffersink_get_buffer_ref will return a buffer with + * exactly the specified number of samples, or AVERROR(EAGAIN) if there is + * not enough. The last buffer at EOF will be padded with 0. + */ +void av_buffersink_set_frame_size(AVFilterContext *ctx, unsigned frame_size); + +/** * Tell av_buffersink_get_buffer_ref() to read video/samples buffer * reference, but not remove it from the buffer. This is useful if you * need only to read a video/samples buffer, without to fetch it. diff --git a/libavfilter/sink_buffer.c b/libavfilter/sink_buffer.c index 4db874fdfa..2f3dff84ff 100644 --- a/libavfilter/sink_buffer.c +++ b/libavfilter/sink_buffer.c @@ -125,6 +125,14 @@ static void end_frame(AVFilterLink *inlink) } } +void av_buffersink_set_frame_size(AVFilterContext *ctx, unsigned frame_size) +{ + AVFilterLink *inlink = ctx->inputs[0]; + + inlink->min_samples = inlink->max_samples = + inlink->partial_buf_size = frame_size; +} + int av_buffersink_get_buffer_ref(AVFilterContext *ctx, AVFilterBufferRef **bufref, int flags) { |