FFmpeg
Loading...
Searching...
No Matches
formats.c File Reference
#include "libavutil/attributes.h"
#include "libavutil/avassert.h"
#include "libavutil/bprint.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/mem.h"
#include "libavutil/pixdesc.h"
#include "avfilter.h"
#include "filters.h"
#include "formats.h"

Go to the source code of this file.

Macros

#define MERGE_REF(ret, a, fmts, type, fail_statement)
 Add all refs from a to ret and destroy a.
 
#define MERGE_FORMATS(a, b, fmts, nb, type, check, empty_allowed)
 Add all formats common to a and b to a, add b's refs to a and destroy b.
 
#define PRINT_NAME(type, type_name)
 
#define CONVERSION_FILTER_SWSCALE
 
#define CONVERSION_FILTER_ARESAMPLE
 
#define MAKE_FORMAT_LIST(type, field, count_field)
 
#define MAKE_FORMAT_LIST_TYPE(name, type)
 
#define ADD_FORMAT(f, fmt, unref_fn, type, list, nb)
 
#define ASSIGN_FMT(f, fmt, list, nb)
 
#define ASSIGN_FMT(f, fmt, list, nb)
 
#define FORMATS_REF(f, ref, unref_fn)
 
#define FIND_REF_INDEX(ref, idx)
 
#define FORMATS_UNREF(ref, list)
 
#define FREE_LIST(ref, list)
 
#define FREE_LIST(ref, list)
 
#define FORMATS_CHANGEREF(oldref, newref)
 
#define SET_COMMON_FORMATS(ctx, fmts, media_type, ref_fn, unref_fn)
 
#define SET_COMMON_FORMATS2(ctx, cfg_in, cfg_out, fmts, media_type, ref_fn, unref_fn)
 

Functions

static int merge_formats_internal (AVFilterFormats *a, AVFilterFormats *b, enum AVMediaType type, int check)
 
static int can_merge_pix_fmts (const void *a, const void *b)
 Check the formats lists for compatibility for merging without actually merging.
 
static int merge_pix_fmts (void *a, void *b)
 Merge the formats lists if they are compatible and update all the references of a and b to point to the combined list and free the old lists as needed.
 
static int can_merge_sample_fmts (const void *a, const void *b)
 See can_merge_pix_fmts().
 
static int merge_sample_fmts (void *a, void *b)
 See merge_pix_fmts().
 
static int merge_samplerates_internal (AVFilterFormats *a, AVFilterFormats *b, int check)
 
static int can_merge_samplerates (const void *a, const void *b)
 See can_merge_pix_fmts().
 
static int merge_samplerates (void *a, void *b)
 See merge_pix_fmts().
 
static int merge_channel_layouts_internal (AVFilterChannelLayouts *a, AVFilterChannelLayouts *b, int check)
 See merge_pix_fmts().
 
static int can_merge_channel_layouts (const void *a, const void *b)
 
static int merge_channel_layouts (void *a, void *b)
 
static int merge_generic_internal (AVFilterFormats *a, AVFilterFormats *b, int check)
 
static int can_merge_generic (const void *a, const void *b)
 
static int merge_generic (void *a, void *b)
 
static void print_channel_layout_desc (AVBPrint *bp, const void *layoutsp)
 
static void print_sample_rate (AVBPrint *bp, const void *ratesp)
 
const AVFilterNegotiationff_filter_get_negotiation (const AVFilterLink *link)
 
int ff_pixfmt_is_in (enum AVPixelFormat fmt, const enum AVPixelFormat *fmts)
 Tell if a pixel format is contained in the provided AV_PIX_FMT_NONE-terminated list.
 
AVFilterChannelLayoutsff_make_channel_layout_list (const AVChannelLayout *fmts)
 
int ff_add_format (AVFilterFormats **avff, int64_t fmt)
 Add fmt to the list of media formats contained in *avff.
 
int ff_add_channel_layout (AVFilterChannelLayouts **l, const AVChannelLayout *channel_layout)
 
AVFilterFormatsff_make_formats_list_singleton (int fmt)
 Equivalent to ff_make_format_list({const int[]}{ fmt, -1 })
 
AVFilterFormatsff_all_formats (enum AVMediaType type)
 Return a list of all formats supported by FFmpeg for the given media type.
 
AVFilterFormatsff_formats_pixdesc_filter (unsigned want, unsigned rej)
 Construct a formats list containing all pixel formats with certain properties.
 
AVFilterFormatsff_planar_sample_fmts (void)
 Construct a formats list containing all planar sample formats.
 
AVFilterFormatsff_all_samplerates (void)
 
AVFilterChannelLayoutsff_all_channel_layouts (void)
 Construct an empty AVFilterChannelLayouts/AVFilterFormats struct – representing any channel layout (with known disposition)/sample rate.
 
AVFilterChannelLayoutsff_all_channel_counts (void)
 Construct an AVFilterChannelLayouts coding for any channel layout, with known or unknown disposition.
 
AVFilterFormatsff_all_color_spaces (void)
 Construct an AVFilterFormats representing all possible color spaces.
 
AVFilterFormatsff_all_color_ranges (void)
 Construct an AVFilterFormats representing all possible color ranges.
 
AVFilterFormatsff_all_alpha_modes (void)
 Construct an AVFilterFormats representing all possible alpha modes.
 
int ff_channel_layouts_ref (AVFilterChannelLayouts *f, AVFilterChannelLayouts **ref)
 Add *ref as a new reference to f.
 
int ff_formats_ref (AVFilterFormats *f, AVFilterFormats **ref)
 Add ref as a new reference to formats.
 
void ff_formats_unref (AVFilterFormats **ref)
 If *ref is non-NULL, remove *ref as a reference to the format list it currently points to, deallocates that list if this was the last reference, and sets *ref to NULL.
 
void ff_channel_layouts_unref (AVFilterChannelLayouts **ref)
 Remove a reference to a channel layouts list.
 
void ff_channel_layouts_changeref (AVFilterChannelLayouts **oldref, AVFilterChannelLayouts **newref)
 
void ff_formats_changeref (AVFilterFormats **oldref, AVFilterFormats **newref)
 
