summaryrefslogtreecommitdiff
path: root/libavfilter/internal.h
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2012-11-27 07:49:45 +0100
committerAnton Khirnov <anton@khirnov.net>2012-11-28 08:50:19 +0100
commit565e4993c63f797e2d50ad2f1e8f62fdbe299666 (patch)
treebae5282b2ee875de4b01467f3cfaab54b0ab6ec0 /libavfilter/internal.h
parentbb6c67bb36b136de10256f0999128df4a42f9ffc (diff)
lavfi: merge start_frame/draw_slice/end_frame
Any alleged performance benefits gained from the split are purely mythological and do not justify added code complexity.
Diffstat (limited to 'libavfilter/internal.h')
-rw-r--r--libavfilter/internal.h54
1 files changed, 17 insertions, 37 deletions
diff --git a/libavfilter/internal.h b/libavfilter/internal.h
index 6f868ae89f..216a3554fc 100644
--- a/libavfilter/internal.h
+++ b/libavfilter/internal.h
@@ -64,18 +64,6 @@ struct AVFilterPad {
int rej_perms;
/**
- * Callback called before passing the first slice of a new frame. If
- * NULL, the filter layer will default to storing a reference to the
- * picture inside the link structure.
- *
- * Input video pads only.
- *
- * @return >= 0 on success, a negative AVERROR on error. picref will be
- * unreferenced by the caller in case of error.
- */
- void (*start_frame)(AVFilterLink *link, AVFilterBufferRef *picref);
-
- /**
* Callback function to get a video buffer. If NULL, the filter system will
* use avfilter_default_get_video_buffer().
*
@@ -93,37 +81,16 @@ struct AVFilterPad {
int nb_samples);
/**
- * Callback called after the slices of a frame are completely sent. If
- * NULL, the filter layer will default to releasing the reference stored
- * in the link structure during start_frame().
+ * Filtering callback. This is where a filter receives a frame with
+ * audio/video data and should do its processing.
*
- * Input video pads only.
- *
- * @return >= 0 on success, a negative AVERROR on error.
- */
- int (*end_frame)(AVFilterLink *link);
-
- /**
- * Slice drawing callback. This is where a filter receives video data
- * and should do its processing.
- *
- * Input video pads only.
- *
- * @return >= 0 on success, a negative AVERROR on error.
- */
- int (*draw_slice)(AVFilterLink *link, int y, int height, int slice_dir);
-
- /**
- * Samples filtering callback. This is where a filter receives audio data
- * and should do its processing.
- *
- * Input audio pads only.
+ * Input pads only.
*
* @return >= 0 on success, a negative AVERROR on error. This function
* must ensure that samplesref is properly unreferenced on error if it
* hasn't been passed on to another filter.
*/
- int (*filter_samples)(AVFilterLink *link, AVFilterBufferRef *samplesref);
+ int (*filter_frame)(AVFilterLink *link, AVFilterBufferRef *frame);
/**
* Frame poll callback. This returns the number of immediately available
@@ -237,4 +204,17 @@ int ff_poll_frame(AVFilterLink *link);
*/
int ff_request_frame(AVFilterLink *link);
+/**
+ * Send a frame of data to the next filter.
+ *
+ * @param link the output link over which the data is being sent
+ * @param frame a reference to the buffer of data being sent. The
+ * receiving filter will free this reference when it no longer
+ * needs it or pass it on to the next filter.
+ *
+ * @return >= 0 on success, a negative AVERROR on error. The receiving filter
+ * is responsible for unreferencing frame in case of error.
+ */
+int ff_filter_frame(AVFilterLink *link, AVFilterBufferRef *frame);
+
#endif /* AVFILTER_INTERNAL_H */