FFmpeg
Modules | Files | Macros | Functions
Buffer sink API

Modules

 Buffer sink accessors
 Get the properties of the stream.
 

Files

file  buffersink.h
 

Macros

#define AV_BUFFERSINK_FLAG_PEEK   1
 Tell av_buffersink_get_buffer_ref() to read video/samples buffer reference, but not remove it from the buffer. More...
 
#define AV_BUFFERSINK_FLAG_NO_REQUEST   2
 Tell av_buffersink_get_buffer_ref() not to request a frame from its input. More...
 

Functions

int av_buffersink_get_frame_flags (AVFilterContext *ctx, AVFrame *frame, int flags)
 Get a frame with filtered data from sink and put it in frame. More...
 
void av_buffersink_set_frame_size (AVFilterContext *ctx, unsigned frame_size)
 Set the frame size for an audio buffer sink. More...
 
int av_buffersink_get_frame (AVFilterContext *ctx, AVFrame *frame)
 Get a frame with filtered data from sink and put it in frame. More...
 
int av_buffersink_get_samples (AVFilterContext *ctx, AVFrame *frame, int nb_samples)
 Same as av_buffersink_get_frame(), but with the ability to specify the number of samples read. More...
 

Detailed Description

The buffersink and abuffersink filters are there to connect filter graphs to applications. They have a single input, connected to the graph, and no output. Frames must be extracted using av_buffersink_get_frame() or av_buffersink_get_samples().

The format negotiated by the graph during configuration can be obtained using the accessor functions:

The format can be constrained by setting options, using av_opt_set() and related functions with the AV_OPT_SEARCH_CHILDREN flag.

As a special case, if neither channel_layouts nor channel_counts is set, all valid channel layouts are accepted, but channel counts without a layout are not, unless all_channel_counts is set. Also, channel_layouts must not contain a channel layout already accepted by a value in channel_counts; for example, if channel_counts contains 2, then channel_layouts must not contain stereo.

Macro Definition Documentation

◆ AV_BUFFERSINK_FLAG_PEEK

#define AV_BUFFERSINK_FLAG_PEEK   1

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.

Definition at line 89 of file buffersink.h.

◆ AV_BUFFERSINK_FLAG_NO_REQUEST

#define AV_BUFFERSINK_FLAG_NO_REQUEST   2

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).

Definition at line 96 of file buffersink.h.

Function Documentation

◆ av_buffersink_get_frame_flags()

int av_buffersink_get_frame_flags ( AVFilterContext ctx,
AVFrame frame,
int  flags 
)

Get a frame with filtered data from sink and put it in frame.

Parameters
ctxpointer to a buffersink or abuffersink filter context.
framepointer to an allocated frame that will be filled with data. The data must be freed using av_frame_unref() / av_frame_free()
flagsa combination of AV_BUFFERSINK_FLAG_* flags
Returns
>= 0 in for success, a negative AVERROR code for failure.

Definition at line 140 of file buffersink.c.

Referenced by audio_thread(), av_buffersink_get_frame(), avfilter_graph_request_oldest(), lavfi_read_packet(), main(), reap_filters(), and video_thread().

◆ av_buffersink_set_frame_size()

void av_buffersink_set_frame_size ( AVFilterContext ctx,
unsigned  frame_size 
)

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.

Definition at line 198 of file buffersink.c.

Referenced by configure_filtergraph(), and init_output_stream().

◆ av_buffersink_get_frame()

int av_buffersink_get_frame ( AVFilterContext ctx,
AVFrame frame 
)

Get a frame with filtered data from sink and put it in frame.

Parameters
ctxpointer to a context of a buffersink or abuffersink AVFilter.
framepointer to an allocated frame that will be filled with data. The data must be freed using av_frame_unref() / av_frame_free()
Returns
  • >= 0 if a frame was successfully returned.
  • AVERROR(EAGAIN) if no frames are available at this point; more input frames must be added to the filtergraph to get more output.
  • AVERROR_EOF if there will be no more output frames on this sink.
  • A different negative AVERROR code in other failure cases.

Definition at line 88 of file buffersink.c.

Referenced by filter_encode_write_frame(), and main().

◆ av_buffersink_get_samples()

int av_buffersink_get_samples ( AVFilterContext ctx,
AVFrame frame,
int  nb_samples 
)

Same as av_buffersink_get_frame(), but with the ability to specify the number of samples read.

This function is less efficient than av_buffersink_get_frame(), because it copies the data around.

Parameters
ctxpointer to a context of the abuffersink AVFilter.
framepointer to an allocated frame that will be filled with data. The data must be freed using av_frame_unref() / av_frame_free() frame will contain exactly nb_samples audio samples, except at the end of stream, when it can contain less than nb_samples.
Returns
The return codes have the same meaning as for av_buffersink_get_frame().
Warning
do not mix this function with av_buffersink_get_frame(). Use only one or the other with a single sink, not both.

Definition at line 145 of file buffersink.c.