int ff_set_common_channel_layouts (AVFilterContext *ctx, AVFilterChannelLayouts *channel_layouts)
 Helpers for query_formats() which set all free audio links to the same list of channel layouts/sample rates.
 
int ff_set_common_channel_layouts_from_list (AVFilterContext *ctx, const AVChannelLayout *fmts)
 Equivalent to ff_set_common_channel_layouts(ctx, ff_make_channel_layout_list(fmts))
 
int ff_set_common_all_channel_counts (AVFilterContext *ctx)
 Equivalent to ff_set_common_channel_layouts(ctx, ff_all_channel_counts())
 
int ff_set_common_samplerates (AVFilterContext *ctx, AVFilterFormats *samplerates)
 
int ff_set_common_samplerates_from_list (AVFilterContext *ctx, const int *samplerates)
 Equivalent to ff_set_common_samplerates(ctx, ff_make_format_list(samplerates))
 
int ff_set_common_all_samplerates (AVFilterContext *ctx)
 Equivalent to ff_set_common_samplerates(ctx, ff_all_samplerates())
 
int ff_set_common_color_spaces (AVFilterContext *ctx, AVFilterFormats *color_spaces)
 
int ff_set_common_color_spaces_from_list (AVFilterContext *ctx, const int *color_spaces)
 Equivalent to ff_set_common_color_spaces(ctx, ff_make_format_list(color_spaces))
 
int ff_set_common_all_color_spaces (AVFilterContext *ctx)
 Equivalent to ff_set_common_color_spaces(ctx, ff_all_color_spaces())
 
int ff_set_common_color_ranges (AVFilterContext *ctx, AVFilterFormats *color_ranges)
 
int ff_set_common_color_ranges_from_list (AVFilterContext *ctx, const int *color_ranges)
 Equivalent to ff_set_common_color_ranges(ctx, ff_make_format_list(color_ranges))
 
int ff_set_common_all_color_ranges (AVFilterContext *ctx)
 Equivalent to ff_set_common_color_ranges(ctx, ff_all_color_ranges())
 
int ff_set_common_alpha_modes (AVFilterContext *ctx, AVFilterFormats *alpha_modes)
 
int ff_set_common_alpha_modes_from_list (AVFilterContext *ctx, const int *alpha_modes)
 Equivalent to ff_set_common_alpha_modes(ctx, ff_make_format_list(alpha_modes))
 
int ff_set_common_all_alpha_modes (AVFilterContext *ctx)
 Equivalent to ff_set_common_alpha_modes(ctx, ff_all_alpha_modes())
 
int ff_set_common_formats (AVFilterContext *ctx, AVFilterFormats *formats)
 A helper for query_formats() which sets all links to the same list of formats.
 
int ff_set_common_formats_from_list (AVFilterContext *ctx, const int *fmts)
 Equivalent to ff_set_common_formats(ctx, ff_make_format_list(fmts))
 
int ff_set_sample_formats_from_list (AVFilterContext *ctx, const enum AVSampleFormat *fmts)
 Equivalent to ff_set_common_formats(ctx, ff_make_sample_format_list(fmts))
 
int ff_set_pixel_formats_from_list (AVFilterContext *ctx, const enum AVPixelFormat *fmts)
 Equivalent to ff_set_common_formats(ctx, ff_make_pixel_format_list(fmts))
 
int ff_set_common_channel_layouts2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, AVFilterChannelLayouts *channel_layouts)
 Helpers for query_formats2() which set all free audio links to the same list of channel layouts/sample rates.
 
int ff_set_common_channel_layouts_from_list2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, const AVChannelLayout *fmts)
 
int ff_set_common_all_channel_counts2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
 
int ff_set_common_samplerates2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, AVFilterFormats *samplerates)
 
int ff_set_common_samplerates_from_list2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, const int *samplerates)
 
int ff_set_common_all_samplerates2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
 
int ff_set_common_color_spaces2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, AVFilterFormats *color_spaces)
 
int ff_set_common_color_spaces_from_list2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, const int *color_spaces)
 
int ff_set_common_all_color_spaces2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
 
int ff_set_common_color_ranges2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, AVFilterFormats *color_ranges)
 
int ff_set_common_color_ranges_from_list2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, const int *color_ranges)
 
int ff_set_common_all_color_ranges2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
 
int ff_set_common_alpha_modes2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, AVFilterFormats *alpha_modes)
 
int ff_set_common_alpha_modes_from_list2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, const int *alpha_modes)
 
int ff_set_common_all_alpha_modes2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
 
int ff_set_common_formats2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, AVFilterFormats *formats)
 
int ff_set_common_formats_from_list2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, const int *fmts)
 
int ff_set_sample_formats_from_list2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, const enum AVSampleFormat *fmts)
 
int ff_set_pixel_formats_from_list2 (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out, const enum AVPixelFormat *fmts)
 
int ff_default_query_formats (AVFilterContext *ctx)
 Sets all remaining unset filter lists for all inputs/outputs to their corresponding ff_all_*() lists.
 
static int check_list (void *log, const char *name, const AVFilterFormats *fmts)
 
int ff_formats_check_pixel_formats (void *log, const AVFilterFormats *fmts)
 Check that fmts is a valid pixel formats list.
 
int ff_formats_check_sample_formats (void *log, const AVFilterFormats *fmts)
 Check that fmts is a valid sample formats list.
 
int ff_formats_check_sample_rates (void *log, const AVFilterFormats *fmts)
 Check that fmts is a valid sample rates list.
 
int ff_formats_check_color_spaces (void *log, const AVFilterFormats *fmts)
 Check that fmts is a valid formats list for YUV colorspace metadata.
 
int ff_formats_check_color_ranges (void *log, const AVFilterFormats *fmts)
 
int ff_formats_check_alpha_modes (void *log, const AVFilterFormats *fmts)
 Check that fmts is a valid formats list for alpha modes.
 
static int layouts_compatible (const AVChannelLayout *a, const AVChannelLayout *b)
 
int ff_formats_check_channel_layouts (void *log, const AVFilterChannelLayouts *fmts)
 Check that fmts is a valid channel layouts list.
 

