[FFmpeg-devel] [PATCH 3/3] lavfi/buffersink: fix header.

Stefano Sabatini stefasab at gmail.com
Sun Mar 17 01:17:16 CET 2013


On date Saturday 2013-03-16 18:01:36 +0100, Nicolas George encoded:
> Move non-obsolete functions, structures and constants outside
> the scope of "#if FF_API_AVFILTERBUFFER".
> 
> Add attribute_deprecated to av_buffersink_get_buffer_ref()
> and av_buffersink_poll_frame().
> 
> Add doxygen for av_buffersink_get_frame_flags().
> 
> Signed-off-by: Nicolas George <nicolas.george at normalesup.org>
> ---
>  libavfilter/buffersink.h |  147 +++++++++++++++++++++++++---------------------
>  1 file changed, 79 insertions(+), 68 deletions(-)
> 
> diff --git a/libavfilter/buffersink.h b/libavfilter/buffersink.h
> index eca3c23..3b92a14 100644
> --- a/libavfilter/buffersink.h
> +++ b/libavfilter/buffersink.h
> @@ -28,61 +28,6 @@
>  
>  #if FF_API_AVFILTERBUFFER
>  /**
> - * Struct to use for initializing a buffersink context.
> - */
> -typedef struct {
> -    const enum AVPixelFormat *pixel_fmts; ///< list of allowed pixel formats, terminated by AV_PIX_FMT_NONE
> -} AVBufferSinkParams;
> -
> -/**
> - * Create an AVBufferSinkParams structure.
> - *
> - * Must be freed with av_free().
> - */
> -AVBufferSinkParams *av_buffersink_params_alloc(void);
> -
> -/**
> - * Struct to use for initializing an abuffersink context.
> - */
> -typedef struct {
> -    const enum AVSampleFormat *sample_fmts; ///< list of allowed sample formats, terminated by AV_SAMPLE_FMT_NONE
> -    const int64_t *channel_layouts;         ///< list of allowed channel layouts, terminated by -1
> -    const int *channel_counts;              ///< list of allowed channel counts, terminated by -1
> -    int all_channel_counts;                 ///< if not 0, accept any channel count or layout
> -    int *sample_rates;                      ///< list of allowed sample rates, terminated by -1
> -} AVABufferSinkParams;
> -
> -/**
> - * Create an AVABufferSinkParams structure.
> - *
> - * Must be freed with av_free().
> - */
> -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.
> - */
> -#define AV_BUFFERSINK_FLAG_PEEK 1
> -
> -/**
> - * Tell av_buffersink_get_buffer_ref() not to request a frame from its input.
> - * If a frame is already buffered, it is read (and removed from the buffer),
> - * but if no frame is present, return AVERROR(EAGAIN).
> - */
> -#define AV_BUFFERSINK_FLAG_NO_REQUEST 2
> -
> -/**
>   * Get an audio/video buffer data from buffer_sink and put it in bufref.
>   *
>   * This function works with both audio and video buffer sinks.
> @@ -92,28 +37,17 @@ void av_buffersink_set_frame_size(AVFilterContext *ctx, unsigned frame_size);
>   * @return >= 0 in case of success, a negative AVERROR code in case of
>   * failure
>   */
> +attribute_deprecated
>  int av_buffersink_get_buffer_ref(AVFilterContext *buffer_sink,
>                                   AVFilterBufferRef **bufref, int flags);
>  
> -/* TODO */
> -int av_buffersink_get_frame_flags(AVFilterContext *ctx, AVFrame *frame, int flags);
> -
>  /**
>   * Get the number of immediately available frames.
>   */
> +attribute_deprecated
>  int av_buffersink_poll_frame(AVFilterContext *ctx);
>  
>  /**
> - * Get the frame rate of the input.
> - */
> -AVRational av_buffersink_get_frame_rate(AVFilterContext *ctx);
> -
> -/**
> - * @defgroup libav_api Libav API
> - * @{
> - */
> -
> -/**
>   * Get a buffer with filtered data from sink and put it in buf.
>   *
>   * @param ctx pointer to a context of a buffersink or abuffersink AVFilter.
> @@ -152,6 +86,83 @@ int av_buffersink_read_samples(AVFilterContext *ctx, AVFilterBufferRef **buf,
>  /**
>   * Get a frame with filtered data from sink and put it in frame.
>   *
> + * @param ctx    pointer to a buffersink or abuffersink filter context.
> + * @param frame  pointer to an allocated frame that will be filled with data.
> + *               The data must be freed using av_frame_unref() / av_frame_free()
> + * @param flags  a combination of AV_BUFFERSINK_FLAG_* flags
> + *
> + * @return  >= 0 in for success, a negative AVERROR code for failure.
> + */
> +int av_buffersink_get_frame_flags(AVFilterContext *ctx, AVFrame *frame, int flags);
> +
> +/**
> + * 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.
> + */
> +#define AV_BUFFERSINK_FLAG_PEEK 1
> +
> +/**
> + * Tell av_buffersink_get_buffer_ref() not to request a frame from its input.
> + * If a frame is already buffered, it is read (and removed from the buffer),
> + * but if no frame is present, return AVERROR(EAGAIN).
> + */
> +#define AV_BUFFERSINK_FLAG_NO_REQUEST 2
> +
> +/**
> + * Struct to use for initializing a buffersink context.
> + */
> +typedef struct {
> +    const enum AVPixelFormat *pixel_fmts; ///< list of allowed pixel formats, terminated by AV_PIX_FMT_NONE
> +} AVBufferSinkParams;
> +
> +/**
> + * Create an AVBufferSinkParams structure.
> + *
> + * Must be freed with av_free().
> + */
> +AVBufferSinkParams *av_buffersink_params_alloc(void);
> +
> +/**
> + * Struct to use for initializing an abuffersink context.
> + */
> +typedef struct {
> +    const enum AVSampleFormat *sample_fmts; ///< list of allowed sample formats, terminated by AV_SAMPLE_FMT_NONE
> +    const int64_t *channel_layouts;         ///< list of allowed channel layouts, terminated by -1
> +    const int *channel_counts;              ///< list of allowed channel counts, terminated by -1
> +    int all_channel_counts;                 ///< if not 0, accept any channel count or layout
> +    int *sample_rates;                      ///< list of allowed sample rates, terminated by -1
> +} AVABufferSinkParams;
> +
> +/**
> + * Create an AVABufferSinkParams structure.
> + *
> + * Must be freed with av_free().
> + */
> +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);
> +
> +/**
> + * Get the frame rate of the input.
> + */
> +AVRational av_buffersink_get_frame_rate(AVFilterContext *ctx);
> +

> +/**
> + * @defgroup libav_api Libav API
> + * @{
> + */

I consider this utterly pointless, but this is unrelated.

> +
> +/**
> + * Get a frame with filtered data from sink and put it in frame.
> + *
>   * @param ctx pointer to a context of a buffersink or abuffersink AVFilter.
>   * @param frame pointer to an allocated frame that will be filled with data.
>   *              The data must be freed using av_frame_unref() / av_frame_free()

LGTM and thanks.
-- 
FFmpeg = Furious and Friendly MultiPurpose Explosive Gadget


More information about the ffmpeg-devel mailing list