#include "parser.h"#include "aac_ac3_parser.h"#include "bitstream.h"#include "mpeg4audio.h"Go to the source code of this file.
Defines | |
| #define | AAC_HEADER_SIZE 7 |
Functions | |
| static int | aac_sync (uint64_t state, AACAC3ParseContext *hdr_info, int *need_next_header, int *new_frame_start) |
| static av_cold int | aac_parse_init (AVCodecParserContext *s1) |
Variables | |
| AVCodecParser | aac_parser |
| #define AAC_HEADER_SIZE 7 |
| static av_cold int aac_parse_init | ( | AVCodecParserContext * | s1 | ) | [static] |
Definition at line 76 of file aac_parser.c.
References AAC_HEADER_SIZE, aac_sync(), AACAC3ParseContext::header_size, s1, and AACAC3ParseContext::sync.
00077 { 00078 AACAC3ParseContext *s = s1->priv_data; 00079 s->header_size = AAC_HEADER_SIZE; 00080 s->sync = aac_sync; 00081 return 0; 00082 }
| static int aac_sync | ( | uint64_t | state, | |
| AACAC3ParseContext * | hdr_info, | |||
| int * | need_next_header, | |||
| int * | new_frame_start | |||
| ) | [static] |
Definition at line 30 of file aac_parser.c.
References AAC_HEADER_SIZE, be2me_64, AACAC3ParseContext::bit_rate, bits, AACAC3ParseContext::channels, ff_mpeg4audio_channels, ff_mpeg4audio_sample_rates, get_bits(), init_get_bits(), AACAC3ParseContext::sample_rate, AACAC3ParseContext::samples, size, skip_bits(), and skip_bits1().
Referenced by aac_parse_init().
00032 { 00033 GetBitContext bits; 00034 int size, rdb, ch, sr; 00035 uint64_t tmp = be2me_64(state); 00036 00037 init_get_bits(&bits, ((uint8_t *)&tmp)+8-AAC_HEADER_SIZE, AAC_HEADER_SIZE * 8); 00038 00039 if(get_bits(&bits, 12) != 0xfff) 00040 return 0; 00041 00042 skip_bits1(&bits); /* id */ 00043 skip_bits(&bits, 2); /* layer */ 00044 skip_bits1(&bits); /* protection_absent */ 00045 skip_bits(&bits, 2); /* profile_objecttype */ 00046 sr = get_bits(&bits, 4); /* sample_frequency_index */ 00047 if(!ff_mpeg4audio_sample_rates[sr]) 00048 return 0; 00049 skip_bits1(&bits); /* private_bit */ 00050 ch = get_bits(&bits, 3); /* channel_configuration */ 00051 if(!ff_mpeg4audio_channels[ch]) 00052 return 0; 00053 skip_bits1(&bits); /* original/copy */ 00054 skip_bits1(&bits); /* home */ 00055 00056 /* adts_variable_header */ 00057 skip_bits1(&bits); /* copyright_identification_bit */ 00058 skip_bits1(&bits); /* copyright_identification_start */ 00059 size = get_bits(&bits, 13); /* aac_frame_length */ 00060 if(size < AAC_HEADER_SIZE) 00061 return 0; 00062 00063 skip_bits(&bits, 11); /* adts_buffer_fullness */ 00064 rdb = get_bits(&bits, 2); /* number_of_raw_data_blocks_in_frame */ 00065 00066 hdr_info->channels = ff_mpeg4audio_channels[ch]; 00067 hdr_info->sample_rate = ff_mpeg4audio_sample_rates[sr]; 00068 hdr_info->samples = (rdb + 1) * 1024; 00069 hdr_info->bit_rate = size * 8 * hdr_info->sample_rate / hdr_info->samples; 00070 00071 *need_next_header = 0; 00072 *new_frame_start = 1; 00073 return size; 00074 }
Initial value:
{
{ CODEC_ID_AAC },
sizeof(AACAC3ParseContext),
aac_parse_init,
ff_aac_ac3_parse,
NULL,
}
Definition at line 85 of file aac_parser.c.
1.5.1