Variables

static const AVFilterFormatsMerger mergers_video []
 
static const AVFilterFormatsMerger mergers_audio []
 
static const AVFilterNegotiation negotiate_video
 
static const AVFilterNegotiation negotiate_audio
 

Macro Definition Documentation

◆ MERGE_REF

#define MERGE_REF ( ret,
a,
fmts,
type,
fail_statement )
Value:
do { \
type ***tmp; \
int i; \
\
if (!(tmp = av_realloc_array(ret->refs, ret->refcount + a->refcount, \
sizeof(*tmp)))) \
{ fail_statement } \
ret->refs = tmp; \
\
for (i = 0; i < a->refcount; i ++) { \
ret->refs[ret->refcount] = a->refs[i]; \
*ret->refs[ret->refcount++] = ret; \
} \
\
av_freep(&a->refs); \
av_freep(&a->fmts); \
av_freep(&a); \
} while (0)
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
void * av_realloc_array(void *ptr, size_t nmemb, size_t size)
Definition mem.c:217
int a
cl_device_type type
static uint8_t tmp[40]
Definition aes_ctr.c:52

Add all refs from a to ret and destroy a.

Definition at line 36 of file formats.c.

Referenced by merge_channel_layouts_internal().

◆ MERGE_FORMATS

#define MERGE_FORMATS ( a,
b,
fmts,
nb,
type,
check,
empty_allowed )

Add all formats common to a and b to a, add b's refs to a and destroy b.

If check is set, nothing is modified and it is only checked whether the formats are compatible. If empty_allowed is set and one of a,b->nb is zero, the lists are merged; otherwise, 0 (for nonmergeability) is returned.

Definition at line 63 of file formats.c.

Referenced by merge_formats_internal(), merge_generic_internal(), and merge_samplerates_internal().

◆ PRINT_NAME

#define PRINT_NAME ( type,
type_name )
Value:
static void print_##type_name(AVBPrint *bp, const void *fmtsp) \
{ \
const AVFilterFormats *fmts = fmtsp; \
for (int i = 0; i < fmts->nb_formats; i++) { \
const char *name = av_##type_name(fmts->formats[i]); \
av_bprint_chars(bp, ' ', i ? 1 : 0); \
av_bprint_append_data(bp, name, name ? strlen(name) : 0); \
} \
}
const char * name
Definition qsvenc.c:142
A list of supported formats for one end of a filter link.
Definition formats.h:64
int * formats
list of media formats
Definition formats.h:66
unsigned nb_formats
number of formats
Definition formats.h:65

Definition at line 349 of file formats.c.

◆ CONVERSION_FILTER_SWSCALE

#define CONVERSION_FILTER_SWSCALE
Value:
.conversion_filter = "scale", \
.conversion_opts_offset = offsetof(AVFilterGraph, scale_sws_opts),

Definition at line 382 of file formats.c.

◆ CONVERSION_FILTER_ARESAMPLE

#define CONVERSION_FILTER_ARESAMPLE
Value:
.conversion_filter = "aresample", \
.conversion_opts_offset = offsetof(AVFilterGraph, aresample_swr_opts),

Definition at line 386 of file formats.c.

◆ MAKE_FORMAT_LIST

#define MAKE_FORMAT_LIST ( type,
field,
count_field )
Value:
int count = 0; \
if (fmts) \
for (count = 0; fmts[count] != -1; count++) \
; \
formats = av_mallocz(sizeof(*formats)); \
if (!formats) \
return NULL; \
formats->count_field = count; \
if (count) { \
formats->field = av_malloc_array(count, sizeof(*formats->field)); \
if (!formats->field) { \
av_freep(&formats); \
return NULL; \
} \
}
#define NULL
Definition coverity.c:32
formats
Definition signature.h:47
#define av_malloc_array(a, b)
#define av_mallocz(s)

Definition at line 480 of file formats.c.

◆ MAKE_FORMAT_LIST_TYPE

#define MAKE_FORMAT_LIST_TYPE ( name,
type )
Value:
AVFilterFormats *ff_make_ ## name ## _list(const type* fmts) \
{ \
MAKE_FORMAT_LIST(AVFilterFormats, formats, nb_formats); \
while (count--) \
formats->formats[count] = (int)fmts[count]; \
return formats; \
}

Definition at line 498 of file formats.c.

◆ ADD_FORMAT

#define ADD_FORMAT ( f,
fmt,
unref_fn,
type,
list,
nb )
Value:
do { \
type *fmts; \
\
if (!(*f) && !(*f = av_mallocz(sizeof(**f)))) { \
return AVERROR(ENOMEM); \
} \
\
fmts = av_realloc_array((*f)->list, (*f)->nb + 1, \
sizeof(*(*f)->list)); \
if (!fmts) { \
unref_fn(f); \
return AVERROR(ENOMEM); \
} \
\
(*f)->list = fmts; \
ASSIGN_FMT(f, fmt, list, nb); \
} while (0)
#define f(width, name)
Definition cbs_vp8.c:236
#define AVERROR(e)
Definition error.h:45

Definition at line 547 of file formats.c.

Referenced by ff_add_channel_layout(), and ff_add_format().

◆ ASSIGN_FMT [1/2]

#define ASSIGN_FMT ( f,
fmt,
list,
nb )
Value:
do { \
(*f)->list[(*f)->nb++] = fmt; \
} while (0)

Definition at line 566 of file formats.c.

◆ ASSIGN_FMT [2/2]

#define ASSIGN_FMT ( f,
fmt,
list,
nb )
Value:
do { \
int ret; \
memset((*f)->list + (*f)->nb, 0, sizeof(*(*f)->list)); \
ret = av_channel_layout_copy(&(*f)->list[(*f)->nb], fmt); \
if (ret < 0) \
return ret; \
(*f)->nb++; \
} while (0)
int av_channel_layout_copy(AVChannelLayout *dst, const AVChannelLayout *src)
Make a copy of a channel layout.

Definition at line 566 of file formats.c.

◆ FORMATS_REF

