FFmpeg
|
#include "libavutil/avassert.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/eval.h"
#include "libavutil/pixdesc.h"
#include "libavutil/parseutils.h"
#include "avfilter.h"
#include "internal.h"
#include "formats.h"
Go to the source code of this file.
Macros | |
#define | KNOWN(l) (!FF_LAYOUT2COUNT(l)) /* for readability */ |
#define | MERGE_REF_NO_ALLOC(ret, a, fmts) |
Add all refs from a to ret and destroy a. More... | |
#define | MERGE_REF(ret, a, fmts, type, fail) |
#define | MERGE_FORMATS(ret, a, b, fmts, nb, type, fail) |
Add all formats common for a and b to ret, copy the refs and destroy a and b. More... | |
#define | MAKE_FORMAT_LIST(type, field, count_field) |
#define | ADD_FORMAT(f, fmt, unref_fn, type, list, nb) |
#define | FORMATS_REF(f, ref, unref_fn) |
#define | FIND_REF_INDEX(ref, idx) |
#define | FORMATS_UNREF(ref, list) |
#define | FORMATS_CHANGEREF(oldref, newref) |
#define | SET_COMMON_FORMATS(ctx, fmts, in_fmts, out_fmts, ref_fn, unref_fn) |
Functions | |
AVFilterFormats * | ff_merge_formats (AVFilterFormats *a, AVFilterFormats *b, enum AVMediaType type) |
Return a format list which contains the intersection of the formats of a and b. More... | |
AVFilterFormats * | ff_merge_samplerates (AVFilterFormats *a, AVFilterFormats *b) |
AVFilterChannelLayouts * | ff_merge_channel_layouts (AVFilterChannelLayouts *a, AVFilterChannelLayouts *b) |
Return a channel layouts/samplerates list which contains the intersection of the layouts/samplerates of a and b. More... | |
int | ff_fmt_is_in (int fmt, const int *fmts) |
Tell if an integer is contained in the provided -1-terminated list of integers. More... | |
AVFilterFormats * | ff_make_format_list (const int *fmts) |
Create a list of supported formats. More... | |
AVFilterChannelLayouts * | ff_make_formatu64_list (const uint64_t *fmts) |
AVFilterChannelLayouts * | avfilter_make_format64_list (const int64_t *fmts) |
int | ff_add_format (AVFilterFormats **avff, int64_t fmt) |
Add fmt to the list of media formats contained in *avff. More... | |
int | ff_add_channel_layout (AVFilterChannelLayouts **l, uint64_t channel_layout) |
AVFilterFormats * | ff_all_formats (enum AVMediaType type) |
Return a list of all formats supported by FFmpeg for the given media type. More... | |
int | ff_formats_pixdesc_filter (AVFilterFormats **rfmts, unsigned want, unsigned rej) |
Construct a formats list containing all pixel formats with certain properties. More... | |
AVFilterFormats * | ff_planar_sample_fmts (void) |
Construct a formats list containing all planar sample formats. More... | |
AVFilterFormats * | ff_all_samplerates (void) |
AVFilterChannelLayouts * | ff_all_channel_layouts (void) |
Construct an empty AVFilterChannelLayouts/AVFilterFormats struct – representing any channel layout (with known disposition)/sample rate. More... | |
AVFilterChannelLayouts * | ff_all_channel_counts (void) |
Construct an AVFilterChannelLayouts coding for any channel layout, with known or unknown disposition. More... | |
int | ff_channel_layouts_ref (AVFilterChannelLayouts *f, AVFilterChannelLayouts **ref) |
Add *ref as a new reference to f. More... | |
int | ff_formats_ref (AVFilterFormats *f, AVFilterFormats **ref) |
Add *ref as a new reference to formats. More... | |
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. More... | |
void | ff_channel_layouts_unref (AVFilterChannelLayouts **ref) |
Remove a reference to a channel layouts list. More... | |
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 *layouts) |
A helper for query_formats() which sets all links to the same list of channel layouts/sample rates. More... | |
int | ff_set_common_samplerates (AVFilterContext *ctx, AVFilterFormats *samplerates) |
int | ff_set_common_formats (AVFilterContext *ctx, AVFilterFormats *formats) |
A helper for query_formats() which sets all links to the same list of formats. More... | |
static int | default_query_formats_common (AVFilterContext *ctx, AVFilterChannelLayouts *(layouts)(void)) |
int | ff_default_query_formats (AVFilterContext *ctx) |
int | ff_query_formats_all_layouts (AVFilterContext *ctx) |
Set the formats list to all known channel layouts. More... | |
int | ff_parse_pixel_format (enum AVPixelFormat *ret, const char *arg, void *log_ctx) |
Parse a pixel format. More... | |
int | ff_parse_sample_format (int *ret, const char *arg, void *log_ctx) |
Parse a sample format name or a corresponding integer representation. More... | |
int | ff_parse_time_base (AVRational *ret, const char *arg, void *log_ctx) |
Parse a time base. More... | |
int | ff_parse_sample_rate (int *ret, const char *arg, void *log_ctx) |
Parse a sample rate. More... | |
int | ff_parse_channel_layout (int64_t *ret, int *nret, const char *arg, void *log_ctx) |
Parse a channel layout or a corresponding integer representation. More... | |
#define KNOWN | ( | l | ) | (!FF_LAYOUT2COUNT(l)) /* for readability */ |
#define FIND_REF_INDEX | ( | ref, | |
idx | |||
) |
#define FORMATS_CHANGEREF | ( | oldref, | |
newref | |||
) |
#define SET_COMMON_FORMATS | ( | ctx, | |
fmts, | |||
in_fmts, | |||
out_fmts, | |||
ref_fn, | |||
unref_fn | |||
) |
AVFilterFormats* ff_merge_formats | ( | AVFilterFormats * | a, |
AVFilterFormats * | b, | ||
enum AVMediaType | type | ||
) |
Return a format list which contains the intersection of the formats of a and b.
Also, all the references of a, all the references of b, and a and b themselves will be deallocated.
If a and b do not share any common formats, neither is modified, and NULL is returned.
Definition at line 103 of file formats.c.
Referenced by can_merge_formats(), and query_formats().
AVFilterFormats* ff_merge_samplerates | ( | AVFilterFormats * | a, |
AVFilterFormats * | b | ||
) |
Definition at line 150 of file formats.c.
Referenced by can_merge_formats(), and query_formats().
AVFilterChannelLayouts* ff_merge_channel_layouts | ( | AVFilterChannelLayouts * | a, |
AVFilterChannelLayouts * | b | ||
) |
Return a channel layouts/samplerates list which contains the intersection of the layouts/samplerates of a and b.
Also, all the references of a, all the references of b, and a and b themselves will be deallocated.
If a and b do not share any common elements, neither is modified, and NULL is returned.
Definition at line 177 of file formats.c.
Referenced by query_formats().
Tell if an integer is contained in the provided -1-terminated list of integers.
This is useful for determining (for instance) if an AVPixelFormat is in an array of supported formats.
fmt | provided format |
fmts | -1-terminated list of formats |
Definition at line 271 of file formats.c.
Referenced by config_input(), config_input_main(), config_input_overlay(), config_out_props(), and config_props().
AVFilterFormats* ff_make_format_list | ( | const int * | fmts | ) |
Create a list of supported formats.
This is intended for use in AVFilter->query_formats().
fmts | list of media formats, terminated by -1 |
Definition at line 300 of file formats.c.
Referenced by aeval_query_formats(), cudascale_query_formats(), cudaupload_query_formats(), deint_cuda_query_formats(), ff_opencl_filter_query_formats(), ff_vaapi_vpp_query_formats(), ff_vk_filter_query_formats(), geq_query_formats(), hwupload_query_formats(), movie_query_formats(), nppscale_query_formats(), npptranspose_query_formats(), overlay_cuda_query_formats(), overlay_qsv_query_formats(), pp_query_formats(), qsvdeint_query_formats(), qsvscale_query_formats(), query_formats(), and query_formats_src().
AVFilterChannelLayouts* ff_make_formatu64_list | ( | const uint64_t * | fmts | ) |
AVFilterChannelLayouts* avfilter_make_format64_list | ( | const int64_t * | fmts | ) |
Definition at line 320 of file formats.c.
Referenced by movie_query_formats(), and query_formats().
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.
Definition at line 350 of file formats.c.
Referenced by asink_query_formats(), ff_all_formats(), ff_draw_supported_pixel_formats(), ff_planar_sample_fmts(), hwupload_query_formats(), init(), query_formats(), reduce_formats_on_filter(), and vsink_query_formats().
int ff_add_channel_layout | ( | AVFilterChannelLayouts ** | l, |
uint64_t | channel_layout | ||
) |
Definition at line 356 of file formats.c.
Referenced by aeval_query_formats(), asink_query_formats(), channelmap_query_formats(), init(), join_query_formats(), query_formats(), and reduce_formats_on_filter().
AVFilterFormats* ff_all_formats | ( | enum AVMediaType | type | ) |
Return a list of all formats supported by FFmpeg for the given media type.
Definition at line 363 of file formats.c.
Referenced by default_query_formats_common(), filter_query_formats(), hwmap_query_formats(), and query_formats().
int ff_formats_pixdesc_filter | ( | AVFilterFormats ** | rfmts, |
unsigned | want, | ||
unsigned | rej | ||
) |
Construct a formats list containing all pixel formats with certain properties.
Definition at line 385 of file formats.c.
Referenced by hwdownload_query_formats(), and query_formats().
AVFilterFormats* ff_planar_sample_fmts | ( | void | ) |
Construct a formats list containing all planar sample formats.
Definition at line 426 of file formats.c.
Referenced by channelmap_query_formats(), join_query_formats(), and query_formats().
AVFilterFormats* ff_all_samplerates | ( | void | ) |
Definition at line 439 of file formats.c.
Referenced by aeval_query_formats(), channelmap_query_formats(), default_query_formats_common(), filter_query_formats(), join_query_formats(), and query_formats().
AVFilterChannelLayouts* ff_all_channel_layouts | ( | void | ) |
Construct an empty AVFilterChannelLayouts/AVFilterFormats struct – representing any channel layout (with known disposition)/sample rate.
Definition at line 445 of file formats.c.
Referenced by ff_query_formats_all_layouts(), filter_query_formats(), join_query_formats(), and query_formats().
AVFilterChannelLayouts* ff_all_channel_counts | ( | void | ) |
Construct an AVFilterChannelLayouts coding for any channel layout, with known or unknown disposition.
Definition at line 454 of file formats.c.
Referenced by aeval_query_formats(), asink_query_formats(), channelmap_query_formats(), ff_default_query_formats(), and query_formats().
int ff_channel_layouts_ref | ( | AVFilterChannelLayouts * | f, |
AVFilterChannelLayouts ** | ref | ||
) |
Add *ref as a new reference to f.
Definition at line 479 of file formats.c.
Referenced by aeval_query_formats(), channelmap_query_formats(), ff_set_common_channel_layouts(), join_query_formats(), movie_query_formats(), and query_formats().
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 484 of file formats.c.
Referenced by cudaupload_query_formats(), deint_cuda_query_formats(), ff_set_common_formats(), ff_set_common_samplerates(), ff_vaapi_vpp_query_formats(), hwdownload_query_formats(), hwmap_query_formats(), hwupload_query_formats(), movie_query_formats(), overlay_qsv_query_formats(), query_formats(), and query_formats_src().
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 521 of file formats.c.
Referenced by ff_add_format(), ff_formats_ref(), ff_set_common_formats(), ff_set_common_samplerates(), free_link(), init(), pick_format(), query_formats(), reduce_formats_on_filter(), and uninit().
void ff_channel_layouts_unref | ( | AVFilterChannelLayouts ** | ref | ) |
Remove a reference to a channel layouts list.
Definition at line 526 of file formats.c.
Referenced by ff_add_channel_layout(), ff_channel_layouts_ref(), ff_set_common_channel_layouts(), free_link(), init(), pick_format(), and uninit().
void ff_channel_layouts_changeref | ( | AVFilterChannelLayouts ** | oldref, |
AVFilterChannelLayouts ** | newref | ||
) |
Definition at line 544 of file formats.c.
Referenced by avfilter_insert_filter().
void ff_formats_changeref | ( | AVFilterFormats ** | oldref, |
AVFilterFormats ** | newref | ||
) |
Before After
|formats |<------—. |formats |<------—. | ____ | ___|___ | ____ | ___|___ | |refs| | | | | | |refs| | | | | NULL | |* ------—>|*oldref| | | ------—>|*newref| ^ | | * | | |_______| | |* * | | |_______| ___|___ | |____| | | |____| | | | | |________| |________| |*oldref| |_______|
Definition at line 550 of file formats.c.
Referenced by avfilter_insert_filter().
int ff_set_common_channel_layouts | ( | AVFilterContext * | ctx, |
AVFilterChannelLayouts * | layouts | ||
) |
A helper for query_formats() which sets all links to the same list of channel layouts/sample rates.
If there are no links hooked to this filter, the list is freed.
Definition at line 586 of file formats.c.
Referenced by aeval_query_formats(), asink_query_formats(), default_query_formats_common(), filter_query_formats(), and query_formats().
int ff_set_common_samplerates | ( | AVFilterContext * | ctx, |
AVFilterFormats * | samplerates | ||
) |
Definition at line 593 of file formats.c.
Referenced by aeval_query_formats(), asink_query_formats(), channelmap_query_formats(), default_query_formats_common(), filter_query_formats(), join_query_formats(), and query_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 605 of file formats.c.
Referenced by aeval_query_formats(), asink_query_formats(), channelmap_query_formats(), cudascale_query_formats(), default_query_formats_common(), ff_opencl_filter_query_formats(), ff_vk_filter_query_formats(), filter_query_formats(), geq_query_formats(), join_query_formats(), nppscale_query_formats(), npptranspose_query_formats(), overlay_cuda_query_formats(), pp_query_formats(), qsvdeint_query_formats(), qsvscale_query_formats(), query_formats(), and vsink_query_formats().
|
static |
Definition at line 611 of file formats.c.
Referenced by ff_default_query_formats(), and ff_query_formats_all_layouts().
int ff_default_query_formats | ( | AVFilterContext * | ctx | ) |
Definition at line 634 of file formats.c.
Referenced by main(), query_formats(), and vsink_query_formats().
int ff_query_formats_all_layouts | ( | AVFilterContext * | ctx | ) |
Set the formats list to all known channel layouts.
This function behaves like ff_default_query_formats(), except it only accepts known channel layouts. It should only be used with audio filters.
int ff_parse_pixel_format | ( | enum AVPixelFormat * | ret, |
const char * | arg, | ||
void * | log_ctx | ||
) |
int ff_parse_time_base | ( | AVRational * | ret, |
const char * | arg, | ||
void * | log_ctx | ||
) |
Parse a time base.
ret | unsigned AVRational pointer to where the value should be written |
arg | string to parse |
log_ctx | log context |
Parse a channel layout or a corresponding integer representation.
ret | 64bit integer pointer to where the value should be written. |
nret | integer pointer to the number of channels; if not NULL, then unknown channel layouts are accepted |
arg | string to parse |
log_ctx | log context |