43 #define OFFSET(x) offsetof(InterleaveContext, x) 45 #define DEFINE_OPTIONS(filt_name, flags_) \ 46 static const AVOption filt_name##_options[] = { \ 47 { "nb_inputs", "set number of inputs", OFFSET(nb_inputs), AV_OPT_TYPE_INT, {.i64 = 2}, 1, INT_MAX, .flags = flags_ }, \ 48 { "n", "set number of inputs", OFFSET(nb_inputs), AV_OPT_TYPE_INT, {.i64 = 2}, 1, INT_MAX, .flags = flags_ }, \ 56 int64_t q_pts,
pts = INT64_MAX;
57 int i, nb_eofs = 0, input_idx = -1;
79 "NOPTS value for input frame cannot be accepted, frame discarded\n");
140 switch (outpad->
type) {
171 outlink->
w = inlink0->
w;
172 outlink->
h = inlink0->
h;
179 if (outlink->
w != inlink->
w ||
180 outlink->
h != inlink->
h ||
184 "(size %dx%d, SAR %d:%d) do not match the corresponding " 185 "output link parameters (%dx%d, SAR %d:%d)\n",
189 outlink->
w, outlink->
h,
199 #if CONFIG_INTERLEAVE_FILTER 214 .
name =
"interleave",
221 .priv_class = &interleave_class,
227 #if CONFIG_AINTERLEAVE_FILTER 242 .
name =
"ainterleave",
248 .
outputs = ainterleave_outputs,
249 .priv_class = &ainterleave_class,
int ff_inlink_consume_frame(AVFilterLink *link, AVFrame **rframe)
Take a frame from the link's FIFO and update the link's stats.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
This structure describes decoded (raw) audio or video data.
static int activate(AVFilterContext *ctx)
#define AV_LOG_WARNING
Something somehow does not look correct.
#define FF_FILTER_FORWARD_STATUS_BACK_ALL(outlink, filter)
Forward the status on an output link to all input links.
Main libavfilter public API header.
int h
agreed upon image height
#define AVFILTER_FLAG_DYNAMIC_INPUTS
The number of the filter inputs is not determined just by AVFilter.inputs.
#define AV_OPT_FLAG_AUDIO_PARAM
AVFrame * ff_null_get_video_buffer(AVFilterLink *link, int w, int h)
AVFilter ff_af_ainterleave
#define FFERROR_NOT_READY
Filters implementation helper functions.
enum AVMediaType type
AVFilterPad type.
static int config_output(AVFilterLink *outlink)
static void ff_outlink_set_status(AVFilterLink *link, int status, int64_t pts)
Set the status field of a link from the source filter.
void ff_inlink_request_frame(AVFilterLink *link)
Mark that a frame is wanted on the link.
static int ff_outlink_frame_wanted(AVFilterLink *link)
Test if a frame is wanted on an output link.
const char * name
Pad name.
AVFilterLink ** inputs
array of pointers to input links
#define av_assert0(cond)
assert() equivalent, that is always enabled.
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
AVFilter ff_vf_interleave
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
#define AVERROR_EOF
End of file.
#define DEFINE_OPTIONS(filt_name, flags_)
A filter pad used for either input or output.
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)
Rescale a 64-bit integer by 2 rational numbers.
A link between two filters.
AVFilterPad * input_pads
array of input pads
#define i(width, name, range_min, range_max)
#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.
#define AV_OPT_FLAG_FILTERING_PARAM
a generic parameter which can be set by the user for filtering
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
#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
AVRational time_base
Define the time base used by the PTS of the frames/samples which will pass through this link...
simple assert() macros that are a bit more flexible than ISO C assert().
int w
agreed upon image width
char * av_asprintf(const char *fmt,...)
AVFrame *(* get_video_buffer)(AVFilterLink *link, int w, int h)
Callback function to get a video buffer.
unsigned nb_inputs
number of input pads
static av_cold void uninit(AVFilterContext *ctx)
static av_cold int init(AVFilterContext *ctx)
AVFilterContext * src
source filter
AVFrame * ff_null_get_audio_buffer(AVFilterLink *link, int nb_samples)
get_audio_buffer() handler for filters which simply pass audio along
AVFrame * ff_inlink_peek_frame(AVFilterLink *link, size_t idx)
Access a frame in the link fifo without consuming it.
static const AVFilterPad outputs[]
int format
agreed upon media format
#define AV_TIME_BASE_Q
Internal time base represented as fractional value.
#define AV_OPT_FLAG_VIDEO_PARAM
static av_always_inline void RENAME() interleave(TYPE *dst, TYPE *src0, TYPE *src1, int w2, int add, int shift)
AVFrame *(* get_audio_buffer)(AVFilterLink *link, int nb_samples)
Callback function to get an audio buffer.
Describe the class of an AVClass context structure.
int ff_outlink_get_status(AVFilterLink *link)
Get the status on an output link.
Rational number (pair of numerator and denominator).
const char * name
Filter name.
AVRational sample_aspect_ratio
agreed upon sample aspect ratio
size_t ff_inlink_queued_frames(AVFilterLink *link)
Get the number of frames available on the link.
AVFilterLink ** outputs
array of pointers to output links
#define flags(name, subs,...)
enum AVMediaType type
filter media type
#define AVFILTER_DEFINE_CLASS(fname)
const AVFilterPad * outputs
List of outputs, terminated by a zeroed element.
const AVFilter * filter
the AVFilter of which this is an instance
#define AV_NOPTS_VALUE
Undefined timestamp value.
static int ff_insert_inpad(AVFilterContext *f, unsigned index, AVFilterPad *p)
Insert a new input pad for the filter.