FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
aacadtsdec.c
Go to the documentation of this file.
1
/*
2
* Audio and Video frame extraction
3
* Copyright (c) 2003 Fabrice Bellard
4
* Copyright (c) 2003 Michael Niedermayer
5
* Copyright (c) 2009 Alex Converse
6
*
7
* This file is part of FFmpeg.
8
*
9
* FFmpeg is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU Lesser General Public
11
* License as published by the Free Software Foundation; either
12
* version 2.1 of the License, or (at your option) any later version.
13
*
14
* FFmpeg is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* Lesser General Public License for more details.
18
*
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with FFmpeg; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
*/
23
24
#include "
aac_ac3_parser.h
"
25
#include "
aacadtsdec.h
"
26
#include "
get_bits.h
"
27
#include "
mpeg4audio.h
"
28
29
int
avpriv_aac_parse_header
(
GetBitContext
*gbc,
AACADTSHeaderInfo
*hdr)
30
{
31
int
size
, rdb, ch, sr;
32
int
aot, crc_abs;
33
34
if
(
get_bits
(gbc, 12) != 0xfff)
35
return
AAC_AC3_PARSE_ERROR_SYNC
;
36
37
skip_bits1
(gbc);
/* id */
38
skip_bits
(gbc, 2);
/* layer */
39
crc_abs =
get_bits1
(gbc);
/* protection_absent */
40
aot =
get_bits
(gbc, 2);
/* profile_objecttype */
41
sr =
get_bits
(gbc, 4);
/* sample_frequency_index */
42
if
(!
avpriv_mpeg4audio_sample_rates
[sr])
43
return
AAC_AC3_PARSE_ERROR_SAMPLE_RATE
;
44
skip_bits1
(gbc);
/* private_bit */
45
ch =
get_bits
(gbc, 3);
/* channel_configuration */
46
47
skip_bits1
(gbc);
/* original/copy */
48
skip_bits1
(gbc);
/* home */
49
50
/* adts_variable_header */
51
skip_bits1
(gbc);
/* copyright_identification_bit */
52
skip_bits1
(gbc);
/* copyright_identification_start */
53
size =
get_bits
(gbc, 13);
/* aac_frame_length */
54
if
(size <
AAC_ADTS_HEADER_SIZE
)
55
return
AAC_AC3_PARSE_ERROR_FRAME_SIZE
;
56
57
skip_bits
(gbc, 11);
/* adts_buffer_fullness */
58
rdb =
get_bits
(gbc, 2);
/* number_of_raw_data_blocks_in_frame */
59
60
hdr->
object_type
= aot + 1;
61
hdr->
chan_config
= ch;
62
hdr->
crc_absent
= crc_abs;
63
hdr->
num_aac_frames
= rdb + 1;
64
hdr->
sampling_index
= sr;
65
hdr->
sample_rate
=
avpriv_mpeg4audio_sample_rates
[sr];
66
hdr->
samples
= (rdb + 1) * 1024;
67
hdr->
bit_rate
= size * 8 * hdr->
sample_rate
/ hdr->
samples
;
68
69
return
size
;
70
}
Generated on Sat May 25 2013 03:58:30 for FFmpeg by
1.8.2