FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
mov_chan.c File Reference
#include <stdint.h>
#include "libavutil/avassert.h"
#include "libavutil/channel_layout.h"
#include "libavcodec/codec_id.h"
#include "mov_chan.h"

Go to the source code of this file.

Data Structures

struct  MovChannelLayoutMap
 

Macros

#define TAG(_0)   {.tag = _0}
 
#define ID(_0)   {.id = c_##_0}
 
#define CHLIST(_0, ...)   TAG(_0), __VA_ARGS__
 
#define CHLIST01(_0, _1)   CHLIST(_0, ID(_1))
 
#define CHLIST02(_0, _1, _2)   CHLIST(_0, ID(_1), ID(_2))
 
#define CHLIST03(_0, _1, _2, _3)   CHLIST(_0, ID(_1), ID(_2), ID(_3))
 
#define CHLIST04(_0, _1, _2, _3, _4)   CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4))
 
#define CHLIST05(_0, _1, _2, _3, _4, _5)   CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5))
 
#define CHLIST06(_0, _1, _2, _3, _4, _5, _6)   CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6))
 
#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))
 
#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))
 
#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))
 
#define CHLIST16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16)
 
#define CHLIST21(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21)
 

Enumerations

enum  {
  c_L = AV_CHAN_FRONT_LEFT, c_R = AV_CHAN_FRONT_RIGHT, c_C = AV_CHAN_FRONT_CENTER, c_LFE = AV_CHAN_LOW_FREQUENCY,
  c_Rls = AV_CHAN_BACK_LEFT, c_Rrs = AV_CHAN_BACK_RIGHT, c_Lc = AV_CHAN_FRONT_LEFT_OF_CENTER, c_Rc = AV_CHAN_FRONT_RIGHT_OF_CENTER,
  c_Cs = AV_CHAN_BACK_CENTER, c_Ls = AV_CHAN_SIDE_LEFT, c_Rs = AV_CHAN_SIDE_RIGHT, c_Ts = AV_CHAN_TOP_CENTER,
  c_Vhl = AV_CHAN_TOP_FRONT_LEFT, c_Vhc = AV_CHAN_TOP_FRONT_CENTER, c_Vhr = AV_CHAN_TOP_FRONT_RIGHT, c_Rlt = AV_CHAN_TOP_BACK_LEFT,
  c_Rrt = AV_CHAN_TOP_BACK_RIGHT, c_Lt = AV_CHAN_STEREO_LEFT, c_Rt = AV_CHAN_STEREO_RIGHT, c_Lw = AV_CHAN_WIDE_LEFT,
  c_Rw = AV_CHAN_WIDE_RIGHT, c_Lsd = AV_CHAN_SURROUND_DIRECT_LEFT, c_Rsd = AV_CHAN_SURROUND_DIRECT_RIGHT, c_LFE2 = AV_CHAN_LOW_FREQUENCY_2,
  c_W = AV_CHAN_AMBISONIC_BASE, c_Y = AV_CHAN_AMBISONIC_BASE + 1, c_Z = AV_CHAN_AMBISONIC_BASE + 2, c_X = AV_CHAN_AMBISONIC_BASE + 3,
  c_LFE1 = AV_CHAN_LOW_FREQUENCY, c_Csd = AV_CHAN_NONE, c_HI = AV_CHAN_NONE, c_VI = AV_CHAN_NONE,
  c_Haptic = AV_CHAN_NONE
}
 mov 'chan' tag reading/writing. More...
 

Functions

static const struct MovChannelLayoutMapfind_layout_map (uint32_t tag)
 
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. More...
 
static enum AVChannel mov_get_channel_id (uint32_t label)
 
static uint32_t mov_get_channel_label (enum AVChannel channel)
 
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. More...
 
int ff_mov_read_chan (AVFormatContext *s, AVIOContext *pb, AVStream *st, int64_t size)
 Read 'chan' tag from the input stream. More...
 
int ff_mov_get_channel_config_from_layout (const AVChannelLayout *layout, int *config)
 Get ISO/IEC 23001-8 ChannelConfiguration from AVChannelLayout. More...
 
int ff_mov_get_channel_layout_from_config (int config, AVChannelLayout *layout)
 Get AVChannelLayout from ISO/IEC 23001-8 ChannelConfiguration. More...
 
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. More...
 