#define FORMATS_REF ( f,
ref,
unref_fn )
Value:
void *tmp; \
\
if (!f) \
return AVERROR(ENOMEM); \
\
tmp = av_realloc_array(f->refs, f->refcount + 1, sizeof(*f->refs)); \
if (!tmp) { \
unref_fn(&f); \
return AVERROR(ENOMEM); \
} \
f->refs = tmp; \
f->refs[f->refcount++] = ref; \
*ref = f; \
return 0
static int ref[MAX_W *MAX_W]

Definition at line 735 of file formats.c.

Referenced by ff_channel_layouts_ref(), and ff_formats_ref().

◆ FIND_REF_INDEX

#define FIND_REF_INDEX ( ref,
idx )
Value:
do { \
int i; \
for (i = 0; i < (*ref)->refcount; i ++) \
if((*ref)->refs[i] == ref) { \
idx = i; \
break; \
} \
} while (0)

Definition at line 761 of file formats.c.

◆ FORMATS_UNREF

#define FORMATS_UNREF ( ref,
list )
Value:
do { \
int idx = -1; \
\
if (!*ref) \
return; \
\
FIND_REF_INDEX(ref, idx); \
\
if (idx >= 0) { \
memmove((*ref)->refs + idx, (*ref)->refs + idx + 1, \
sizeof(*(*ref)->refs) * ((*ref)->refcount - idx - 1)); \
--(*ref)->refcount; \
} \
if (!(*ref)->refcount) { \
FREE_LIST(ref, list); \
av_free((*ref)->list); \
av_free((*ref)->refs); \
av_free(*ref); \
} \
*ref = NULL; \
} while (0)

Definition at line 771 of file formats.c.

Referenced by ff_channel_layouts_unref(), and ff_formats_unref().

◆ FREE_LIST [1/2]

#define FREE_LIST ( ref,
list )
Value:
do { } while(0)

Definition at line 794 of file formats.c.

◆ FREE_LIST [2/2]

#define FREE_LIST ( ref,
list )
Value:
do { \
for (int i = 0; i < (*ref)->nb_channel_layouts; i++) \
av_channel_layout_uninit(&(*ref)->list[i]); \
} while(0)
void av_channel_layout_uninit(AVChannelLayout *channel_layout)
Free any allocated data in the channel layout and reset the channel count to 0.

Definition at line 794 of file formats.c.

◆ FORMATS_CHANGEREF

#define FORMATS_CHANGEREF ( oldref,
newref )
Value:
do { \
int idx = -1; \
\
FIND_REF_INDEX(oldref, idx); \
\
if (idx >= 0) { \
(*oldref)->refs[idx] = newref; \
*newref = *oldref; \
*oldref = NULL; \
} \
} while (0)

Definition at line 812 of file formats.c.

Referenced by ff_channel_layouts_changeref(), and ff_formats_changeref().

◆ SET_COMMON_FORMATS

#define SET_COMMON_FORMATS ( ctx,
fmts,
media_type,
ref_fn,
unref_fn )
Value:
int i; \
\
if (!fmts) \
return AVERROR(ENOMEM); \
\
for (i = 0; i < ctx->nb_inputs; i++) { \
AVFilterLink *const link = ctx->inputs[i]; \
if (link && !link->outcfg.fmts && \
(media_type == AVMEDIA_TYPE_UNKNOWN || link->type == media_type)) { \
int ret = ref_fn(fmts, &ctx->inputs[i]->outcfg.fmts); \
if (ret < 0) { \
return ret; \
} \
} \
} \
for (i = 0; i < ctx->nb_outputs; i++) { \
AVFilterLink *const link = ctx->outputs[i]; \
if (link && !link->incfg.fmts && \
(media_type == AVMEDIA_TYPE_UNKNOWN || link->type == media_type)) { \
int ret = ref_fn(fmts, &ctx->outputs[i]->incfg.fmts); \
if (ret < 0) { \
return ret; \
} \
} \
} \
\
if (!fmts->refcount) \
unref_fn(&fmts); \
\
return 0;
@ AVMEDIA_TYPE_UNKNOWN
Usually treated as AVMEDIA_TYPE_DATA.
Definition avutil.h:199
static AVFormatContext * ctx
Definition movenc.c:49

Definition at line 836 of file formats.c.

Referenced by ff_set_common_alpha_modes(), ff_set_common_channel_layouts(), ff_set_common_color_ranges(), ff_set_common_color_spaces(), ff_set_common_formats(), and ff_set_common_samplerates().

◆ SET_COMMON_FORMATS2

#define SET_COMMON_FORMATS2 ( ctx,
cfg_in,
cfg_out,
fmts,
media_type,
ref_fn,
unref_fn )
Value:
if (!fmts) \
return AVERROR(ENOMEM); \
\
for (unsigned i = 0; i < ctx->nb_inputs; i++) { \
const AVFilterLink *const link = ctx->inputs[i]; \
if (!cfg_in[i]->fmts && \
(media_type == AVMEDIA_TYPE_UNKNOWN || \
link->type == media_type)) { \
int ret = ref_fn(fmts, &cfg_in[i]->fmts); \
if (ret < 0) { \
return ret; \
} \
} \
} \
for (unsigned i = 0; i < ctx->nb_outputs; i++) { \
const AVFilterLink *const link = ctx->outputs[i]; \
if (!cfg_out[i]->fmts && \
(media_type == AVMEDIA_TYPE_UNKNOWN || \
link->type == media_type)) { \
int ret = ref_fn(fmts, &cfg_out[i]->fmts); \
if (ret < 0) { \
return ret; \
} \
} \
} \
\
if (!fmts->refcount) \
unref_fn(&fmts); \
\
return 0;

Definition at line 984 of file formats.c.

Referenced by ff_set_common_alpha_modes2(), ff_set_common_channel_layouts2(), ff_set_common_color_ranges2(), ff_set_common_color_spaces2(), ff_set_common_formats2(), and ff_set_common_samplerates2().

Function Documentation

◆ merge_formats_internal()

static int merge_formats_internal ( AVFilterFormats * a,
AVFilterFormats * b,
enum AVMediaType type,
int check )
static

◆ can_merge_pix_fmts()

