Note, this is a theoretical fix, iam not aware of a case where this function receives
duplicates in its input.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This list is mainly useful to be directly used as a parameter by the
audio sink buffer, when there is no need to force a specific channel
layout.
The list of formats is generated programmatically, and avoids channel
layouts not supported by libavfilter (with more than 8 channels).
We preferred to avoid compile-time generation in order to avoid some
unnecessary complexity (build hacks, generating code maintainance
etc.).
A more compact way to express this list through the use of macros
should be possible when libavfilter will support more than 8 channels,
as there will be no need to filter out channel layouts with more than
8 channels.
See thread:
Subject: [FFmpeg-devel] [PATCH] lavfi: add ff_all_channel_layouts internal symbol
Date: Sat, 20 Aug 2011 15:33:16 +0200
A function name should tell what the function does rather than what
the function returns. This also avoids possible conflicts
(e.g. between a function and a public list of all supported formats),
and clarifies the code.
Breaks audio API/ABI, add a backward compatibility layer for video
API/ABI.
The list type was changed to int64_t to be able to hold
channel layouts.
avfilter_make_format_list() still takes a int32_t array and converts
it to int64_t. A new function, avfilter_make_format64_list, that
takes int64_t arrays has been added.
Replace sizeof((*avff)->formats)
with sizeof(*(*avff)->formats)
as the size of the array element is given by the pointed element
rather than by its pointer.
In particular fix computation with the pending patch when
sizeof(int64_t) != sizeof(int64_t *).
This is needed to make the libavfilter framework work with audio
filters.
In particular add a type field to AVFilterLink, change the field types:
enum PixelFormat format -> int format in AVFilterBuffer
enum PixelFormat *formats -> int *formats in AVFilterFormats
enum PixelFormat *format -> int format in AVFilterLink
and change the function signatures:
AVFilterFormats *avfilter_make_format_list(const enum PixelFormat *pix_fmts); ->
AVFilterFormats *avfilter_make_format_list(const int *fmts);
int avfilter_add_colorspace(AVFilterFormats **avff, enum PixelFormat pix_fmt); ->
int avfilter_add_format(AVFilterFormats **avff, int fmt);
AVFilterFormats *avfilter_all_colorspaces(void); ->
AVFilterFormats *avfilter_all_formats(enum AVMediaType type);
This change breaks libavfilter API/ABI.
Patch by S.N. Hemanth Meenakshisundaram |smeenaks|ucsd|edu|.
Originally committed as revision 24424 to svn://svn.ffmpeg.org/ffmpeg/trunk
*avff, so that an AVFilterFormats struct is created and returned by
the function if *avff is NULL.
Make the function use more convenient.
Originally committed as revision 21035 to svn://svn.ffmpeg.org/ffmpeg/trunk
formats only the non-HW-accelerated formats, for which there is no
sense in filtering.
Originally committed as revision 21009 to svn://svn.ffmpeg.org/ffmpeg/trunk
argument of avfilter_make_format_list(), as the argument represents a
list of elements.
Originally committed as revision 20341 to svn://svn.ffmpeg.org/ffmpeg/trunk
avfilter_make_format_list().
See the thread:
"[PATCH] Implement avfilter_make_format_list2(enum PixelFormat pix_fmt, ...)".
Originally committed as revision 20299 to svn://svn.ffmpeg.org/ffmpeg/trunk
Original log message:
Forgot to add in the big colorspace commit
Commited in SoC by Bobby Bingham
Originally committed as revision 11891 to svn://svn.ffmpeg.org/ffmpeg/trunk