int ff_mov_read_chnl (AVFormatContext *s, AVIOContext *pb, AVStream *st)
 Read 'chnl' tag from the input stream. More...
 

Variables

static const struct MovChannelLayoutMap mov_ch_layout_map []
 
static enum MovChannelLayoutTag mov_ch_layouts_aac []
 
static enum MovChannelLayoutTag mov_ch_layouts_ac3 []
 
static enum MovChannelLayoutTag mov_ch_layouts_alac []
 
static enum MovChannelLayoutTag mov_ch_layouts_wav []
 
struct {
   enum AVCodecID   codec_id
 
   enum MovChannelLayoutTag *   layouts
 
mov_codec_ch_layouts []
 
static const AVChannelLayout iso_channel_configuration []
 
static enum AVChannel iso_channel_position []
 

Macro Definition Documentation

◆ TAG

#define TAG (   _0)    {.tag = _0}

Definition at line 83 of file mov_chan.c.

◆ ID

#define ID (   _0)    {.id = c_##_0}

Definition at line 84 of file mov_chan.c.

◆ CHLIST

#define CHLIST (   _0,
  ... 
)    TAG(_0), __VA_ARGS__

Definition at line 85 of file mov_chan.c.

◆ CHLIST01

#define CHLIST01 (   _0,
  _1 
)    CHLIST(_0, ID(_1))

Definition at line 86 of file mov_chan.c.

◆ CHLIST02

#define CHLIST02 (   _0,
  _1,
  _2 
)    CHLIST(_0, ID(_1), ID(_2))

Definition at line 87 of file mov_chan.c.

◆ CHLIST03

#define CHLIST03 (   _0,
  _1,
  _2,
  _3 
)    CHLIST(_0, ID(_1), ID(_2), ID(_3))

Definition at line 88 of file mov_chan.c.

◆ CHLIST04

#define CHLIST04 (   _0,
  _1,
  _2,
  _3,
  _4 
)    CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4))

Definition at line 89 of file mov_chan.c.

◆ CHLIST05

#define CHLIST05 (   _0,
  _1,
  _2,
  _3,
  _4,
  _5 
)    CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5))

Definition at line 90 of file mov_chan.c.

◆ CHLIST06

#define CHLIST06 (   _0,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6 
)    CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6))

Definition at line 91 of file mov_chan.c.

◆ CHLIST07

#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))

Definition at line 92 of file mov_chan.c.

◆ CHLIST08

#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))

Definition at line 93 of file mov_chan.c.

◆ CHLIST09

#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))

Definition at line 94 of file mov_chan.c.

◆ CHLIST16

#define CHLIST16 (   _0,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  _10,
  _11,
  _12,
  _13,
  _14,
  _15,
  _16 
)
Value:
CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8), ID(_9), ID(_10), \
ID(_11), ID(_12), ID(_13), ID(_14), ID(_15), ID(_16))

Definition at line 95 of file mov_chan.c.

◆ CHLIST21

#define CHLIST21 (   _0,
  _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  _10,
  _11,
  _12,
  _13,
  _14,
  _15,
  _16,
  _17,
  _18,
  _19,
  _20,
  _21 
)
Value:
CHLIST(_0, ID(_1), ID(_2), ID(_3), ID(_4), ID(_5), ID(_6), ID(_7), ID(_8), ID(_9), ID(_10), \
ID(_11), ID(_12), ID(_13), ID(_14), ID(_15), ID(_16), ID(_17), ID(_18), ID(_19), ID(_20), ID(_21))

Definition at line 98 of file mov_chan.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

mov 'chan' tag reading/writing.

Author
Justin Ruggles
Enumerator
c_L 
c_R 
c_C 
c_LFE 
c_Rls 
c_Rrs 
c_Lc 
c_Rc 
c_Cs 
c_Ls 
c_Rs 
c_Ts 
c_Vhl 
c_Vhc 
c_Vhr 
c_Rlt 
c_Rrt 
c_Lt 
c_Rt 
c_Lw 
c_Rw 
c_Lsd 
c_Rsd 
c_LFE2 
c_W 
c_Y 
c_Z 
c_X 
c_LFE1 
c_Csd 
c_HI 
c_VI 
c_Haptic 

Definition at line 33 of file mov_chan.c.

Function Documentation

◆ find_layout_map()

static const struct MovChannelLayoutMap* find_layout_map ( uint32_t  tag)
static

Definition at line 281 of file mov_chan.c.