static int can_merge_pix_fmts ( const void * a,
const void * b )
static

Check the formats lists for compatibility for merging without actually merging.

Returns
1 if they are compatible, 0 if not.

Definition at line 144 of file formats.c.

◆ merge_pix_fmts()

static int merge_pix_fmts ( void * a,
void * b )
static

Merge the formats lists if they are compatible and update all the references of a and b to point to the combined list and free the old lists as needed.

The combined list usually contains the intersection of the lists of a and b.

Both a and b must have owners (i.e. refcount > 0) for these functions.

Returns
1 if merging succeeded, 0 if a and b are incompatible and negative AVERROR code on failure. a and b are unmodified if 0 is returned.

Definition at line 162 of file formats.c.

◆ can_merge_sample_fmts()

static int can_merge_sample_fmts ( const void * a,
const void * b )
static

See can_merge_pix_fmts().

Definition at line 170 of file formats.c.

◆ merge_sample_fmts()

static int merge_sample_fmts ( void * a,
void * b )
static

See merge_pix_fmts().

Definition at line 179 of file formats.c.

◆ merge_samplerates_internal()

static int merge_samplerates_internal ( AVFilterFormats * a,
AVFilterFormats * b,
int check )
static

Definition at line 184 of file formats.c.

Referenced by can_merge_samplerates(), and merge_samplerates().

◆ can_merge_samplerates()

static int can_merge_samplerates ( const void * a,
const void * b )
static

See can_merge_pix_fmts().

Definition at line 197 of file formats.c.

◆ merge_samplerates()

static int merge_samplerates ( void * a,
void * b )
static

See merge_pix_fmts().

Definition at line 205 of file formats.c.

◆ merge_channel_layouts_internal()

static int merge_channel_layouts_internal ( AVFilterChannelLayouts * a,
AVFilterChannelLayouts * b,
int check )
static

See merge_pix_fmts().

Definition at line 213 of file formats.c.

Referenced by can_merge_channel_layouts(), and merge_channel_layouts().

◆ can_merge_channel_layouts()

static int can_merge_channel_layouts ( const void * a,
const void * b )
static

Definition at line 314 of file formats.c.

◆ merge_channel_layouts()

static int merge_channel_layouts ( void * a,
void * b )
static

Definition at line 320 of file formats.c.

◆ merge_generic_internal()

static int merge_generic_internal ( AVFilterFormats * a,
AVFilterFormats * b,
int check )
static

Definition at line 325 of file formats.c.

Referenced by can_merge_generic(), and merge_generic().

◆ can_merge_generic()

static int can_merge_generic ( const void * a,
const void * b )
static

Definition at line 338 of file formats.c.

◆ merge_generic()

static int merge_generic ( void * a,
void * b )
static

Definition at line 344 of file formats.c.

◆ print_channel_layout_desc()

static void print_channel_layout_desc ( AVBPrint * bp,
const void * layoutsp )
static

Definition at line 366 of file formats.c.

Referenced by print_channel_layout_desc().

◆ print_sample_rate()

static void print_sample_rate ( AVBPrint * bp,
const void * ratesp )
static

Definition at line 375 of file formats.c.

◆ ff_filter_get_negotiation()

const AVFilterNegotiation * ff_filter_get_negotiation ( const AVFilterLink * link)

Definition at line 462 of file formats.c.

Referenced by print_filter_formats(), and query_formats().

◆ ff_pixfmt_is_in()

int ff_pixfmt_is_in ( enum AVPixelFormat fmt,
const enum AVPixelFormat * fmts )

Tell if a pixel format is contained in the provided AV_PIX_FMT_NONE-terminated list.

Parameters
fmtprovided format
fmtsAV_PIX_FMT_NONE-terminated list of pixel formats
Returns
1 if present, 0 if absent

Definition at line 471 of file formats.c.

Referenced by config_input(), config_input_main(), config_input_overlay(), config_out_props(), config_props(), filter_frame(), and filter_frame().

◆ ff_make_channel_layout_list()

◆ ff_add_format()

int ff_add_format ( AVFilterFormats ** avff,
int64_t fmt )

Add fmt to the list of media formats contained in *avff.

If *avff is NULL the function allocates the filter formats struct and puts its pointer in *avff.

Returns
a non negative value in case of success, or a negative value corresponding to an AVERROR code in case of error

Definition at line 571 of file formats.c.

Referenced by ff_all_alpha_modes(), ff_all_color_ranges(), ff_all_color_spaces(), ff_all_formats(), ff_draw_supported_pixel_formats(), ff_planar_sample_fmts(), hwupload_query_formats(), libplacebo_query_format(), qrencodesrc_query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), and reduce_formats_on_filter().

◆ ff_add_channel_layout()

◆ ff_make_formats_list_singleton()

AVFilterFormats * ff_make_formats_list_singleton ( int fmt)

Equivalent to ff_make_format_list({const int[]}{ fmt, -1 })

Definition at line 596 of file formats.c.

Referenced by ff_default_query_formats(), libplacebo_query_format(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), and query_formats().

◆ ff_all_formats()

AVFilterFormats * ff_all_formats ( enum AVMediaType type)

Return a list of all formats supported by FFmpeg for the given media type.

Definition at line 602 of file formats.c.

Referenced by ff_default_query_formats(), hwmap_query_formats(), init(), query_formats(), query_formats(), and query_formats().

◆ ff_formats_pixdesc_filter()

AVFilterFormats * ff_formats_pixdesc_filter ( unsigned want,
unsigned rej )

◆ ff_planar_sample_fmts()

AVFilterFormats * ff_planar_sample_fmts ( void )

Construct a formats list containing all planar sample formats.

Definition at line 660 of file formats.c.

Referenced by channelmap_query_formats(), join_query_formats(), and query_formats().

◆ ff_all_samplerates()

AVFilterFormats * ff_all_samplerates ( void )

◆ ff_all_channel_layouts()

AVFilterChannelLayouts * ff_all_channel_layouts ( void )

Construct an empty AVFilterChannelLayouts/AVFilterFormats struct – representing any channel layout (with known disposition)/sample rate.

