summaryrefslogtreecommitdiff
path: root/libavfilter/buffersrc.h
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2013-03-10 13:33:18 +0100
committerNicolas George <nicolas.george@normalesup.org>2013-03-10 13:56:17 +0100
commitb0012de420f20d5731b90af1f2a3e7093f2195d9 (patch)
tree2b3fed590dfd42581082e71ccae2c597e5e5d4c3 /libavfilter/buffersrc.h
parentcb2bd91413af28ca9a0202e9b92ee7c1e3d9dd2e (diff)
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.h25
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