FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
aac_parser.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
*
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
#include "
parser.h
"
24
#include "
aac_ac3_parser.h
"
25
#include "
aacadtsdec.h
"
26
#include "
get_bits.h
"
27
#include "
mpeg4audio.h
"
28
29
static
int
aac_sync
(uint64_t
state
,
AACAC3ParseContext
*hdr_info,
30
int
*need_next_header,
int
*new_frame_start)
31
{
32
GetBitContext
bits
;
33
AACADTSHeaderInfo
hdr;
34
int
size
;
35
union
{
36
uint64_t u64;
37
uint8_t
u8[8 +
FF_INPUT_BUFFER_PADDING_SIZE
];
38
} tmp;
39
40
tmp.u64 =
av_be2ne64
(state);
41
init_get_bits
(&bits, tmp.u8+8-
AAC_ADTS_HEADER_SIZE
,
AAC_ADTS_HEADER_SIZE
* 8);
42
43
if
((size =
avpriv_aac_parse_header
(&bits, &hdr)) < 0)
44
return
0;
45
*need_next_header = 0;
46
*new_frame_start = 1;
47
hdr_info->
sample_rate
= hdr.
sample_rate
;
48
hdr_info->
channels
=
ff_mpeg4audio_channels
[hdr.
chan_config
];
49
hdr_info->
samples
= hdr.
samples
;
50
hdr_info->
bit_rate
= hdr.
bit_rate
;
51
return
size
;
52
}
53
54
static
av_cold
int
aac_parse_init
(
AVCodecParserContext
*
s1
)
55
{
56
AACAC3ParseContext
*
s
= s1->
priv_data
;
57
s->
header_size
=
AAC_ADTS_HEADER_SIZE
;
58
s->
sync
=
aac_sync
;
59
return
0;
60
}
61
62
63
AVCodecParser
ff_aac_parser
= {
64
.
codec_ids
= {
AV_CODEC_ID_AAC
},
65
.priv_data_size =
sizeof
(
AACAC3ParseContext
),
66
.parser_init =
aac_parse_init
,
67
.parser_parse =
ff_aac_ac3_parse
,
68
.parser_close =
ff_parse_close
,
69
};
Generated on Sun Mar 8 2015 02:34:46 for FFmpeg by
1.8.2