buffersrc.c File Reference

memory buffer source filter More...

#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/fifo.h"
#include "libavutil/imgutils.h"
#include "libavutil/opt.h"
#include "libavutil/samplefmt.h"
#include "audio.h"
#include "avfilter.h"
#include "buffersrc.h"
#include "formats.h"
#include "internal.h"
#include "video.h"

Go to the source code of this file.

Data Structures

struct  BufferSourceContext
 

Macros

#define CHECK_VIDEO_PARAM_CHANGE(s, c, width, height, format)
 
#define CHECK_AUDIO_PARAM_CHANGE(s, c, srate, ch_layout, format)
 
#define OFFSET(x)   offsetof(BufferSourceContext, x)
 
#define A   AV_OPT_FLAG_AUDIO_PARAM
 

Functions

int av_buffersrc_write_frame (AVFilterContext *buffer_filter, const AVFrame *frame)
 Add a frame to the buffer source. More...
 
int av_buffersrc_buffer (AVFilterContext *s, AVFilterBufferRef *buf)
 Add a buffer to the filtergraph s. More...
 
static av_cold int init_video (AVFilterContext *ctx, const char *args)
 
static av_cold int init_audio (AVFilterContext *ctx, const char *args)
 
static av_cold void uninit (AVFilterContext *ctx)
 
static int query_formats (AVFilterContext *ctx)
 
static int config_props (AVFilterLink *link)
 
static int request_frame (AVFilterLink *link)
 
static int poll_frame (AVFilterLink *link)
 

Variables

static const AVOption audio_options []
 
static const AVClass abuffer_class
 
static const AVFilterPad avfilter_vsrc_buffer_outputs []
 
AVFilter avfilter_vsrc_buffer
 
static const AVFilterPad avfilter_asrc_abuffer_outputs []
 
AVFilter avfilter_asrc_abuffer
 

Detailed Description

memory buffer source filter

Definition in file buffersrc.c.

Macro Definition Documentation

#define A   AV_OPT_FLAG_AUDIO_PARAM

Definition at line 192 of file buffersrc.c.

#define CHECK_AUDIO_PARAM_CHANGE (   s,
  c,
  srate,
  ch_layout,
  format 
)
Value:
if (c->sample_fmt != format || c->sample_rate != srate ||\
c->channel_layout != ch_layout) {\
av_log(s, AV_LOG_ERROR, "Changing frame properties on the fly is not supported.\n");\
return AVERROR(EINVAL);\
}
void av_log(void *avcl, int level, const char *fmt,...)
Definition: log.c:146
return

Definition at line 65 of file buffersrc.c.

Referenced by av_buffersrc_buffer(), and av_buffersrc_write_frame().

#define CHECK_VIDEO_PARAM_CHANGE (   s,
  c,
  width,
  height,
  format 
)
Value:
if (c->w != width || c->h != height || c->pix_fmt != format) {\
av_log(s, AV_LOG_ERROR, "Changing frame properties on the fly is not supported.\n");\
return AVERROR(EINVAL);\
}
void av_log(void *avcl, int level, const char *fmt,...)
Definition: log.c:146
return
static int width
Definition: utils.c:156
int height
Definition: gxfenc.c:72

Definition at line 59 of file buffersrc.c.

Referenced by av_buffersrc_buffer(), and av_buffersrc_write_frame().

#define OFFSET (   x)    offsetof(BufferSourceContext, x)

Definition at line 191 of file buffersrc.c.

Function Documentation

int av_buffersrc_buffer ( AVFilterContext s,
AVFilterBufferRef buf 
)

Add a buffer to the filtergraph s.

Parameters
bufbuffer containing frame data to be passed down the filtergraph. This function will take ownership of buf, the user must not free it. A NULL buf signals EOF – i.e. no more frames will be sent to this filter.

Definition at line 128 of file buffersrc.c.

Referenced by decode_audio(), decode_video(), and video_thread().

int av_buffersrc_write_frame ( AVFilterContext s,
const AVFrame frame 
)

Add a frame to the buffer source.

Parameters
san instance of the buffersrc filter.
frameframe to be added.
Warning
frame data will be memcpy()ed, which may be a big performance hit. Use av_buffersrc_buffer() to avoid copying the data.

Definition at line 72 of file buffersrc.c.

Referenced by decode_video(), and video_thread().

static int config_props ( AVFilterLink link)
static

Definition at line 295 of file buffersrc.c.

static av_cold int init_audio ( AVFilterContext ctx,
const char *  args 
)
static

Definition at line 208 of file buffersrc.c.

static av_cold int init_video ( AVFilterContext ctx,
const char *  args 
)
static

Definition at line 162 of file buffersrc.c.

static int poll_frame ( AVFilterLink link)
static

