diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-11-27 07:49:45 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-11-28 08:50:19 +0100 |
commit | 565e4993c63f797e2d50ad2f1e8f62fdbe299666 (patch) | |
tree | bae5282b2ee875de4b01467f3cfaab54b0ab6ec0 /libavfilter/internal.h | |
parent | bb6c67bb36b136de10256f0999128df4a42f9ffc (diff) | |
download | ffmpeg-565e4993c63f797e2d50ad2f1e8f62fdbe299666.tar.gz |
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.h | 54 |
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 */ |