FFmpeg
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 "
adts_header.h
"
26
#include "
adts_parser.h
"
27
#include "
get_bits.h
"
28
#include "
mpeg4audio.h
"
29
30
static
int
aac_sync
(uint64_t
state
,
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 +
AV_INPUT_BUFFER_PADDING_SIZE
];
38
}
tmp
;
39
40
tmp
.u64 =
av_be2ne64
(
state
);
41
init_get_bits
(&
bits
,
tmp
.u8 + 8 -
AV_AAC_ADTS_HEADER_SIZE
,
42
AV_AAC_ADTS_HEADER_SIZE
* 8);
43
44
if
((
size
=
ff_adts_header_parse
(&
bits
, &hdr)) < 0)
45
return
0;
46
*need_next_header = 0;
47
*new_frame_start = 1;
48
return
size
;
49
}
50
51
static
av_cold
int
aac_parse_init
(
AVCodecParserContext
*
s1
)
52
{
53
AACAC3ParseContext
*
s
=
s1
->priv_data;
54
s
->header_size =
AV_AAC_ADTS_HEADER_SIZE
;
55
s
->sync =
aac_sync
;
56
return
0;
57
}
58
59
60
const
AVCodecParser
ff_aac_parser
= {
61
.
codec_ids
= {
AV_CODEC_ID_AAC
},
62
.priv_data_size =
sizeof
(
AACAC3ParseContext
),
63
.parser_init =
aac_parse_init
,
64
.parser_parse =
ff_aac_ac3_parse
,
65
.parser_close =
ff_parse_close
,
66
};
aac_sync
static int aac_sync(uint64_t state, int *need_next_header, int *new_frame_start)
Definition:
aac_parser.c:30
ff_aac_parser
const AVCodecParser ff_aac_parser
Definition:
aac_parser.c:60
AV_AAC_ADTS_HEADER_SIZE
#define AV_AAC_ADTS_HEADER_SIZE
Definition:
adts_parser.h:25
aac_ac3_parser.h
av_be2ne64
#define av_be2ne64(x)
Definition:
bswap.h:96
tmp
static uint8_t tmp[11]
Definition:
aes_ctr.c:28
ff_parse_close
void ff_parse_close(AVCodecParserContext *s)
Definition:
parser.c:288
init_get_bits
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext.
Definition:
get_bits.h:514
mpeg4audio.h
ff_adts_header_parse
int ff_adts_header_parse(GetBitContext *gbc, AACADTSHeaderInfo *hdr)
Parse the ADTS frame header to the end of the variable header, which is the first 54 bits.
Definition:
adts_header.c:30
GetBitContext
Definition:
get_bits.h:108
av_cold
#define av_cold
Definition:
attributes.h:90
s
#define s(width, name)
Definition:
cbs_vp9.c:198
s1
#define s1
Definition:
regdef.h:38
bits
uint8_t bits
Definition:
vp3data.h:128
get_bits.h
ff_aac_ac3_parse
int ff_aac_ac3_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size)
Definition:
aac_ac3_parser.c:32
AACAC3ParseContext
Definition:
aac_ac3_parser.h:41
AV_CODEC_ID_AAC
@ AV_CODEC_ID_AAC
Definition:
codec_id.h:444
AVCodecParser::codec_ids
int codec_ids[7]
Definition:
avcodec.h:2934
size
int size
Definition:
twinvq_data.h:10344
parser.h
AVCodecParserContext
Definition:
avcodec.h:2774
adts_parser.h
AV_INPUT_BUFFER_PADDING_SIZE
#define AV_INPUT_BUFFER_PADDING_SIZE
Definition:
defs.h:40
aac_parse_init
static av_cold int aac_parse_init(AVCodecParserContext *s1)
Definition:
aac_parser.c:51
state
static struct @362 state
adts_header.h
AVCodecParser
Definition:
avcodec.h:2933
AACADTSHeaderInfo
Definition:
adts_header.h:28
Generated on Thu Apr 18 2024 22:41:38 for FFmpeg by
1.8.17