Go to the documentation of this file.
34 AVBPrint dummy_buffer;
70 unsigned max_src_name = 0, max_dst_name = 0;
71 unsigned max_in_name = 0, max_out_name = 0;
72 unsigned max_in_fmt = 0, max_out_fmt = 0;
74 unsigned lname = strlen(
filter->name);
75 unsigned ltype = strlen(
filter->filter->name);
77 for (j = 0; j <
filter->nb_inputs; j++) {
80 max_src_name =
FFMAX(max_src_name, ln);
84 for (j = 0; j <
filter->nb_outputs; j++) {
87 max_dst_name =
FFMAX(max_dst_name, ln);
91 in_indent = max_src_name + max_in_name + max_in_fmt;
92 in_indent += in_indent ? 4 : 0;
99 for (j = 0; j <
height; j++) {
101 unsigned out_no = j - (
height -
filter->nb_outputs) / 2;
104 if (in_no < filter->nb_inputs) {
106 e = buf->len + max_src_name + 2;
109 e = buf->len + max_in_fmt + 2 +
120 if (j == (
height - 2) / 2) {
121 x = (
width - lname) / 2;
123 }
else if (j == (
height - 2) / 2 + 1) {
124 x = (
width - ltype - 2) / 2;
126 width - ltype - 2 - x,
"");
133 if (out_no < filter->nb_outputs) {
135 unsigned ln = strlen(l->
dst->
name) + 1 +
137 e = buf->len + max_out_name + 2;
140 e = buf->len + max_out_fmt + 2 +
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
AVFilterPad * dstpad
input pad on the dest filter
static void avfilter_graph_dump_to_buf(AVBPrint *buf, AVFilterGraph *graph)
void(* filter)(uint8_t *src, int stride, int qscale)
A link between two filters.
int av_channel_layout_describe_bprint(const AVChannelLayout *channel_layout, AVBPrint *bp)
bprint variant of av_channel_layout_describe().
void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size)
Init a print buffer using a pre-existing buffer.
#define AV_BPRINT_SIZE_COUNT_ONLY
AVChannelLayout ch_layout
Channel layout of the audio data.
const char * av_get_sample_fmt_name(enum AVSampleFormat sample_fmt)
Return the name of sample_fmt, or NULL if sample_fmt is not recognized.
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a link
New swscale design to change SwsGraph is what coordinates multiple passes These can include cascaded scaling error diffusion and so on Or we could have separate passes for the vertical and horizontal scaling In between each SwsPass lies a fully allocated image buffer Graph passes may have different levels of e g we can have a single threaded error diffusion pass following a multi threaded scaling pass SwsGraph is internally recreated whenever the image format
AVFilterContext ** filters
char * name
name of this filter instance
int sample_rate
Sample rate of the audio data.
AVFilterPad * srcpad
output pad on the source filter
AVFilterContext * dst
dest filter
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames,...
AVFilterContext * src
source filter
static int print_link_prop(AVBPrint *buf, AVFilterLink *link)
#define i(width, name, range_min, range_max)
const char * name
Pad name.
char * avfilter_graph_dump(AVFilterGraph *graph, const char *options)
Dump a graph into a human-readable string representation.
void av_bprintf(AVBPrint *buf, const char *fmt,...)
AVRational sample_aspect_ratio
Sample aspect ratio for the video frame, 0/1 if unknown/unspecified.
void av_bprint_chars(AVBPrint *buf, char c, unsigned n)
Append char c n times to a print buffer.
static void * av_x_if_null(const void *p, const void *x)
Return x default pointer in case p is NULL.
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.