68 #define CHECK_VIDEO_PARAM_CHANGE(s, c, width, height, format)\ 69 if (c->w != width || c->h != height || c->pix_fmt != format) {\ 70 av_log(s, AV_LOG_ERROR, "Changing frame properties on the fly is not supported.\n");\ 71 return AVERROR(EINVAL);\ 74 #define CHECK_AUDIO_PARAM_CHANGE(s, c, srate, ch_layout, format)\ 75 if (c->sample_fmt != format || c->sample_rate != srate ||\ 76 c->channel_layout != ch_layout) {\ 77 av_log(s, AV_LOG_ERROR, "Changing frame properties on the fly is not supported.\n");\ 78 return AVERROR(EINVAL);\ 105 if (param->
width > 0)
165 refcounted = !!frame->
buf[0];
239 #define OFFSET(x) offsetof(BufferSourceContext, x) 240 #define A AV_OPT_FLAG_AUDIO_PARAM 241 #define V AV_OPT_FLAG_VIDEO_PARAM 247 #if FF_API_OLD_FILTER_OPTS 369 switch (link->
type) {
434 .description =
NULL_IF_CONFIG_SMALL(
"Buffer video frames, and make them accessible to the filterchain."),
436 .priv_class = &buffer_class,
443 .
outputs = avfilter_vsrc_buffer_outputs,
459 .description =
NULL_IF_CONFIG_SMALL(
"Buffer audio frames, and make them accessible to the filterchain."),
461 .priv_class = &abuffer_class,
468 .
outputs = avfilter_asrc_abuffer_outputs,
void av_buffer_unref(AVBufferRef **buf)
Free a given reference and automatically free the buffer if there are no more references to it...
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
This structure describes decoded (raw) audio or video data.
static const AVFilterPad outputs[]
Main libavfilter public API header.
AVBufferRef * buf[AV_NUM_DATA_POINTERS]
AVBuffer references backing the data for this frame.
Memory buffer source API.
int h
agreed upon image height
av_log(ac->avr, AV_LOG_TRACE, "%d samples - audio_convert: %s to %s (%s)\, len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt), use_generic ? ac->func_descr_generic :ac->func_descr)
static enum AVSampleFormat formats[]
static av_cold int init_video(AVFilterContext *ctx)
static const AVFilterPad avfilter_vsrc_buffer_outputs[]
enum AVMediaType type
AVFilterPad type.
void av_frame_move_ref(AVFrame *dst, AVFrame *src)
Move everything contained in src to dst and reset src.
enum AVPixelFormat pix_fmt
static av_cold void uninit(AVFilterContext *ctx)
static const AVClass abuffer_class
AVRational frame_rate
Video only, the frame rate of the input video.
int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int(*func)(void *, void *, int))
Feed data from a user-supplied callback to an AVFifoBuffer.
int got_format_from_params
const char * name
Pad name.
AVRational sample_aspect_ratio
Video only, the sample (pixel) aspect ratio.
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
#define CHECK_AUDIO_PARAM_CHANGE(s, c, srate, ch_layout, format)
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values.
AVRational time_base
The timebase to be used for the timestamps on the input frames.
static int poll_frame(AVFilterLink *link)
int av_frame_ref(AVFrame *dst, const AVFrame *src)
Set up a new reference to the data described by the source frame.
static double av_q2d(AVRational a)
Convert rational to double.
#define AVERROR_EOF
End of file.
#define AV_LOG_VERBOSE
Detailed information.
int sample_rate
Audio only, the audio sampling rate in samples per secon.
void av_fifo_free(AVFifoBuffer *f)
Free an AVFifoBuffer.
static const AVFilterPad avfilter_asrc_abuffer_outputs[]
static void copy(LZOContext *c, int cnt)
Copies bytes from input to output buffer with checking.
A filter pad used for either input or output.
A link between two filters.
int width
width and height of the video frame
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
AVRational frame_rate
Frame rate of the stream on the link, or 1/0 if unknown or variable; if left to 0/0, will be automatically copied from the first input of the source filter if it exists.
int sample_rate
samples per second
uint64_t channel_layout
Audio only, the audio channel layout.
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
static int request_frame(AVFilterLink *link)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
void * priv
private data for use by the filter
int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void(*func)(void *, void *, int))
Feed data from an AVFifoBuffer to a user-supplied callback.
AVRational time_base
Define the time base used by the PTS of the frames/samples which will pass through this link...
AVRational time_base
time_base to set in the output link
int format
video: the pixel format, value corresponds to enum AVPixelFormat audio: the sample format...
AVRational frame_rate
frame_rate to set in the output link
reference-counted frame API
static const AVOption video_options[]
uint64_t channel_layout
Channel layout of the audio data.
int w
agreed upon image width
common internal API header
audio channel layout utility functions
This structure contains the parameters describing the frames that will be passed to this filter...
AVBufferRef * hw_frames_ctx
For hwaccel pixel formats, this should be a reference to the AVHWFramesContext describing the frames...
AVFilterContext * src
source filter
static av_cold int init_audio(AVFilterContext *ctx)
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
#define attribute_align_arg
AVBufferRef * hw_frames_ctx
Video with a hwaccel pixel format only.
int av_fifo_space(AVFifoBuffer *f)
Return the amount of space in bytes in the AVFifoBuffer, that is the amount of data you can write int...
int attribute_align_arg av_buffersrc_write_frame(AVFilterContext *ctx, const AVFrame *frame)
Add a frame to the buffer source.
AVSampleFormat
Audio Sample Formats.
int av_fifo_realloc2(AVFifoBuffer *f, unsigned int new_size)
Resize an AVFifoBuffer.
static const AVClass buffer_class
a very simple circular buffer FIFO implementation
#define AVERROR_BUG
Bug detected, please report the issue.
Describe the class of an AVClass context structure.
int sample_rate
Sample rate of the audio data.
static const AVFilterPad inputs[]
rational number numerator/denominator
static int config_props(AVFilterLink *link)
enum AVSampleFormat av_get_sample_fmt(const char *name)
Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE on error.
const char * name
Filter name.
AVRational sample_aspect_ratio
agreed upon sample aspect ratio
AVFilterLink ** outputs
array of pointers to output links
int attribute_align_arg av_buffersrc_add_frame(AVFilterContext *ctx, AVFrame *frame)
Add a frame to the buffer source.
enum AVMediaType type
filter media type
static const AVOption audio_options[]
AVBufferRef * hw_frames_ctx
A reference to a data buffer.
int av_fifo_size(AVFifoBuffer *f)
Return the amount of data in bytes in the AVFifoBuffer, that is the amount of data you can read from ...
common internal and external API header
int av_buffersrc_parameters_set(AVFilterContext *ctx, AVBufferSrcParameters *param)
Initialize the buffersrc or abuffersrc filter with the provided parameters.
AVBufferRef * av_buffer_ref(AVBufferRef *buf)
Create a new reference to an AVBuffer.
uint64_t channel_layout
channel layout of current buffer (see libavutil/channel_layout.h)
static av_cold int init(AVCodecParserContext *s)
AVFifoBuffer * av_fifo_alloc(unsigned int size)
Initialize an AVFifoBuffer.
enum AVSampleFormat sample_fmt
static int query_formats(AVFilterContext *ctx)
uint64_t av_get_channel_layout(const char *name)
Return a channel layout id that matches name, or 0 if no match is found.
AVBufferSrcParameters * av_buffersrc_parameters_alloc(void)
Allocate a new AVBufferSrcParameters instance.
const AVFilterPad * outputs
List of outputs, terminated by a zeroed element.
int width
Video only, the display dimensions of the input frames.
enum AVPixelFormat av_get_pix_fmt(const char *name)
Return the pixel format corresponding to name.
const char * av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
Return the short name for a pixel format, NULL in case pix_fmt is unknown.
AVPixelFormat
Pixel format.
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
const AVFilter * filter
the AVFilter of which this is an instance
#define CHECK_VIDEO_PARAM_CHANGE(s, c, width, height, format)
char * channel_layout_str