Go to the documentation of this file.
83 #define TAG(_0) {.tag = _0}
84 #define ID(_0) {.id = c_##_0}
85 #define CHLIST(_0, ...) TAG(_0), __VA_ARGS__
86 #define CHLIST01(_0, _1) CHLIST(_0, ID(_1))
87 #define CHLIST02(_0, _1, _2) CHLIST(_0, ID(_1), ID(_2))
88 #define CHLIST03(_0, _1, _2, _3) CHLIST(_0, ID(_1), ID(_2), ID(_3))
89 #define CHLIST04(_0, _1, _2, _3, _4) CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4))
90 #define CHLIST05(_0, _1, _2, _3, _4, _5) CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5))
91 #define CHLIST06(_0, _1, _2, _3, _4, _5, _6) CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6))
92 #define CHLIST07(_0, _1, _2, _3, _4, _5, _6, _7) CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7))
93 #define CHLIST08(_0, _1, _2, _3, _4, _5, _6, _7, _8) CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8))
94 #define CHLIST09(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8), ID(_9))
95 #define CHLIST16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \
96 CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8), ID(_9), ID(_10), \
97 ID(_11), ID(_12), ID(_13), ID(_14), ID(_15), ID(_16))
98 #define CHLIST21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) \
99 CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8), ID(_9), ID(_10), \
100 ID(_11), ID(_12), ID(_13), ID(_14), ID(_15), ID(_16), ID(_17), ID(_18), ID(_19), ID(_20), ID(_21))
181 CHLIST09(
MOV_CH_LAYOUT_DTS_8_1_A, Lc, Rc,
L,
R, Ls, Rs, Rls, Rrs, LFE ),
182 CHLIST09(
MOV_CH_LAYOUT_DTS_8_1_B, Lc,
C, Rc,
L,
R, Ls, Cs, Rs, LFE ),
183 CHLIST16(
MOV_CH_LAYOUT_TMH_10_2_STD,
L,
R,
C, Vhc, Lsd, Rsd, Ls, Rs, Vhl, Vhr, Lw, Rw, Csd, Cs, LFE1, LFE2),
184 CHLIST21(
MOV_CH_LAYOUT_TMH_10_2_FULL,
L,
R,
C, Vhc, Lsd, Rsd, Ls, Rs, Vhl, Vhr, Lw, Rw, Csd, Cs, LFE1, LFE2, Lc, Rc, HI, VI, Haptic),
259 static const struct {
283 #if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1
370 uint32_t **pchannel_desc)
410 *pchannel_desc =
NULL;
414 uint32_t *channel_desc;
431 if (channel_desc[
i] == 0) {
437 *pchannel_desc = channel_desc;
446 uint32_t layout_tag, bitmap, num_descr;
458 "bitmap=%"PRIu32
" num_descr=%"PRIu32
"\n",
459 layout_tag, bitmap, num_descr);
461 if (
size < 12ULL + num_descr * 20ULL)
467 if (!num_descr || num_descr < nb_channels) {
469 num_descr, nb_channels);
473 if (num_descr > nb_channels) {
476 "got %d channel descriptions when number of channels is %d\n",
477 num_descr, nb_channels);
481 num_descr = nb_channels;
489 for (
int i = 0;
i < num_descr;
i++) {
493 "reached EOF while reading channel layout\n");
510 if (bitmap < 0x40000) {
515 av_log(
s,
AV_LOG_WARNING,
"ignoring channel layout bitmap with %d channels because number of channels is %d\n",
518 }
else if (layout_tag & 0xFFFF) {
519 int nb_channels = layout_tag & 0xFFFF;
749 uint8_t *position,
int position_num)
753 if (position_num < layout->nb_channels)
756 for (
int i = 0;
i <
layout->nb_channels;
i++) {
768 if (position[
i] == 127)
777 int stream_structure =
avio_r8(pb);
781 if (stream_structure & 1) {
794 for (
int i = 0;
i < nb_channels;
i++) {
798 if (speaker_pos == 126)
818 uint64_t omitted_channel_map =
avio_rb64(pb);
820 if (omitted_channel_map) {
822 omitted_channel_map);
830 if (stream_structure & 2) {
@ MOV_CH_LAYOUT_QUADRAPHONIC
@ MOV_CH_LAYOUT_EAC3_7_1_D
@ MOV_CH_LAYOUT_MPEG_4_0_A
#define AV_LOG_WARNING
Something somehow does not look correct.
#define AV_CHANNEL_LAYOUT_STEREO_DOWNMIX
@ MOV_CH_LAYOUT_EAC3_7_1_H
#define CHLIST04(_0, _1, _2, _3, _4)
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 all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
@ MOV_CH_LAYOUT_MPEG_5_1_A
union AVChannelLayout::@352 u
Details about which channels are present in this layout.
#define AV_CHANNEL_LAYOUT_STEREO
This struct describes the properties of an encoded stream.
enum MovChannelLayoutTag * layouts
@ MOV_CH_LAYOUT_DTS_6_1_D
@ MOV_CH_LAYOUT_DTS_8_0_A
AVChannelCustom * map
This member must be used when the channel order is AV_CHANNEL_ORDER_CUSTOM.
#define AV_CHANNEL_LAYOUT_2_2
@ MOV_CH_LAYOUT_AUDIOUNIT_7_0_FRONT
@ MOV_CH_LAYOUT_AC3_3_0_1
enum AVChannel av_channel_layout_channel_from_index(const AVChannelLayout *channel_layout, unsigned int idx)
Get the channel with the given index in a channel layout.
@ MOV_CH_LAYOUT_AUDIOUNIT_7_0
#define CHLIST02(_0, _1, _2)
@ MOV_CH_LAYOUT_EAC3_7_1_B
static const struct MovChannelLayoutMap mov_ch_layout_map[]
#define FF_COMPLIANCE_STRICT
Strictly conform to all the things in the spec no matter what consequences.
#define CHLIST05(_0, _1, _2, _3, _4, _5)
@ MOV_CH_LAYOUT_AMBISONIC_B_FORMAT
enum AVChannelOrder order
Channel order used in this layout.
uint64_t mask
This member must be used for AV_CHANNEL_ORDER_NATIVE, and may be used for AV_CHANNEL_ORDER_AMBISONIC ...
int nb_channels
Number of channels in this layout.
int ff_mov_get_channel_layout_tag(const AVCodecParameters *par, uint32_t *layout, uint32_t *bitmap, uint32_t **pchannel_desc)
Get the channel layout tag for the specified codec id and channel layout.
@ MOV_CH_LAYOUT_DTS_6_0_A
@ MOV_CH_LAYOUT_MATRIXSTEREO
#define AV_CHANNEL_LAYOUT_7POINT1_WIDE
int ff_mov_get_channel_layout_from_config(int config, AVChannelLayout *layout)
Get AVChannelLayout from ISO/IEC 23001-8 ChannelConfiguration.
@ AV_CHAN_SURROUND_DIRECT_LEFT
@ MOV_CH_LAYOUT_MPEG_5_0_A
@ MOV_CH_LAYOUT_EAC3_7_1_C
@ MOV_CH_LAYOUT_MPEG_5_1_D
#define AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK
static enum MovChannelLayoutTag mov_ch_layouts_alac[]
@ MOV_CH_LAYOUT_DTS_6_0_B
#define AV_CHANNEL_LAYOUT_SURROUND
@ AV_CHAN_STEREO_RIGHT
See above.
s EdgeDetect Foobar g libavfilter vf_edgedetect c libavfilter vf_foobar c edit libavfilter and add an entry for foobar following the pattern of the other filters edit libavfilter allfilters and add an entry for foobar following the pattern of the other filters configure make j< whatever > ffmpeg ffmpeg i you should get a foobar png with Lena edge detected That s your new playground is ready Some little details about what s going which in turn will define variables for the build system and the C
@ MOV_CH_LAYOUT_DTS_8_0_B
@ AV_CHAN_BOTTOM_FRONT_LEFT
@ MOV_CH_LAYOUT_EAC3_7_1_G
unsigned int avio_rb32(AVIOContext *s)
#define AV_LOG_TRACE
Extremely verbose debugging, useful for libav* development.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define FF_ARRAY_ELEMS(a)
@ MOV_CH_LAYOUT_AC3_1_0_1
@ MOV_CH_LAYOUT_HEXAGONAL
@ MOV_CH_LAYOUT_MPEG_5_1_C
#define AV_CHANNEL_LAYOUT_4POINT0
#define AV_CHANNEL_LAYOUT_7POINT1
@ AV_CHAN_UNKNOWN
Channel contains data, but its position is unknown.
@ MOV_CH_LAYOUT_EAC3_6_1_A
@ AV_CHANNEL_ORDER_UNSPEC
Only the channel count is specified, without any further information about the channel order.
int av_channel_layout_from_mask(AVChannelLayout *channel_layout, uint64_t mask)
Initialize a native channel layout from a bitmask indicating which channels are present.
@ MOV_CH_LAYOUT_DTS_8_1_A
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
@ MOV_CH_LAYOUT_DTS_8_1_B
@ MOV_CH_LAYOUT_MPEG_7_1_B
@ MOV_CH_LAYOUT_PENTAGONAL
static const AVChannelLayout iso_channel_configuration[]
#define CHLIST06(_0, _1, _2, _3, _4, _5, _6)
@ MOV_CH_LAYOUT_SMPTE_DTV
AVCodecParameters * codecpar
Codec parameters associated with this stream.
MovChannelLayoutTag
mov 'chan' tag reading/writing.
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
#define AV_CHANNEL_LAYOUT_RETYPE_FLAG_CANONICAL
The specified retype target order is ignored and the simplest possible (canonical) order is used for ...
@ AV_CHAN_TOP_BACK_CENTER
uint64_t avio_rb64(AVIOContext *s)
@ MOV_CH_LAYOUT_EAC3_6_0_A
@ MOV_CH_LAYOUT_DTS_6_1_C
static enum AVChannel mov_get_channel_id(uint32_t label)
@ AV_CHAN_BOTTOM_FRONT_RIGHT
@ MOV_CH_LAYOUT_MPEG_3_0_B
int ff_mov_get_channel_positions_from_layout(const AVChannelLayout *layout, uint8_t *position, int position_num)
Get ISO/IEC 23001-8 OutputChannelPosition from AVChannelLayout.
static int mov_get_channel_layout(AVChannelLayout *ch_layout, uint32_t tag)
Get the channel layout for the specified non-special channel layout tag if known.
AVChannelLayout ch_layout
Audio only.
@ AV_CHAN_FRONT_RIGHT_OF_CENTER
#define AV_CHANNEL_LAYOUT_22POINT2
AVCodecID
Identify the syntax and semantics of the bitstream.
int ff_mov_get_channel_config_from_layout(const AVChannelLayout *layout, int *config)
Get ISO/IEC 23001-8 ChannelConfiguration from AVChannelLayout.
@ MOV_CH_LAYOUT_EAC3_6_1_C
#define CHLIST07(_0, _1, _2, _3, _4, _5, _6, _7)
unsigned int avio_rl32(AVIOContext *s)
An AVChannelLayout holds information about the channel layout of audio data.
static const struct @327 mov_codec_ch_layouts[]
@ MOV_CH_LAYOUT_STEREOHEADPHONES
#define CHLIST09(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9)
@ MOV_CH_LAYOUT_MPEG_5_1_B
@ MOV_CH_LAYOUT_MPEG_7_1_A
int avio_r8(AVIOContext *s)
int av_channel_layout_retype(AVChannelLayout *channel_layout, enum AVChannelOrder order, int flags)
Change the AVChannelOrder of a channel layout.
@ MOV_CH_LAYOUT_DTS_6_1_A
@ MOV_CH_LAYOUT_MPEG_3_0_A
@ AV_CHAN_TOP_FRONT_RIGHT
@ AV_CHANNEL_ORDER_NATIVE
The native channel order, i.e.
@ AV_CHAN_FRONT_LEFT_OF_CENTER
@ AV_CHAN_UNUSED
Channel is empty can be safely skipped.
int av_channel_layout_compare(const AVChannelLayout *chl, const AVChannelLayout *chl1)
Check whether two channel layouts are semantically the same, i.e.
int av_channel_layout_custom_init(AVChannelLayout *channel_layout, int nb_channels)
Initialize a custom channel layout with the specified number of channels.
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 layout
@ MOV_CH_LAYOUT_MPEG_5_0_D
@ MOV_CH_LAYOUT_EMAGIC_DEFAULT_7_1
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code.
@ AV_CHAN_SURROUND_DIRECT_RIGHT
#define i(width, name, range_min, range_max)
static const struct MovChannelLayoutMap * find_layout_map(uint32_t tag)
#define av_malloc_array(a, b)
@ MOV_CH_LAYOUT_MPEG_6_1_A
@ MOV_CH_LAYOUT_AUDIOUNIT_6_0
@ MOV_CH_LAYOUT_AC3_2_1_1
@ AV_CHAN_STEREO_LEFT
Stereo downmix.
@ MOV_CH_LAYOUT_MPEG_4_0_B
@ MOV_CH_LAYOUT_MPEG_5_0_C
#define CHLIST16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16)
@ MOV_CH_LAYOUT_TMH_10_2_FULL
#define AV_CHANNEL_LAYOUT_2_1
@ AV_CHAN_NONE
Invalid channel index.
@ AV_CHAN_LOW_FREQUENCY_2
@ MOV_CH_LAYOUT_OCTAGONAL
@ MOV_CH_LAYOUT_EAC3_7_1_A
void av_channel_layout_uninit(AVChannelLayout *channel_layout)
Free any allocated data in the channel layout and reset the channel count to 0.
@ MOV_CH_LAYOUT_EAC3_7_0_A
int eof_reached
true if was unable to read due to error or eof
@ MOV_CH_LAYOUT_MPEG_7_1_C
@ AV_CHAN_BOTTOM_FRONT_CENTER
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward.
int av_channel_layout_copy(AVChannelLayout *dst, const AVChannelLayout *src)
Make a copy of a channel layout.
static enum MovChannelLayoutTag mov_ch_layouts_aac[]
@ MOV_CH_LAYOUT_AAC_OCTAGONAL
@ MOV_CH_LAYOUT_DTS_6_0_C
#define CHLIST21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21)
static enum AVChannel iso_channel_position[]
@ AV_CHAN_TOP_FRONT_CENTER
static uint32_t mov_get_channel_label(enum AVChannel channel)
@ MOV_CH_LAYOUT_EAC3_7_1_E
#define avpriv_request_sample(...)
#define AV_CHANNEL_LAYOUT_MONO
@ MOV_CH_LAYOUT_AC3_3_1_1
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
@ MOV_CH_LAYOUT_MPEG_5_0_B
@ MOV_CH_LAYOUT_DTS_6_1_B
@ AV_CHAN_AMBISONIC_BASE
Range of channels between AV_CHAN_AMBISONIC_BASE and AV_CHAN_AMBISONIC_END represent Ambisonic compon...
int ff_mov_read_chnl(AVFormatContext *s, AVIOContext *pb, AVStream *st)
Read 'chnl' tag from the input stream.
#define AV_CHANNEL_LAYOUT_6POINT1
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_CHANNEL_LAYOUT_5POINT0
#define AV_CHANNEL_LAYOUT_5POINT1
@ MOV_CH_LAYOUT_TMH_10_2_STD
static enum MovChannelLayoutTag mov_ch_layouts_wav[]
@ MOV_CH_LAYOUT_EAC3_7_1_F
static enum MovChannelLayoutTag mov_ch_layouts_ac3[]
#define CHLIST03(_0, _1, _2, _3)
#define CHLIST08(_0, _1, _2, _3, _4, _5, _6, _7, _8)
@ MOV_CH_LAYOUT_EAC3_6_1_B
@ MOV_CH_LAYOUT_USE_BITMAP
@ MOV_CH_LAYOUT_USE_DESCRIPTIONS
int ff_mov_read_chan(AVFormatContext *s, AVIOContext *pb, AVStream *st, int64_t size)
Read 'chan' tag from the input stream.