Definition at line 335 of file buffersrc.c.

static int query_formats ( AVFilterContext ctx)
static

Definition at line 266 of file buffersrc.c.

static int request_frame ( AVFilterLink link)
static

Definition at line 317 of file buffersrc.c.

static av_cold void uninit ( AVFilterContext ctx)
static

Definition at line 254 of file buffersrc.c.

Variable Documentation

const AVClass abuffer_class
static
Initial value:
= {
.class_name = "abuffer source",
.item_name = av_default_item_name,
.option = audio_options,
}
LIBAVUTIL_VERSION_INT
Definition: eval.c:52
av_default_item_name
Definition: dnxhdenc.c:43
static const AVOption audio_options[]
Definition: buffersrc.c:193

Definition at line 201 of file buffersrc.c.

Referenced by init_audio().

const AVOption audio_options[]
static
Initial value:
= {
{ "time_base", NULL, OFFSET(time_base), AV_OPT_TYPE_RATIONAL, { .dbl = 0 }, 0, INT_MAX, A },
{ "sample_rate", NULL, OFFSET(sample_rate), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, A },
{ "sample_fmt", NULL, OFFSET(sample_fmt_str), AV_OPT_TYPE_STRING, .flags = A },
{ "channel_layout", NULL, OFFSET(channel_layout_str), AV_OPT_TYPE_STRING, .flags = A },
{ NULL },
}
#define OFFSET(x)
Definition: buffersrc.c:191
AVRational time_base
Time base.
Definition: x11grab.c:63
#define A
Definition: buffersrc.c:192
NULL
Definition: eval.c:52

Definition at line 193 of file buffersrc.c.

AVFilter avfilter_asrc_abuffer
Initial value:
= {
.name = "abuffer",
.description = NULL_IF_CONFIG_SMALL("Buffer audio frames, and make them accessible to the filterchain."),
.priv_size = sizeof(BufferSourceContext),
}
static av_cold int init_audio(AVFilterContext *ctx, const char *args)
Definition: buffersrc.c:208
static const AVFilterPad outputs[]
Definition: af_ashowinfo.c:122
static av_cold void uninit(AVFilterContext *ctx)
Definition: buffersrc.c:254
static const AVFilterPad avfilter_asrc_abuffer_outputs[]
Definition: buffersrc.c:368
static int init(AVCodecParserContext *s)
Definition: h264_parser.c:335
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:88
NULL
Definition: eval.c:52
static const AVFilterPad inputs[]
Definition: af_ashowinfo.c:110
static int query_formats(AVFilterContext *ctx)
Definition: buffersrc.c:266

Definition at line 379 of file buffersrc.c.

const AVFilterPad avfilter_asrc_abuffer_outputs[]
static
Initial value:
= {
{
.name = "default",
.request_frame = request_frame,
.poll_frame = poll_frame,
.config_props = config_props,
},
{ NULL }
}
static int poll_frame(AVFilterLink *link)
Definition: buffersrc.c:335
static int request_frame(AVFilterLink *link)
Definition: buffersrc.c:317
NULL
Definition: eval.c:52
static int config_props(AVFilterLink *link)
Definition: buffersrc.c:295

Definition at line 368 of file buffersrc.c.

AVFilter avfilter_vsrc_buffer
Initial value:
= {
.name = "buffer",
.description = NULL_IF_CONFIG_SMALL("Buffer video frames, and make them accessible to the filterchain."),
.priv_size = sizeof(BufferSourceContext),
}
static const AVFilterPad outputs[]
Definition: af_ashowinfo.c:122
static const AVFilterPad avfilter_vsrc_buffer_outputs[]
Definition: buffersrc.c:344
static av_cold int init_video(AVFilterContext *ctx, const char *args)
Definition: buffersrc.c:162
static av_cold void uninit(AVFilterContext *ctx)
Definition: buffersrc.c:254
static int init(AVCodecParserContext *s)
Definition: h264_parser.c:335
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:88
NULL
Definition: eval.c:52
static const AVFilterPad inputs[]
Definition: af_ashowinfo.c:110
static int query_formats(AVFilterContext *ctx)
Definition: buffersrc.c:266

Definition at line 355 of file buffersrc.c.

const AVFilterPad avfilter_vsrc_buffer_outputs[]
static
Initial value:
= {
{
.name = "default",
.request_frame = request_frame,
.poll_frame = poll_frame,
.config_props = config_props,
},
{ NULL }
}
static int poll_frame(AVFilterLink *link)
Definition: buffersrc.c:335
static int request_frame(AVFilterLink *link)
Definition: buffersrc.c:317
NULL
Definition: eval.c:52
static int config_props(AVFilterLink *link)
Definition: buffersrc.c:295

Definition at line 344 of file buffersrc.c.