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.