Definition at line 679 of file formats.c.

Referenced by join_query_formats(), query_formats(), query_formats(), and query_formats().

◆ ff_all_channel_counts()

AVFilterChannelLayouts * ff_all_channel_counts ( void )

Construct an AVFilterChannelLayouts coding for any channel layout, with known or unknown disposition.

Definition at line 688 of file formats.c.

Referenced by aeval_query_formats(), ff_set_common_all_channel_counts(), ff_set_common_all_channel_counts2(), query_formats(), query_formats(), query_formats(), and query_formats().

◆ ff_all_color_spaces()

AVFilterFormats * ff_all_color_spaces ( void )

Construct an AVFilterFormats representing all possible color spaces.

Note: This list does not include AVCOL_SPC_RESERVED.

Definition at line 697 of file formats.c.

Referenced by ff_set_common_all_color_spaces(), ff_set_common_all_color_spaces2(), init(), libplacebo_query_format(), query_formats(), and query_formats().

◆ ff_all_color_ranges()

AVFilterFormats * ff_all_color_ranges ( void )

Construct an AVFilterFormats representing all possible color ranges.

Definition at line 713 of file formats.c.

Referenced by ff_set_common_all_color_ranges(), ff_set_common_all_color_ranges2(), init(), libplacebo_query_format(), query_formats(), and query_formats().

◆ ff_all_alpha_modes()

AVFilterFormats * ff_all_alpha_modes ( void )

Construct an AVFilterFormats representing all possible alpha modes.

Definition at line 724 of file formats.c.

Referenced by ff_set_common_all_alpha_modes(), ff_set_common_all_alpha_modes2(), init(), libplacebo_query_format(), query_formats(), and query_formats().

◆ ff_channel_layouts_ref()

◆ ff_formats_ref()

int ff_formats_ref ( AVFilterFormats * formats,
AVFilterFormats ** ref )

Add ref as a new reference to formats.

That is the pointers will point like in the ascii art below:


|formats |<-----—. | ____ | ____|___________________ | |refs| | | __|_ | | * | | | | | | AVFilterLink | |* *--------->|*ref| | |____| | | |____| |________| |________________________

Definition at line 756 of file formats.c.

Referenced by amf_setup_input_output_formats(), cudaupload_query_formats(), ff_set_common_alpha_modes(), ff_set_common_alpha_modes2(), ff_set_common_color_ranges(), ff_set_common_color_ranges2(), ff_set_common_color_spaces(), ff_set_common_color_spaces2(), ff_set_common_formats(), ff_set_common_formats2(), ff_set_common_samplerates(), ff_set_common_samplerates2(), hwdownload_query_formats(), hwmap_query_formats(), hwupload_query_formats(), init(), libplacebo_query_format(), movie_query_formats(), overlay_qsv_query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), query_formats(), and query_formats().

◆ ff_formats_unref()

void ff_formats_unref ( AVFilterFormats ** ref)

If *ref is non-NULL, remove *ref as a reference to the format list it currently points to, deallocates that list if this was the last reference, and sets *ref to NULL.

    Before                                 After

________ ________ NULL |formats |<-----—. |formats | ^ | ____ | ____|________________ | ____ | ____|________________ | |refs| | | __|_ | |refs| | | __|_ | |* * | | | | | | AVFilterLink | |* * | | | | | | AVFilterLink | |* --------->|*ref| | | | | | |*ref| | |____| | | |____| | |____| | | |____| |________| |_____________________ |________| |_____________________

Definition at line 795 of file formats.c.

Referenced by ff_add_format(), ff_formats_ref(), ff_set_common_alpha_modes(), ff_set_common_alpha_modes2(), ff_set_common_color_ranges(), ff_set_common_color_ranges2(), ff_set_common_color_spaces(), ff_set_common_color_spaces2(), ff_set_common_formats(), ff_set_common_formats2(), ff_set_common_samplerates(), ff_set_common_samplerates2(), free_link(), invert_formats(), libplacebo_query_format(), pick_format(), and uninit().

◆ ff_channel_layouts_unref()

void ff_channel_layouts_unref ( AVFilterChannelLayouts ** ref)

Remove a reference to a channel layouts list.

Definition at line 807 of file formats.c.

Referenced by ff_add_channel_layout(), ff_channel_layouts_ref(), ff_set_common_channel_layouts(), ff_set_common_channel_layouts2(), free_link(), and pick_format().

◆ ff_channel_layouts_changeref()

void ff_channel_layouts_changeref ( AVFilterChannelLayouts ** oldref,
AVFilterChannelLayouts ** newref )

Definition at line 825 of file formats.c.

Referenced by avfilter_insert_filter().

◆ ff_formats_changeref()

void ff_formats_changeref ( AVFilterFormats ** oldref,
AVFilterFormats ** newref )
   Before                                 After

|formats |<------—. |formats |<------—. | ____ | ___|___ | ____ | ___|___ | |refs| | | | | | |refs| | | | | NULL | |* --------->|*oldref| | | --------->|*newref| ^ | | * | | |_______| | |* * | | |_______| ___|___ | |____| | | |____| | | | | |________| |________| |*oldref| |_______|

Definition at line 831 of file formats.c.

Referenced by avfilter_insert_filter().

◆ ff_set_common_channel_layouts()

int ff_set_common_channel_layouts ( AVFilterContext * ctx,
AVFilterChannelLayouts * layouts )

Helpers for query_formats() which set all free audio links to the same list of channel layouts/sample rates.

If there are no links hooked to this list, the list is freed.

Definition at line 868 of file formats.c.

Referenced by ff_set_common_all_channel_counts(), and ff_set_common_channel_layouts_from_list().

◆ ff_set_common_channel_layouts_from_list()

int ff_set_common_channel_layouts_from_list ( AVFilterContext * ctx,
const AVChannelLayout * fmts )

Equivalent to ff_set_common_channel_layouts(ctx, ff_make_channel_layout_list(fmts))

Definition at line 875 of file formats.c.

◆ ff_set_common_all_channel_counts()

int ff_set_common_all_channel_counts ( AVFilterContext * ctx)