Referenced by ff_mov_get_channel_layout_tag(), and mov_get_channel_layout().

◆ mov_get_channel_layout()

static int mov_get_channel_layout ( AVChannelLayout ch_layout,
uint32_t  tag 
)
static

Get the channel layout for the specified non-special channel layout tag if known.

Parameters
[in,out]ch_layoutchannel layout
[in]tagchannel layout tag
Returns
<0 on error

Definition at line 305 of file mov_chan.c.

Referenced by ff_mov_read_chan().

◆ mov_get_channel_id()

static enum AVChannel mov_get_channel_id ( uint32_t  label)
static

Definition at line 329 of file mov_chan.c.

Referenced by ff_mov_read_chan().

◆ mov_get_channel_label()

static uint32_t mov_get_channel_label ( enum AVChannel  channel)
static

Definition at line 348 of file mov_chan.c.

Referenced by ff_mov_get_channel_layout_tag().

◆ ff_mov_get_channel_layout_tag()

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.

If the layout tag was not found, use a channel bitmap if possible.

Parameters
[in]codec_idcodec id
[in]channel_layoutchannel layout
[out]bitmapchannel bitmap
Returns
channel layout tag

Definition at line 367 of file mov_chan.c.

Referenced by mov_write_chan_tag().

◆ ff_mov_read_chan()

int ff_mov_read_chan ( AVFormatContext s,
AVIOContext pb,
AVStream st,
int64_t  size 
)

Read 'chan' tag from the input stream.

Parameters
sAVFormatContext
pbAVIOContext
stThe stream to set codec values for
sizeRemaining size in the 'chan' tag
Returns
0 if ok, or negative AVERROR code on failure

Definition at line 443 of file mov_chan.c.

Referenced by aiff_read_header(), mov_read_chan(), and read_header().

◆ ff_mov_get_channel_config_from_layout()

int ff_mov_get_channel_config_from_layout ( const AVChannelLayout layout,
int config 
)

Get ISO/IEC 23001-8 ChannelConfiguration from AVChannelLayout.

Definition at line 724 of file mov_chan.c.

Referenced by mov_write_chnl_tag().

◆ ff_mov_get_channel_layout_from_config()

int ff_mov_get_channel_layout_from_config ( int  config,
AVChannelLayout layout 
)

Get AVChannelLayout from ISO/IEC 23001-8 ChannelConfiguration.

Returns
0 for success, -1 for doesn't match, layout is untouched on failure

Definition at line 738 of file mov_chan.c.

Referenced by ff_mov_read_chnl().

◆ ff_mov_get_channel_positions_from_layout()

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.

Definition at line 748 of file mov_chan.c.

Referenced by mov_write_chnl_tag().

◆ ff_mov_read_chnl()

int ff_mov_read_chnl ( AVFormatContext s,
AVIOContext pb,
AVStream st 
)

Read 'chnl' tag from the input stream.

Parameters
sAVFormatContext
pbAVIOContext
stThe stream to set codec values for
Returns
0 if ok, or negative AVERROR code on failure

Definition at line 775 of file mov_chan.c.

Referenced by mov_read_chnl().

Variable Documentation

◆ mov_ch_layout_map

const struct MovChannelLayoutMap mov_ch_layout_map[]
static

Definition at line 102 of file mov_chan.c.

Referenced by find_layout_map().

◆ mov_ch_layouts_aac

enum MovChannelLayoutTag mov_ch_layouts_aac[]
static

◆ mov_ch_layouts_ac3

enum MovChannelLayoutTag mov_ch_layouts_ac3[]
static

◆ mov_ch_layouts_alac

enum MovChannelLayoutTag mov_ch_layouts_alac[]
static

◆ mov_ch_layouts_wav

enum MovChannelLayoutTag mov_ch_layouts_wav[]
static

◆ codec_id

enum AVCodecID codec_id

Definition at line 260 of file mov_chan.c.

Referenced by ff_mov_get_channel_layout_tag().

◆ layouts

enum MovChannelLayoutTag* layouts

◆ mov_codec_ch_layouts

const { ... } mov_codec_ch_layouts[]

◆ iso_channel_configuration

const AVChannelLayout iso_channel_configuration[]
static

◆ iso_channel_position

enum AVChannel iso_channel_position[]
static

Definition at line 594 of file mov_chan.c.

Referenced by ff_mov_get_channel_positions_from_layout(), and ff_mov_read_chnl().

