|
|
@ -26,8 +26,6 @@ |
|
|
|
#include "get_bits.h" |
|
|
|
#include "get_bits.h" |
|
|
|
#include "mpeg4audio.h" |
|
|
|
#include "mpeg4audio.h" |
|
|
|
|
|
|
|
|
|
|
|
#define AAC_HEADER_SIZE 7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int ff_aac_parse_header(GetBitContext *gbc, AACADTSHeaderInfo *hdr) |
|
|
|
int ff_aac_parse_header(GetBitContext *gbc, AACADTSHeaderInfo *hdr) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int size, rdb, ch, sr; |
|
|
|
int size, rdb, ch, sr; |
|
|
@ -56,7 +54,7 @@ int ff_aac_parse_header(GetBitContext *gbc, AACADTSHeaderInfo *hdr) |
|
|
|
skip_bits1(gbc); /* copyright_identification_bit */ |
|
|
|
skip_bits1(gbc); /* copyright_identification_bit */ |
|
|
|
skip_bits1(gbc); /* copyright_identification_start */ |
|
|
|
skip_bits1(gbc); /* copyright_identification_start */ |
|
|
|
size = get_bits(gbc, 13); /* aac_frame_length */ |
|
|
|
size = get_bits(gbc, 13); /* aac_frame_length */ |
|
|
|
if(size < AAC_HEADER_SIZE) |
|
|
|
if(size < AAC_ADTS_HEADER_SIZE) |
|
|
|
return AAC_AC3_PARSE_ERROR_FRAME_SIZE; |
|
|
|
return AAC_AC3_PARSE_ERROR_FRAME_SIZE; |
|
|
|
|
|
|
|
|
|
|
|
skip_bits(gbc, 11); /* adts_buffer_fullness */ |
|
|
|
skip_bits(gbc, 11); /* adts_buffer_fullness */ |
|
|
@ -86,7 +84,7 @@ static int aac_sync(uint64_t state, AACAC3ParseContext *hdr_info, |
|
|
|
} tmp; |
|
|
|
} tmp; |
|
|
|
|
|
|
|
|
|
|
|
tmp.u64 = be2me_64(state); |
|
|
|
tmp.u64 = be2me_64(state); |
|
|
|
init_get_bits(&bits, tmp.u8+8-AAC_HEADER_SIZE, AAC_HEADER_SIZE * 8); |
|
|
|
init_get_bits(&bits, tmp.u8+8-AAC_ADTS_HEADER_SIZE, AAC_ADTS_HEADER_SIZE * 8); |
|
|
|
|
|
|
|
|
|
|
|
if ((size = ff_aac_parse_header(&bits, &hdr)) < 0) |
|
|
|
if ((size = ff_aac_parse_header(&bits, &hdr)) < 0) |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
@ -102,7 +100,7 @@ static int aac_sync(uint64_t state, AACAC3ParseContext *hdr_info, |
|
|
|
static av_cold int aac_parse_init(AVCodecParserContext *s1) |
|
|
|
static av_cold int aac_parse_init(AVCodecParserContext *s1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
AACAC3ParseContext *s = s1->priv_data; |
|
|
|
AACAC3ParseContext *s = s1->priv_data; |
|
|
|
s->header_size = AAC_HEADER_SIZE; |
|
|
|
s->header_size = AAC_ADTS_HEADER_SIZE; |
|
|
|
s->sync = aac_sync; |
|
|
|
s->sync = aac_sync; |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|