Equivalent to ff_set_common_channel_layouts(ctx, ff_all_channel_counts())

Definition at line 881 of file formats.c.

Referenced by ff_default_query_formats().

◆ ff_set_common_samplerates()

int ff_set_common_samplerates ( AVFilterContext * ctx,
AVFilterFormats * samplerates )

◆ ff_set_common_samplerates_from_list()

int ff_set_common_samplerates_from_list ( AVFilterContext * ctx,
const int * samplerates )

Equivalent to ff_set_common_samplerates(ctx, ff_make_format_list(samplerates))

Definition at line 893 of file formats.c.

◆ ff_set_common_all_samplerates()

int ff_set_common_all_samplerates ( AVFilterContext * ctx)

Equivalent to ff_set_common_samplerates(ctx, ff_all_samplerates())

Definition at line 899 of file formats.c.

Referenced by ff_default_query_formats(), and query_formats().

◆ ff_set_common_color_spaces()

int ff_set_common_color_spaces ( AVFilterContext * ctx,
AVFilterFormats * color_spaces )

◆ ff_set_common_color_spaces_from_list()

int ff_set_common_color_spaces_from_list ( AVFilterContext * ctx,
const int * color_spaces )

Equivalent to ff_set_common_color_spaces(ctx, ff_make_format_list(color_spaces))

Definition at line 911 of file formats.c.

◆ ff_set_common_all_color_spaces()

int ff_set_common_all_color_spaces ( AVFilterContext * ctx)

Equivalent to ff_set_common_color_spaces(ctx, ff_all_color_spaces())

Definition at line 917 of file formats.c.

Referenced by ff_default_query_formats().

◆ ff_set_common_color_ranges()

int ff_set_common_color_ranges ( AVFilterContext * ctx,
AVFilterFormats * color_ranges )

◆ ff_set_common_color_ranges_from_list()

int ff_set_common_color_ranges_from_list ( AVFilterContext * ctx,
const int * color_ranges )

Equivalent to ff_set_common_color_ranges(ctx, ff_make_format_list(color_ranges))

Definition at line 929 of file formats.c.

◆ ff_set_common_all_color_ranges()

int ff_set_common_all_color_ranges ( AVFilterContext * ctx)

Equivalent to ff_set_common_color_ranges(ctx, ff_all_color_ranges())

Definition at line 935 of file formats.c.

Referenced by ff_default_query_formats().

◆ ff_set_common_alpha_modes()

int ff_set_common_alpha_modes ( AVFilterContext * ctx,
AVFilterFormats * alpha_modes )

◆ ff_set_common_alpha_modes_from_list()

int ff_set_common_alpha_modes_from_list ( AVFilterContext * ctx,
const int * alpha_modes )

Equivalent to ff_set_common_alpha_modes(ctx, ff_make_format_list(alpha_modes))

Definition at line 947 of file formats.c.

◆ ff_set_common_all_alpha_modes()

int ff_set_common_all_alpha_modes ( AVFilterContext * ctx)

Equivalent to ff_set_common_alpha_modes(ctx, ff_all_alpha_modes())

Definition at line 953 of file formats.c.

Referenced by ff_default_query_formats().

◆ ff_set_common_formats()

int ff_set_common_formats ( AVFilterContext * ctx,
AVFilterFormats * formats )

A helper for query_formats() which sets all links to the same list of formats.

If there are no links hooked to this filter, the list of formats is freed.

Definition at line 963 of file formats.c.

Referenced by ff_default_query_formats(), ff_set_common_formats_from_list(), ff_set_pixel_formats_from_list(), ff_set_sample_formats_from_list(), and query_formats().

◆ ff_set_common_formats_from_list()

int ff_set_common_formats_from_list ( AVFilterContext * ctx,
const int * fmts )

Equivalent to ff_set_common_formats(ctx, ff_make_format_list(fmts))

Definition at line 969 of file formats.c.

◆ ff_set_sample_formats_from_list()

int ff_set_sample_formats_from_list ( AVFilterContext * ctx,
const enum AVSampleFormat * fmts )

Equivalent to ff_set_common_formats(ctx, ff_make_sample_format_list(fmts))

Definition at line 974 of file formats.c.

Referenced by query_formats().

◆ ff_set_pixel_formats_from_list()

int ff_set_pixel_formats_from_list ( AVFilterContext * ctx,
const enum AVPixelFormat * fmts )

Equivalent to ff_set_common_formats(ctx, ff_make_pixel_format_list(fmts))

Definition at line 979 of file formats.c.

◆ ff_set_common_channel_layouts2()

int ff_set_common_channel_layouts2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out,
AVFilterChannelLayouts * channel_layouts )

Helpers for query_formats2() which set all free audio links to the same list of channel layouts/sample rates.

If there are no links hooked to this list, the list is freed.

Definition at line 1017 of file formats.c.

Referenced by ff_set_common_all_channel_counts2(), ff_set_common_channel_layouts_from_list2(), query_formats(), query_formats(), and query_formats().

◆ ff_set_common_channel_layouts_from_list2()

◆ ff_set_common_all_channel_counts2()

int ff_set_common_all_channel_counts2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out )

Definition at line 1034 of file formats.c.

Referenced by query_formats().

◆ ff_set_common_samplerates2()

int ff_set_common_samplerates2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out,
AVFilterFormats * samplerates )

◆ ff_set_common_samplerates_from_list2()

◆ ff_set_common_all_samplerates2()

int ff_set_common_all_samplerates2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out )

Definition at line 1058 of file formats.c.

◆ ff_set_common_color_spaces2()

int ff_set_common_color_spaces2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out,
AVFilterFormats * color_spaces )

◆ ff_set_common_color_spaces_from_list2()

int ff_set_common_color_spaces_from_list2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out,
const int * color_spaces )

Definition at line 1074 of file formats.c.

Referenced by vsink_query_formats().

◆ ff_set_common_all_color_spaces2()

int ff_set_common_all_color_spaces2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out )

Definition at line 1082 of file formats.c.

◆ ff_set_common_color_ranges2()

int ff_set_common_color_ranges2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out,
AVFilterFormats * color_ranges )

