FFmpeg
libavcodec
aac.h
Go to the documentation of this file.
1
/*
2
* AAC definitions and structures
3
* Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org )
4
* Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com )
5
*
6
* This file is part of FFmpeg.
7
*
8
* FFmpeg is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU Lesser General Public
10
* License as published by the Free Software Foundation; either
11
* version 2.1 of the License, or (at your option) any later version.
12
*
13
* FFmpeg is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
* Lesser General Public License for more details.
17
*
18
* You should have received a copy of the GNU Lesser General Public
19
* License along with FFmpeg; if not, write to the Free Software
20
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
*/
22
23
/**
24
* @file
25
* AAC definitions and structures
26
* @author Oded Shimon ( ods15 ods15 dyndns org )
27
* @author Maxim Gavrilov ( maxim.gavrilov gmail com )
28
*/
29
30
#ifndef AVCODEC_AAC_H
31
#define AVCODEC_AAC_H
32
33
#define MAX_CHANNELS 64
34
#define MAX_ELEM_ID 64
35
36
#define TNS_MAX_ORDER 20
37
#define MAX_LTP_LONG_SFB 40
38
39
enum
RawDataBlockType
{
40
TYPE_SCE
,
41
TYPE_CPE
,
42
TYPE_CCE
,
43
TYPE_LFE
,
44
TYPE_DSE
,
45
TYPE_PCE
,
46
TYPE_FIL
,
47
TYPE_END
,
48
};
49
50
enum
ExtensionPayloadID
{
51
EXT_FILL
,
52
EXT_FILL_DATA
,
53
EXT_DATA_ELEMENT
,
54
EXT_DYNAMIC_RANGE
= 0xb,
55
EXT_SBR_DATA
= 0xd,
56
EXT_SBR_DATA_CRC
= 0xe,
57
};
58
59
enum
WindowSequence
{
60
ONLY_LONG_SEQUENCE
,
61
LONG_START_SEQUENCE
,
62
EIGHT_SHORT_SEQUENCE
,
63
LONG_STOP_SEQUENCE
,
64
};
65
66
enum
BandType
{
67
ZERO_BT
= 0,
///< Scalefactors and spectral data are all zero.
68
FIRST_PAIR_BT
= 5,
///< This and later band types encode two values (rather than four) with one code word.
69
ESC_BT
= 11,
///< Spectral data are coded with an escape sequence.
70
RESERVED_BT
= 12,
///< Band types following are encoded differently from others.
71
NOISE_BT
= 13,
///< Spectral data are scaled white noise not coded in the bitstream.
72
INTENSITY_BT2
= 14,
///< Scalefactor data are intensity stereo positions (out of phase).
73
INTENSITY_BT
= 15,
///< Scalefactor data are intensity stereo positions (in phase).
74
};
75
76
enum
ChannelPosition
{
77
AAC_CHANNEL_OFF
= 0,
78
AAC_CHANNEL_FRONT
= 1,
79
AAC_CHANNEL_SIDE
= 2,
80
AAC_CHANNEL_BACK
= 3,
81
AAC_CHANNEL_LFE
= 4,
82
AAC_CHANNEL_CC
= 5,
83
};
84
85
#define MAX_PREDICTORS 672
86
87
#define SCALE_DIV_512 36
///< scalefactor difference that corresponds to scale difference in 512 times
88
#define SCALE_ONE_POS 140
///< scalefactor index that corresponds to scale=1.0
89
#define SCALE_MAX_POS 255
///< scalefactor index maximum value
90
#define SCALE_MAX_DIFF 60
///< maximum scalefactor difference allowed by standard
91
#define SCALE_DIFF_ZERO 60
///< codebook index corresponding to zero scalefactor indices difference
92
93
#define POW_SF2_ZERO 200
///< ff_aac_pow2sf_tab index corresponding to pow(2, 0);
94
95
#define NOISE_PRE 256
///< preamble for NOISE_BT, put in bitstream with the first noise band
96
#define NOISE_PRE_BITS 9
///< length of preamble
97
#define NOISE_OFFSET 90
///< subtracted from global gain, used as offset for the preamble
98
99
typedef
struct
Pulse
{
100
int
num_pulse
;
101
int
start
;
102
int
pos
[4];
103
int
amp
[4];
104
}
Pulse
;
105
106
static
inline
int
ff_aac_sample_rate_idx
(
int
rate)
107
{
108
if
(92017 <= rate)
return
0;
109
else
if
(75132 <= rate)
return
1;
110
else
if
(55426 <= rate)
return
2;
111
else
if
(46009 <= rate)
return
3;
112
else
if
(37566 <= rate)
return
4;
113
else
if
(27713 <= rate)
return
5;
114
else
if
(23004 <= rate)
return
6;
115
else
if
(18783 <= rate)
return
7;
116
else
if
(13856 <= rate)
return
8;
117
else
if
(11502 <= rate)
return
9;
118
else
if
(9391 <= rate)
return
10;
119
else
return
11;
120
}
121
122
#endif
/* AVCODEC_AAC_H */
AAC_CHANNEL_BACK
@ AAC_CHANNEL_BACK
Definition:
aac.h:80
TYPE_FIL
@ TYPE_FIL
Definition:
aac.h:46
EXT_FILL
@ EXT_FILL
Definition:
aac.h:51
Pulse::num_pulse
int num_pulse
Definition:
aac.h:100
TYPE_PCE
@ TYPE_PCE
Definition:
aac.h:45
ff_aac_sample_rate_idx
static int ff_aac_sample_rate_idx(int rate)
Definition:
aac.h:106
EXT_DYNAMIC_RANGE
@ EXT_DYNAMIC_RANGE
Definition:
aac.h:54
TYPE_CPE
@ TYPE_CPE
Definition:
aac.h:41
Pulse::amp
int amp[4]
Definition:
aac.h:103
Pulse::pos
int pos[4]
Definition:
aac.h:102
Pulse::start
int start
Definition:
aac.h:101
ZERO_BT
@ ZERO_BT
Scalefactors and spectral data are all zero.
Definition:
aac.h:67
NOISE_BT
@ NOISE_BT
Spectral data are scaled white noise not coded in the bitstream.
Definition:
aac.h:71
EIGHT_SHORT_SEQUENCE
@ EIGHT_SHORT_SEQUENCE
Definition:
aac.h:62
INTENSITY_BT2
@ INTENSITY_BT2
Scalefactor data are intensity stereo positions (out of phase).
Definition:
aac.h:72
TYPE_DSE
@ TYPE_DSE
Definition:
aac.h:44
ChannelPosition
ChannelPosition
Definition:
aac.h:76
INTENSITY_BT
@ INTENSITY_BT
Scalefactor data are intensity stereo positions (in phase).
Definition:
aac.h:73
AAC_CHANNEL_SIDE
@ AAC_CHANNEL_SIDE
Definition:
aac.h:79
AAC_CHANNEL_FRONT
@ AAC_CHANNEL_FRONT
Definition:
aac.h:78
AAC_CHANNEL_OFF
@ AAC_CHANNEL_OFF
Definition:
aac.h:77
ONLY_LONG_SEQUENCE
@ ONLY_LONG_SEQUENCE
Definition:
aac.h:60
TYPE_END
@ TYPE_END
Definition:
aac.h:47
BandType
BandType
Definition:
aac.h:66
ESC_BT
@ ESC_BT
Spectral data are coded with an escape sequence.
Definition:
aac.h:69
EXT_FILL_DATA
@ EXT_FILL_DATA
Definition:
aac.h:52
RawDataBlockType
RawDataBlockType
Definition:
aac.h:39
LONG_STOP_SEQUENCE
@ LONG_STOP_SEQUENCE
Definition:
aac.h:63
TYPE_LFE
@ TYPE_LFE
Definition:
aac.h:43
TYPE_SCE
@ TYPE_SCE
Definition:
aac.h:40
AAC_CHANNEL_LFE
@ AAC_CHANNEL_LFE
Definition:
aac.h:81
RESERVED_BT
@ RESERVED_BT
Band types following are encoded differently from others.
Definition:
aac.h:70
LONG_START_SEQUENCE
@ LONG_START_SEQUENCE
Definition:
aac.h:61
EXT_SBR_DATA_CRC
@ EXT_SBR_DATA_CRC
Definition:
aac.h:56
EXT_SBR_DATA
@ EXT_SBR_DATA
Definition:
aac.h:55
FIRST_PAIR_BT
@ FIRST_PAIR_BT
This and later band types encode two values (rather than four) with one code word.
Definition:
aac.h:68
TYPE_CCE
@ TYPE_CCE
Definition:
aac.h:42
ExtensionPayloadID
ExtensionPayloadID
Definition:
aac.h:50
EXT_DATA_ELEMENT
@ EXT_DATA_ELEMENT
Definition:
aac.h:53
Pulse
Definition:
aac.h:99
AAC_CHANNEL_CC
@ AAC_CHANNEL_CC
Definition:
aac.h:82
WindowSequence
WindowSequence
Definition:
aac.h:59
Generated on Sun Dec 8 2024 19:21:41 for FFmpeg by
1.8.17