MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / ff_adts_header_parse

Function ff_adts_header_parse

libavcodec/adts_header.c:30–74  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28#include "libavutil/avassert.h"
29
30int ff_adts_header_parse(GetBitContext *gbc, AACADTSHeaderInfo *hdr)
31{
32 int size, rdb, ch, sr;
33 int aot, crc_abs;
34
35 memset(hdr, 0, sizeof(*hdr));
36
37 if (get_bits(gbc, 12) != 0xfff)
38 return AAC_PARSE_ERROR_SYNC;
39
40 skip_bits1(gbc); /* id */
41 skip_bits(gbc, 2); /* layer */
42 crc_abs = get_bits1(gbc); /* protection_absent */
43 aot = get_bits(gbc, 2); /* profile_objecttype */
44 sr = get_bits(gbc, 4); /* sample_frequency_index */
45 if (!ff_mpeg4audio_sample_rates[sr])
46 return AAC_PARSE_ERROR_SAMPLE_RATE;
47 skip_bits1(gbc); /* private_bit */
48 ch = get_bits(gbc, 3); /* channel_configuration */
49
50 skip_bits1(gbc); /* original/copy */
51 skip_bits1(gbc); /* home */
52
53 /* adts_variable_header */
54 skip_bits1(gbc); /* copyright_identification_bit */
55 skip_bits1(gbc); /* copyright_identification_start */
56 size = get_bits(gbc, 13); /* aac_frame_length */
57 if (size < AV_AAC_ADTS_HEADER_SIZE)
58 return AAC_PARSE_ERROR_FRAME_SIZE;
59
60 skip_bits(gbc, 11); /* adts_buffer_fullness */
61 rdb = get_bits(gbc, 2); /* number_of_raw_data_blocks_in_frame */
62
63 hdr->object_type = aot + 1;
64 hdr->chan_config = ch;
65 hdr->crc_absent = crc_abs;
66 hdr->num_aac_frames = rdb + 1;
67 hdr->sampling_index = sr;
68 hdr->sample_rate = ff_mpeg4audio_sample_rates[sr];
69 hdr->samples = (rdb + 1) * 1024;
70 hdr->bit_rate = size * 8 * hdr->sample_rate / hdr->samples;
71 hdr->frame_length = size;
72
73 return size;
74}
75
76int ff_adts_header_parse_buf(const uint8_t buf[AV_AAC_ADTS_HEADER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE],
77 AACADTSHeaderInfo *hdr)

Callers 3

ftr_decode_frameFunction · 0.85
ff_adts_header_parse_bufFunction · 0.85
parse_adts_frame_headerFunction · 0.85

Calls 4

skip_bits1Function · 0.85
skip_bitsFunction · 0.85
get_bits1Function · 0.85
get_bitsFunction · 0.70

Tested by

no test coverage detected