MOV_CH_LAYOUT_QUADRAPHONIC
@ MOV_CH_LAYOUT_QUADRAPHONIC
Definition: mov_chan.h:64
AV_CODEC_ID_PCM_S16LE
@ AV_CODEC_ID_PCM_S16LE
Definition: codec_id.h:328
AV_CODEC_ID_PCM_F32BE
@ AV_CODEC_ID_PCM_F32BE
Definition: codec_id.h:348
AV_CODEC_ID_AC3
@ AV_CODEC_ID_AC3
Definition: codec_id.h:443
MOV_CH_LAYOUT_MPEG_5_1_A
@ MOV_CH_LAYOUT_MPEG_5_1_A
Definition: mov_chan.h:77
MOV_CH_LAYOUT_DTS_8_0_A
@ MOV_CH_LAYOUT_DTS_8_0_A
Definition: mov_chan.h:134
MOV_CH_LAYOUT_AC3_3_0_1
@ MOV_CH_LAYOUT_AC3_3_0_1
Definition: mov_chan.h:107
AV_CODEC_ID_ALAC
@ AV_CODEC_ID_ALAC
Definition: codec_id.h:456
CHLIST
#define CHLIST(_0,...)
Definition: mov_chan.c:85
MOV_CH_LAYOUT_ITU_2_1
@ MOV_CH_LAYOUT_ITU_2_1
Definition: mov_chan.h:87
MOV_CH_LAYOUT_AAC_7_0
@ MOV_CH_LAYOUT_AAC_7_0
Definition: mov_chan.h:100
MOV_CH_LAYOUT_AC3_3_0
@ MOV_CH_LAYOUT_AC3_3_0
Definition: mov_chan.h:105
MOV_CH_LAYOUT_DTS_6_0_A
@ MOV_CH_LAYOUT_DTS_6_0_A
Definition: mov_chan.h:125
MOV_CH_LAYOUT_MATRIXSTEREO
@ MOV_CH_LAYOUT_MATRIXSTEREO
Definition: mov_chan.h:59
MOV_CH_LAYOUT_MPEG_5_0_A
@ MOV_CH_LAYOUT_MPEG_5_0_A
Definition: mov_chan.h:73
AV_CODEC_ID_PCM_S16BE
@ AV_CODEC_ID_PCM_S16BE
Definition: codec_id.h:329
MOV_CH_LAYOUT_MPEG_5_1_D
@ MOV_CH_LAYOUT_MPEG_5_1_D
Definition: mov_chan.h:80
mov_ch_layouts_alac
static enum MovChannelLayoutTag mov_ch_layouts_alac[]
Definition: mov_chan.c:232
MOV_CH_LAYOUT_MONO
@ MOV_CH_LAYOUT_MONO
Definition: mov_chan.h:56
MOV_CH_LAYOUT_ITU_2_2
@ MOV_CH_LAYOUT_ITU_2_2
Definition: mov_chan.h:88
AV_CODEC_ID_PCM_S8
@ AV_CODEC_ID_PCM_S8
Definition: codec_id.h:332
MOV_CH_LAYOUT_AC3_1_0_1
@ MOV_CH_LAYOUT_AC3_1_0_1
Definition: mov_chan.h:104
MOV_CH_LAYOUT_MPEG_5_1_C
@ MOV_CH_LAYOUT_MPEG_5_1_C
Definition: mov_chan.h:79
MOV_CH_LAYOUT_AAC_6_0
@ MOV_CH_LAYOUT_AAC_6_0
Definition: mov_chan.h:98
MOV_CH_LAYOUT_AC3_3_1
@ MOV_CH_LAYOUT_AC3_3_1
Definition: mov_chan.h:106
MOV_CH_LAYOUT_MPEG_7_1_B
@ MOV_CH_LAYOUT_MPEG_7_1_B
Definition: mov_chan.h:83
MOV_CH_LAYOUT_SMPTE_DTV
@ MOV_CH_LAYOUT_SMPTE_DTV
Definition: mov_chan.h:86
MOV_CH_LAYOUT_STEREO
@ MOV_CH_LAYOUT_STEREO
Definition: mov_chan.h:57
NULL
#define NULL
Definition: coverity.c:32
MOV_CH_LAYOUT_DTS_4_1
@ MOV_CH_LAYOUT_DTS_4_1
Definition: mov_chan.h:124
MOV_CH_LAYOUT_MPEG_3_0_B
@ MOV_CH_LAYOUT_MPEG_3_0_B
Definition: mov_chan.h:70
AV_CODEC_ID_AAC
@ AV_CODEC_ID_AAC
Definition: codec_id.h:442
ID
#define ID(_0)
Definition: mov_chan.c:84
AV_CODEC_ID_PCM_S24LE
@ AV_CODEC_ID_PCM_S24LE
Definition: codec_id.h:340
MOV_CH_LAYOUT_AAC_6_1
@ MOV_CH_LAYOUT_AAC_6_1
Definition: mov_chan.h:99
MOV_CH_LAYOUT_MPEG_7_1_A
@ MOV_CH_LAYOUT_MPEG_7_1_A
Definition: mov_chan.h:82
MOV_CH_LAYOUT_DTS_6_1_A
@ MOV_CH_LAYOUT_DTS_6_1_A
Definition: mov_chan.h:128
MOV_CH_LAYOUT_MPEG_3_0_A
@ MOV_CH_LAYOUT_MPEG_3_0_A
Definition: mov_chan.h:69
MOV_CH_LAYOUT_DVD_18
@ MOV_CH_LAYOUT_DVD_18
Definition: mov_chan.h:94
MOV_CH_LAYOUT_MPEG_5_0_D
@ MOV_CH_LAYOUT_MPEG_5_0_D
Definition: mov_chan.h:76
AV_CODEC_ID_NONE
@ AV_CODEC_ID_NONE
Definition: codec_id.h:50
AV_CODEC_ID_PCM_F64BE
@ AV_CODEC_ID_PCM_F64BE
Definition: codec_id.h:350
MOV_CH_LAYOUT_MPEG_6_1_A
@ MOV_CH_LAYOUT_MPEG_6_1_A
Definition: mov_chan.h:81
AV_CODEC_ID_PCM_S32BE
@ AV_CODEC_ID_PCM_S32BE
Definition: codec_id.h:337
MOV_CH_LAYOUT_AC3_2_1_1
@ MOV_CH_LAYOUT_AC3_2_1_1
Definition: mov_chan.h:108
MOV_CH_LAYOUT_MPEG_4_0_B
@ MOV_CH_LAYOUT_MPEG_4_0_B
Definition: mov_chan.h:72
MOV_CH_LAYOUT_MPEG_5_0_C
@ MOV_CH_LAYOUT_MPEG_5_0_C
Definition: mov_chan.h:75
MOV_CH_LAYOUT_DVD_4
@ MOV_CH_LAYOUT_DVD_4
Definition: mov_chan.h:89
MOV_CH_LAYOUT_MPEG_7_1_C
@ MOV_CH_LAYOUT_MPEG_7_1_C
Definition: mov_chan.h:84
mov_ch_layouts_aac
static enum MovChannelLayoutTag mov_ch_layouts_aac[]
Definition: mov_chan.c:187
MOV_CH_LAYOUT_AAC_OCTAGONAL
@ MOV_CH_LAYOUT_AAC_OCTAGONAL
Definition: mov_chan.h:101
AV_CODEC_ID_PCM_S32LE
@ AV_CODEC_ID_PCM_S32LE
Definition: codec_id.h:336
MOV_CH_LAYOUT_DTS_3_1
@ MOV_CH_LAYOUT_DTS_3_1
Definition: mov_chan.h:123
AV_CODEC_ID_PCM_U8
@ AV_CODEC_ID_PCM_U8
Definition: codec_id.h:333
MOV_CH_LAYOUT_AC3_3_1_1
@ MOV_CH_LAYOUT_AC3_3_1_1
Definition: mov_chan.h:109
AV_CODEC_ID_PCM_F64LE
@ AV_CODEC_ID_PCM_F64LE
Definition: codec_id.h:351
AV_CODEC_ID_PCM_F32LE
@ AV_CODEC_ID_PCM_F32LE
Definition: codec_id.h:349
mov_ch_layouts_wav
static enum MovChannelLayoutTag mov_ch_layouts_wav[]
Definition: mov_chan.c:244
AV_CODEC_ID_PCM_S24BE
@ AV_CODEC_ID_PCM_S24BE
Definition: codec_id.h:341
mov_ch_layouts_ac3
static enum MovChannelLayoutTag mov_ch_layouts_ac3[]
Definition: mov_chan.c:214