Go to the documentation of this file.
123 #define TAG(_tag, _cnt) {.tag = _tag}
124 #define ID(_0) {.id = c_##_0}
125 #define CHLIST01(_tag, _1) CHLIST(_tag, 1, ID(_1))
126 #define CHLIST02(_tag, _1, _2) CHLIST(_tag, 2, ID(_1), ID(_2))
127 #define CHLIST03(_tag, _1, _2, _3) CHLIST(_tag, 3, ID(_1), ID(_2), ID(_3))
128 #define CHLIST04(_tag, _1, _2, _3, _4) CHLIST(_tag, 4, ID(_1), ID(_2), ID(_3), ID(_4))
129 #define CHLIST05(_tag, _1, _2, _3, _4, _5) CHLIST(_tag, 5, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5))
130 #define CHLIST06(_tag, _1, _2, _3, _4, _5, _6) CHLIST(_tag, 6, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6))
131 #define CHLIST07(_tag, _1, _2, _3, _4, _5, _6, _7) CHLIST(_tag, 7, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7))
132 #define CHLIST08(_tag, _1, _2, _3, _4, _5, _6, _7, _8) CHLIST(_tag, 8, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8))
133 #define CHLIST09(_tag, _1, _2, _3, _4, _5, _6, _7, _8, _9) CHLIST(_tag, 9, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8), ID(_9))
134 #define CHLIST16(_tag, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) \
135 CHLIST(_tag, 16, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8), ID(_9), ID(_10), \
136 ID(_11), ID(_12), ID(_13), ID(_14), ID(_15), ID(_16))
137 #define CHLIST21(_tag, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) \
138 CHLIST(_tag, 21, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8), ID(_9), ID(_10), \
139 ID(_11), ID(_12), ID(_13), ID(_14), ID(_15), ID(_16), ID(_17), ID(_18), ID(_19), ID(_20), ID(_21))
140 #define CHLIST24(_tag, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) \
141 CHLIST(_tag, 24, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8), ID(_9), ID(_10), \
142 ID(_11), ID(_12), ID(_13), ID(_14), ID(_15), ID(_16), ID(_17), ID(_18), ID(_19), ID(_20), \
143 ID(_21), ID(_22), ID(_23), ID(_24))
145 #define MOV_CH_LAYOUT_MAP \
146 CHLIST01( MOV_CH_LAYOUT_MONO, C )\
147 CHLIST02( MOV_CH_LAYOUT_STEREO, L, R )\
148 CHLIST02( MOV_CH_LAYOUT_STEREOHEADPHONES, L, R )\
149 CHLIST02( MOV_CH_LAYOUT_BINAURAL, L, R )\
150 CHLIST02( MOV_CH_LAYOUT_MIDSIDE, L, R )\
151 CHLIST02( MOV_CH_LAYOUT_XY, L, R )\
152 CHLIST02( MOV_CH_LAYOUT_MATRIXSTEREO, Lt, Rt )\
153 CHLIST02( MOV_CH_LAYOUT_AC3_1_0_1, C, LFE )\
154 CHLIST03( MOV_CH_LAYOUT_MPEG_3_0_A, L, R, C )\
155 CHLIST03( MOV_CH_LAYOUT_MPEG_3_0_B, C, L, R )\
156 CHLIST03( MOV_CH_LAYOUT_AC3_3_0, L, C, R )\
157 CHLIST03( MOV_CH_LAYOUT_ITU_2_1, L, R, Cs )\
158 CHLIST03( MOV_CH_LAYOUT_DVD_4, L, R, LFE )\
159 CHLIST04( MOV_CH_LAYOUT_AMBISONIC_B_FORMAT, W, X, Y, Z )\
160 CHLIST04( MOV_CH_LAYOUT_QUADRAPHONIC, L, R, Rls, Rrs )\
161 CHLIST04( MOV_CH_LAYOUT_MPEG_4_0_A, L, R, C, Cs )\
162 CHLIST04( MOV_CH_LAYOUT_MPEG_4_0_B, C, L, R, Cs )\
163 CHLIST04( MOV_CH_LAYOUT_AC3_3_1, L, C, R, Cs )\
164 CHLIST04( MOV_CH_LAYOUT_ITU_2_2, L, R, Ls, Rs )\
165 CHLIST04( MOV_CH_LAYOUT_DVD_5, L, R, LFE, Cs )\
166 CHLIST04( MOV_CH_LAYOUT_AC3_2_1_1, L, R, Cs, LFE )\
167 CHLIST04( MOV_CH_LAYOUT_DVD_10, L, R, C, LFE )\
168 CHLIST04( MOV_CH_LAYOUT_AC3_3_0_1, L, C, R, LFE )\
169 CHLIST04( MOV_CH_LAYOUT_DTS_3_1, C, L, R, LFE )\
170 CHLIST05( MOV_CH_LAYOUT_PENTAGONAL, L, R, Rls, Rrs, C )\
171 CHLIST05( MOV_CH_LAYOUT_MPEG_5_0_A, L, R, C, Ls, Rs )\
172 CHLIST05( MOV_CH_LAYOUT_MPEG_5_0_B, L, R, Ls, Rs, C )\
173 CHLIST05( MOV_CH_LAYOUT_MPEG_5_0_C, L, C, R, Ls, Rs )\
174 CHLIST05( MOV_CH_LAYOUT_MPEG_5_0_D, C, L, R, Ls, Rs )\
175 CHLIST05( MOV_CH_LAYOUT_DVD_6, L, R, LFE, Ls, Rs )\
176 CHLIST05( MOV_CH_LAYOUT_DVD_18, L, R, Ls, Rs, LFE )\
177 CHLIST05( MOV_CH_LAYOUT_DVD_11, L, R, C, LFE, Cs )\
178 CHLIST05( MOV_CH_LAYOUT_AC3_3_1_1, L, C, R, Cs, LFE )\
179 CHLIST05( MOV_CH_LAYOUT_DTS_4_1, C, L, R, Cs, LFE )\
180 CHLIST06( MOV_CH_LAYOUT_HEXAGONAL, L, R, Rls, Rrs, C, Cs )\
181 CHLIST06( MOV_CH_LAYOUT_DTS_6_0_C, C, Cs, L, R, Rls, Rrs )\
182 CHLIST06( MOV_CH_LAYOUT_MPEG_5_1_A, L, R, C, LFE, Ls, Rs )\
183 CHLIST06( MOV_CH_LAYOUT_MPEG_5_1_B, L, R, Ls, Rs, C, LFE )\
184 CHLIST06( MOV_CH_LAYOUT_MPEG_5_1_C, L, C, R, Ls, Rs, LFE )\
185 CHLIST06( MOV_CH_LAYOUT_MPEG_5_1_D, C, L, R, Ls, Rs, LFE )\
186 CHLIST06( MOV_CH_LAYOUT_AUDIOUNIT_6_0, L, R, Ls, Rs, C, Cs )\
187 CHLIST06( MOV_CH_LAYOUT_AAC_6_0, C, L, R, Ls, Rs, Cs )\
188 CHLIST06( MOV_CH_LAYOUT_EAC3_6_0_A, L, C, R, Ls, Rs, Cs )\
189 CHLIST06( MOV_CH_LAYOUT_DTS_6_0_A, Lc, Rc, L, R, Ls, Rs )\
190 CHLIST06( MOV_CH_LAYOUT_DTS_6_0_B, C, L, R, Rls, Rrs, Ts )\
191 CHLIST07( MOV_CH_LAYOUT_MPEG_6_1_A, L, R, C, LFE, Ls, Rs, Cs )\
192 CHLIST07( MOV_CH_LAYOUT_AAC_6_1, C, L, R, Ls, Rs, Cs, LFE )\
193 CHLIST07( MOV_CH_LAYOUT_EAC3_6_1_A, L, C, R, Ls, Rs, LFE, Cs )\
194 CHLIST07( MOV_CH_LAYOUT_DTS_6_1_D, C, L, R, Ls, Rs, LFE, Cs )\
195 CHLIST07( MOV_CH_LAYOUT_AUDIOUNIT_7_0, L, R, Ls, Rs, C, Rls, Rrs )\
196 CHLIST07( MOV_CH_LAYOUT_AAC_7_0, C, L, R, Ls, Rs, Rls, Rrs )\
197 CHLIST07( MOV_CH_LAYOUT_EAC3_7_0_A, L, C, R, Ls, Rs, Rls, Rrs )\
198 CHLIST07( MOV_CH_LAYOUT_AUDIOUNIT_7_0_FRONT, L, R, Ls, Rs, C, Lc, Rc )\
199 CHLIST07( MOV_CH_LAYOUT_DTS_7_0, Lc, C, Rc, L, R, Ls, Rs )\
200 CHLIST07( MOV_CH_LAYOUT_EAC3_6_1_B, L, C, R, Ls, Rs, LFE, Ts )\
201 CHLIST07( MOV_CH_LAYOUT_EAC3_6_1_C, L, C, R, Ls, Rs, LFE, Vhc )\
202 CHLIST07( MOV_CH_LAYOUT_DTS_6_1_A, Lc, Rc, L, R, Ls, Rs, LFE )\
203 CHLIST07( MOV_CH_LAYOUT_DTS_6_1_B, C, L, R, Rls, Rrs, Ts, LFE )\
204 CHLIST07( MOV_CH_LAYOUT_DTS_6_1_C, C, Cs, L, R, Rls, Rrs, LFE )\
205 CHLIST08( MOV_CH_LAYOUT_OCTAGONAL, L, R, Rls, Rrs, C, Cs, Ls, Rs )\
206 CHLIST08( MOV_CH_LAYOUT_AAC_OCTAGONAL, C, L, R, Ls, Rs, Rls, Rrs, Cs )\
207 CHLIST08( MOV_CH_LAYOUT_CUBE, L, R, Rls, Rrs, Vhl, Vhr, Rlt, Rrt )\
208 CHLIST08( MOV_CH_LAYOUT_MPEG_7_1_A, L, R, C, LFE, Ls, Rs, Lc, Rc )\
209 CHLIST08( MOV_CH_LAYOUT_MPEG_7_1_B, C, Lc, Rc, L, R, Ls, Rs, LFE )\
210 CHLIST08( MOV_CH_LAYOUT_EMAGIC_DEFAULT_7_1, L, R, Ls, Rs, C, LFE, Lc, Rc )\
211 CHLIST08( MOV_CH_LAYOUT_EAC3_7_1_B, L, C, R, Ls, Rs, LFE, Lc, Rc )\
212 CHLIST08( MOV_CH_LAYOUT_DTS_7_1, Lc, C, Rc, L, R, Ls, Rs, LFE )\
213 CHLIST08( MOV_CH_LAYOUT_MPEG_7_1_C, L, R, C, LFE, Ls, Rs, Rls, Rrs )\
214 CHLIST08( MOV_CH_LAYOUT_EAC3_7_1_A, L, C, R, Ls, Rs, LFE, Rls, Rrs )\
215 CHLIST08( MOV_CH_LAYOUT_SMPTE_DTV, L, R, C, LFE, Ls, Rs, Lt, Rt )\
216 CHLIST08( MOV_CH_LAYOUT_EAC3_7_1_C, L, C, R, Ls, Rs, LFE, Lsd, Rsd )\
217 CHLIST08( MOV_CH_LAYOUT_EAC3_7_1_D, L, C, R, Ls, Rs, LFE, Lw, Rw )\
218 CHLIST08( MOV_CH_LAYOUT_EAC3_7_1_E, L, C, R, Ls, Rs, LFE, Vhl, Vhr )\
219 CHLIST08( MOV_CH_LAYOUT_EAC3_7_1_F, L, C, R, Ls, Rs, LFE, Cs, Ts )\
220 CHLIST08( MOV_CH_LAYOUT_EAC3_7_1_G, L, C, R, Ls, Rs, LFE, Cs, Vhc )\
221 CHLIST08( MOV_CH_LAYOUT_EAC3_7_1_H, L, C, R, Ls, Rs, LFE, Ts, Vhc )\
222 CHLIST08( MOV_CH_LAYOUT_DTS_8_0_A, Lc, Rc, L, R, Ls, Rs, Rls, Rrs )\
223 CHLIST08( MOV_CH_LAYOUT_DTS_8_0_B, Lc, C, Rc, L, R, Ls, Cs, Rs )\
224 CHLIST09( MOV_CH_LAYOUT_DTS_8_1_A, Lc, Rc, L, R, Ls, Rs, Rls, Rrs, LFE )\
225 CHLIST09( MOV_CH_LAYOUT_DTS_8_1_B, Lc, C, Rc, L, R, Ls, Cs, Rs, LFE )\
226 CHLIST16( MOV_CH_LAYOUT_TMH_10_2_STD, L, R, C, Vhc, Lsd, Rsd, Ls, Rs, Vhl, Vhr, Lw, Rw, Csd, Cs, LFE1, LFE2 )\
227 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 )\
229 #define CHLIST(_tag, _cnt, ...) static_assert((_tag & 0xffff) == _cnt, "Channel count of " #_tag " is not " #_cnt);
232 #define CHLIST(_tag, _cnt, ...) TAG(_tag, _cnt), __VA_ARGS__,
240 #define ID(_0) {.id = iso_##_0}
241 #define TAG(_tag, _cnt) {.tag = (_tag << 16) | _cnt}
256 CHLIST24( 13,
C, Lc, Rc,
L,
R, Lss, Rss, Lsr, Rsr, Cs, LFE, LFE2, Cv, Lv, Rv, Lvss, Rvss, Ts, Lvr, Rvr, Cvr, Cb, Lb, Rb)
333 static const struct {
363 for (
int i = 0;
map[
i].tag & 0xffff;
i += 1 + (
map[
i].tag & 0xffff))
386 int map_layout_nb_channels =
tag & 0xFFFF;
390 if (omitted_channel_map >> map_layout_nb_channels)
397 for (
int i = 0, idx = 0; i < map_layout_nb_channels && idx < nb_channels; i++, omitted_channel_map >>= 1) {
398 if (!(omitted_channel_map & 1)) {
479 uint32_t **pchannel_desc)
504 *pchannel_desc =
NULL;
508 uint32_t *channel_desc;
538 if (channel_desc[
i] == 0) {
544 *pchannel_desc = channel_desc;
553 uint32_t layout_tag, bitmap, num_descr;
565 "bitmap=%"PRIu32
" num_descr=%"PRIu32
"\n",
566 layout_tag, bitmap, num_descr);
568 if (
size < 12ULL + num_descr * 20ULL)
575 if (!num_descr || num_descr < nb_channels) {
576 av_log(
s,
AV_LOG_ERROR,
"got %"PRIu32
" channel descriptions when at least %d were needed\n",
577 num_descr, nb_channels);
581 if (num_descr > nb_channels) {
584 "got %"PRIu32
" channel descriptions when number of channels is %d\n",
585 num_descr, nb_channels);
589 num_descr = nb_channels;
596 for (
int i = 0;
i < num_descr;
i++) {
600 "reached EOF while reading channel layout\n");
623 if (bitmap < 0x40000) {
628 av_log(
s,
AV_LOG_WARNING,
"ignoring channel layout bitmap with %d channels because number of channels is %d\n",
631 }
else if (layout_tag & 0xFFFF) {
632 int nb_channels = layout_tag & 0xFFFF;
730 int nb_omitted_channels =
av_popcount64(omitted_channel_map);
732 if (
layout->nb_channels <= 0 ||
layout->nb_channels > UINT16_MAX - nb_omitted_channels)
735 layout_tag = (
config << 16) | (
layout->nb_channels + nb_omitted_channels);
742 uint8_t *position,
int position_num)
746 if (position_num < layout->nb_channels)
749 for (
int i = 0;
i <
layout->nb_channels;
i++) {
761 if (position[
i] == 127)
770 int stream_structure =
avio_r8(pb);
771 int base_channel_count;
776 stream_structure >>= 4;
777 base_channel_count =
avio_r8(pb);
781 if (stream_structure & 1) {
791 obj_count = base_channel_count - nb_channels;
800 for (
int i = 0;
i < nb_channels;
i++) {
804 if (speaker_pos == 126)
828 uint64_t omitted_channel_map = 0;
829 int omitted_channel_present = 1, channel_order_definition = 0;
833 omitted_channel_present =
byte & 1;
834 channel_order_definition = (
byte >> 1) & 0x7;
837 if (omitted_channel_present)
839 if (!channel_order_definition) {
844 av_log(
s,
AV_LOG_TRACE,
"'chnl' with channel_order_definition %d\n", channel_order_definition);
852 if (stream_structure & 2) {
@ MOV_CH_LAYOUT_QUADRAPHONIC
#define AV_LOG_WARNING
Something somehow does not look correct.
@ AV_CODEC_ID_ADPCM_IMA_QT
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
static const struct MovChannelLayoutMap iso_ch_layout_map[]
This struct describes the properties of an encoded stream.
enum MovChannelLayoutTag * layouts
@ MOV_CH_LAYOUT_DTS_8_0_A
@ AV_CHAN_TOP_SURROUND_LEFT
+110 degrees, Lvs, TpLS
@ 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.
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 CHLIST01(_tag, _1)
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 ...
#define CHLIST24(_tag, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24)
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.
int nb_channels
Number of channels in this layout.
@ MOV_CH_LAYOUT_DTS_6_0_A
static int mov_get_channel_layout(AVChannelLayout *ch_layout, uint32_t tag, uint64_t omitted_channel_map, const struct MovChannelLayoutMap *map)
Get the channel layout for the specified non-special channel layout tag if known.
@ MOV_CH_LAYOUT_MATRIXSTEREO
@ AV_CHAN_SURROUND_DIRECT_LEFT
@ MOV_CH_LAYOUT_MPEG_5_0_A
@ MOV_CH_LAYOUT_MPEG_5_1_D
static enum MovChannelLayoutTag mov_ch_layouts_alac[]
static int mov_get_channel_layout_from_config(int config, AVChannelLayout *layout, uint64_t omitted_channel_map)
Get AVChannelLayout from ISO/IEC 23001-8 ChannelConfiguration.
@ 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
@ AV_CHAN_BOTTOM_FRONT_LEFT
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_MPEG_5_1_C
static const struct MovChannelLayoutMap * find_layout_map(uint32_t tag, const struct MovChannelLayoutMap *map)
@ AV_CHAN_UNKNOWN
Channel contains data, but its position is unknown.
@ 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.
#define CHLIST08(_tag, _1, _2, _3, _4, _5, _6, _7, _8)
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
int ff_mov_read_chnl(AVFormatContext *s, AVIOContext *pb, AVStream *st, int version)
Read 'chnl' tag from the input stream.
@ MOV_CH_LAYOUT_MPEG_7_1_B
#define CHLIST04(_tag, _1, _2, _3, _4)
@ AV_CHAN_SIDE_SURROUND_LEFT
+90 degrees, Lss, SiL
@ MOV_CH_LAYOUT_SMPTE_DTV
AVCodecParameters * codecpar
Codec parameters associated with this stream.
MovChannelLayoutTag
mov 'chan' tag reading/writing.
#define MOV_CH_LAYOUT_MAP
#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
#define MOV_CH_LAYOUT_UNKNOWN
uint64_t avio_rb64(AVIOContext *s)
#define CHLIST05(_tag, _1, _2, _3, _4, _5)
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.
AVChannelLayout ch_layout
The channel layout and number of channels.
@ AV_CHAN_FRONT_RIGHT_OF_CENTER
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.
unsigned int avio_rl32(AVIOContext *s)
An AVChannelLayout holds information about the channel layout of audio data.
#define i(width, name, range_min, range_max)
#define CHLIST07(_tag, _1, _2, _3, _4, _5, _6, _7)
@ 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.
union AVChannelLayout::@522 u
Details about which channels are present in this layout.
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
@ AV_CHAN_TOP_SURROUND_RIGHT
-110 degrees, Rvs, TpRS
@ AV_CHAN_SURROUND_DIRECT_RIGHT
#define av_malloc_array(a, b)
#define CHLIST03(_tag, _1, _2, _3)
@ MOV_CH_LAYOUT_MPEG_6_1_A
#define CHLIST06(_tag, _1, _2, _3, _4, _5, _6)
@ 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
@ AV_CHAN_NONE
Invalid channel index.
@ AV_CHAN_LOW_FREQUENCY_2
void av_channel_layout_uninit(AVChannelLayout *channel_layout)
Free any allocated data in the channel layout and reset the channel count to 0.
static const struct @494 mov_codec_ch_layouts[]
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.
static int is_layout_valid_for_tag(const AVChannelLayout *ch_layout, uint32_t tag, const struct MovChannelLayoutMap *map)
static enum MovChannelLayoutTag mov_ch_layouts_aac[]
@ MOV_CH_LAYOUT_AAC_OCTAGONAL
static enum AVChannel iso_channel_position[]
@ AV_CHAN_TOP_FRONT_CENTER
static uint32_t mov_get_channel_label(enum AVChannel channel)
@ AV_CHAN_SIDE_SURROUND_RIGHT
-90 degrees, Rss, SiR
#define CHLIST02(_tag, _1, _2)
const VDPAUPixFmtMap * map
@ MOV_CH_LAYOUT_AC3_3_1_1
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
@ AV_CHAN_AMBISONIC_BASE
Range of channels between AV_CHAN_AMBISONIC_BASE and AV_CHAN_AMBISONIC_END represent Ambisonic compon...
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
static enum MovChannelLayoutTag mov_ch_layouts_wav[]
static enum MovChannelLayoutTag mov_ch_layouts_ac3[]
@ 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.