diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2013-03-10 13:33:18 +0100 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2013-03-10 13:56:17 +0100 |
commit | b0012de420f20d5731b90af1f2a3e7093f2195d9 (patch) | |
tree | 2b3fed590dfd42581082e71ccae2c597e5e5d4c3 /libavfilter/buffersrc.h | |
parent | cb2bd91413af28ca9a0202e9b92ee7c1e3d9dd2e (diff) | |
download | ffmpeg-b0012de420f20d5731b90af1f2a3e7093f2195d9.tar.gz |
lavfi/buffersrc: implement flags.
The PUSH flags is necessary for efficient scheduling;
otherwise there is no feedback when adding frames to
closed paths.
The NO_CHECK_FORMAT is a small optimization that does
not cost much to implement.
The KEEP_REF flag maps to the add/write distinction in
the fork's API.
Diffstat (limited to 'libavfilter/buffersrc.h')
-rw-r--r-- | libavfilter/buffersrc.h | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/libavfilter/buffersrc.h b/libavfilter/buffersrc.h index 3b9fd5282c..66361b3dab 100644 --- a/libavfilter/buffersrc.h +++ b/libavfilter/buffersrc.h @@ -35,16 +35,25 @@ enum { */ AV_BUFFERSRC_FLAG_NO_CHECK_FORMAT = 1, +#if FF_API_AVFILTERBUFFER /** - * Do not copy buffer data. + * Ignored */ AV_BUFFERSRC_FLAG_NO_COPY = 2, +#endif /** * Immediately push the frame to the output. */ AV_BUFFERSRC_FLAG_PUSH = 4, + /** + * Keep a reference to the frame. + * If the frame if reference-counted, create a new reference; otherwise + * copy the frame data. + */ + AV_BUFFERSRC_FLAG_KEEP_REF = 8, + }; /** @@ -91,6 +100,9 @@ int av_buffersrc_buffer(AVFilterContext *s, AVFilterBufferRef *buf); * copied. * * @return 0 on success, a negative AVERROR on error + * + * This function is equivalent to av_buffersrc_add_frame_flags() with the + * AV_BUFFERSRC_FLAG_KEEP_REF flag. */ int av_buffersrc_write_frame(AVFilterContext *s, const AVFrame *frame); @@ -108,11 +120,20 @@ int av_buffersrc_write_frame(AVFilterContext *s, const AVFrame *frame); * @note the difference between this function and av_buffersrc_write_frame() is * that av_buffersrc_write_frame() creates a new reference to the input frame, * while this function takes ownership of the reference passed to it. + * + * This function is equivalent to av_buffersrc_add_frame_flags() without the + * AV_BUFFERSRC_FLAG_KEEP_REF flag. */ int av_buffersrc_add_frame(AVFilterContext *ctx, AVFrame *frame); /** - * Add frame data to buffer_src. XXX + * Add a frame to the buffer source. + * + * By default, if the frame is reference-counted, this function will take + * ownership of the reference(s) and reset the frame. This can be controled + * using the flags. + * + * If this function returns an error, the input frame is not touched. * * @param buffer_src pointer to a buffer source context * @param frame a frame, or NULL to mark EOF |