@ -27,61 +27,6 @@
# include "avfilter.h"
# 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 .
*
@ -92,27 +37,16 @@ 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 .
*
@ -149,6 +83,78 @@ int av_buffersink_read_samples(AVFilterContext *ctx, AVFilterBufferRef **buf,
int nb_samples ) ;
# endif
/**
* 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 ) ;
/**
* Get a frame with filtered data from sink and put it in frame .
*
@ -177,8 +183,4 @@ int av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame);
*/
int av_buffersink_get_samples ( AVFilterContext * ctx , AVFrame * frame , int nb_samples ) ;
/**
* @ }
*/
# endif /* AVFILTER_BUFFERSINK_H */