◆ ff_set_common_color_ranges_from_list2()

int ff_set_common_color_ranges_from_list2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out,
const int * color_ranges )

Definition at line 1098 of file formats.c.

Referenced by vsink_query_formats().

◆ ff_set_common_all_color_ranges2()

int ff_set_common_all_color_ranges2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out )

Definition at line 1106 of file formats.c.

◆ ff_set_common_alpha_modes2()

int ff_set_common_alpha_modes2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out,
AVFilterFormats * alpha_modes )

◆ ff_set_common_alpha_modes_from_list2()

int ff_set_common_alpha_modes_from_list2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out,
const int * alpha_modes )

Definition at line 1122 of file formats.c.

Referenced by query_formats(), and vsink_query_formats().

◆ ff_set_common_all_alpha_modes2()

int ff_set_common_all_alpha_modes2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out )

Definition at line 1130 of file formats.c.

◆ ff_set_common_formats2()

◆ ff_set_common_formats_from_list2()

int ff_set_common_formats_from_list2 ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out,
const int * fmts )

Definition at line 1146 of file formats.c.

◆ ff_set_sample_formats_from_list2()

◆ ff_set_pixel_formats_from_list2()

◆ ff_default_query_formats()

int ff_default_query_formats ( AVFilterContext * ctx)

Sets all remaining unset filter lists for all inputs/outputs to their corresponding ff_all_*() lists.

Definition at line 1170 of file formats.c.

Referenced by filter_query_formats(), and main().

◆ check_list()

◆ ff_formats_check_pixel_formats()

int ff_formats_check_pixel_formats ( void * log,
const AVFilterFormats * fmts )

Check that fmts is a valid pixel formats list.

In particular, check for duplicates.

Definition at line 1254 of file formats.c.

Referenced by filter_link_check_formats().

◆ ff_formats_check_sample_formats()

int ff_formats_check_sample_formats ( void * log,
const AVFilterFormats * fmts )

Check that fmts is a valid sample formats list.

In particular, check for duplicates.

Definition at line 1259 of file formats.c.

Referenced by filter_link_check_formats().

◆ ff_formats_check_sample_rates()

int ff_formats_check_sample_rates ( void * log,
const AVFilterFormats * fmts )

Check that fmts is a valid sample rates list.

In particular, check for duplicates.

Definition at line 1264 of file formats.c.

Referenced by filter_link_check_formats().

◆ ff_formats_check_color_spaces()

int ff_formats_check_color_spaces ( void * log,
const AVFilterFormats * fmts )

Check that fmts is a valid formats list for YUV colorspace metadata.

In particular, check for duplicates.

Definition at line 1271 of file formats.c.

Referenced by filter_link_check_formats().

◆ ff_formats_check_color_ranges()

int ff_formats_check_color_ranges ( void * log,
const AVFilterFormats * fmts )

Definition at line 1282 of file formats.c.

Referenced by filter_link_check_formats().

◆ ff_formats_check_alpha_modes()

int ff_formats_check_alpha_modes ( void * log,
const AVFilterFormats * fmts )

Check that fmts is a valid formats list for alpha modes.

In particular, check for duplicates.

Definition at line 1287 of file formats.c.

Referenced by filter_link_check_formats().

◆ layouts_compatible()

static int layouts_compatible ( const AVChannelLayout * a,
const AVChannelLayout * b )
static

Definition at line 1292 of file formats.c.

Referenced by ff_formats_check_channel_layouts().

◆ ff_formats_check_channel_layouts()

int ff_formats_check_channel_layouts ( void * log,
const AVFilterChannelLayouts * fmts )

Check that fmts is a valid channel layouts list.

In particular, check for duplicates.

Definition at line 1299 of file formats.c.

Referenced by filter_link_check_formats().

Variable Documentation

◆ mergers_video

const AVFilterFormatsMerger mergers_video[]
static

Definition at line 390 of file formats.c.

◆ mergers_audio

const AVFilterFormatsMerger mergers_audio[]
static
Initial value:
= {
{
.name = "Channel layouts",
.offset = 0x42 ,
},
{
.name = "Sample rates",
.offset = 0x42 ,
.can_merge = can_merge_samplerates,
.print_list = print_sample_rate,
},
{
.name = "Sample formats",
.offset = 0x42 ,
.can_merge = can_merge_sample_fmts,
.print_list = print_get_sample_fmt_name,
},
}
static void print_channel_layout_desc(AVBPrint *bp, const void *layoutsp)
Definition formats.c:366
static int merge_sample_fmts(void *a, void *b)
See merge_pix_fmts().
Definition formats.c:179
static void print_sample_rate(AVBPrint *bp, const void *ratesp)
Definition formats.c:375
static int merge_samplerates(void *a, void *b)
See merge_pix_fmts().
Definition formats.c:205
#define CONVERSION_FILTER_ARESAMPLE
Definition formats.c:386
static int can_merge_sample_fmts(const void *a, const void *b)
See can_merge_pix_fmts().
Definition formats.c:170
static int merge_channel_layouts(void *a, void *b)
Definition formats.c:320
static int can_merge_channel_layouts(const void *a, const void *b)
Definition formats.c:314
static int can_merge_samplerates(const void *a, const void *b)
See can_merge_pix_fmts().
Definition formats.c:197

Definition at line 425 of file formats.c.

◆ negotiate_video

const AVFilterNegotiation negotiate_video
static
Initial value:
= {
.nb_mergers = FF_ARRAY_ELEMS(mergers_video),
.mergers = mergers_video,
}
static const AVFilterFormatsMerger mergers_video[]
Definition formats.c:390
#define FF_ARRAY_ELEMS(a)

Definition at line 452 of file formats.c.

Referenced by ff_filter_get_negotiation().

◆ negotiate_audio

const AVFilterNegotiation negotiate_audio
static
Initial value:
= {
.nb_mergers = FF_ARRAY_ELEMS(mergers_audio),
.mergers = mergers_audio,
}
static const AVFilterFormatsMerger mergers_audio[]
Definition formats.c:425

Definition at line 457 of file formats.c.

Referenced by ff_filter_get_negotiation().