annotate ac3_parser.c @ 6582:7d40da88f0c7 libavcodec

Crop parameters are unsigned, having them negative could be bad and lead to crashes or maybe exploits (not checked at all if this is possible).
author michael
date Fri, 11 Apr 2008 12:57:49 +0000
parents 5e7c69ebc019
children 1980eba5fd0e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
1 /*
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
2 * AC3 parser
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
3 * Copyright (c) 2003 Fabrice Bellard.
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
4 * Copyright (c) 2003 Michael Niedermayer.
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
5 *
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
6 * This file is part of FFmpeg.
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
7 *
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
12 *
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
16 * Lesser General Public License for more details.
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
17 *
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
21 */
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
22
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
23 #include "parser.h"
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
24 #include "ac3_parser.h"
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
25 #include "aac_ac3_parser.h"
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
26 #include "bitstream.h"
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
27
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
28
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
29 #define AC3_HEADER_SIZE 7
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
30
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
31
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
32 static const uint8_t eac3_blocks[4] = {
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
33 1, 2, 3, 6
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
34 };
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
35
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
36
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
37 int ff_ac3_parse_header(const uint8_t buf[7], AC3HeaderInfo *hdr)
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
38 {
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
39 GetBitContext gbc;
6116
4f8fcb40bf2c remove unneeded variables from AC3HeaderInfo
jbr
parents: 6005
diff changeset
40 int frame_size_code;
6117
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
41 int num_blocks;
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
42
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
43 memset(hdr, 0, sizeof(*hdr));
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
44
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
45 init_get_bits(&gbc, buf, 54);
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
46
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
47 hdr->sync_word = get_bits(&gbc, 16);
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
48 if(hdr->sync_word != 0x0B77)
5680
5ae5a74b0e4b better AC3 header error reporting
jbr
parents: 5331
diff changeset
49 return AC3_PARSE_ERROR_SYNC;
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
50
6117
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
51 /* read ahead to bsid to distinguish between AC-3 and E-AC-3 */
6005
7d9dddd54817 cosmetics: rename common ac3 variables
jbr
parents: 6003
diff changeset
52 hdr->bitstream_id = show_bits_long(&gbc, 29) & 0x1F;
6117
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
53 if(hdr->bitstream_id > 16)
5680
5ae5a74b0e4b better AC3 header error reporting
jbr
parents: 5331
diff changeset
54 return AC3_PARSE_ERROR_BSID;
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
55
6117
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
56 if(hdr->bitstream_id <= 10) {
6118
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
57 /* Normal AC-3 */
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
58 hdr->crc1 = get_bits(&gbc, 16);
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
59 hdr->sr_code = get_bits(&gbc, 2);
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
60 if(hdr->sr_code == 3)
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
61 return AC3_PARSE_ERROR_SAMPLE_RATE;
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
62
6118
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
63 frame_size_code = get_bits(&gbc, 6);
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
64 if(frame_size_code > 37)
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
65 return AC3_PARSE_ERROR_FRAME_SIZE;
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
66
6118
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
67 skip_bits(&gbc, 5); // skip bsid, already got it
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
68
6118
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
69 skip_bits(&gbc, 3); // skip bitstream mode
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
70 hdr->channel_mode = get_bits(&gbc, 3);
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
71 if((hdr->channel_mode & 1) && hdr->channel_mode != AC3_CHMODE_MONO) {
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
72 skip_bits(&gbc, 2); // skip center mix level
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
73 }
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
74 if(hdr->channel_mode & 4) {
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
75 skip_bits(&gbc, 2); // skip surround mix level
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
76 }
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
77 if(hdr->channel_mode == AC3_CHMODE_STEREO) {
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
78 skip_bits(&gbc, 2); // skip dolby surround mode
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
79 }
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
80 hdr->lfe_on = get_bits1(&gbc);
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
81
6118
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
82 hdr->sr_shift = FFMAX(hdr->bitstream_id, 8) - 8;
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
83 hdr->sample_rate = ff_ac3_sample_rate_tab[hdr->sr_code] >> hdr->sr_shift;
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
84 hdr->bit_rate = (ff_ac3_bitrate_tab[frame_size_code>>1] * 1000) >> hdr->sr_shift;
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
85 hdr->channels = ff_ac3_channels_tab[hdr->channel_mode] + hdr->lfe_on;
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
86 hdr->frame_size = ff_ac3_frame_size_tab[frame_size_code][hdr->sr_code] * 2;
6540
b0d44aec1ec0 change name from stream type to frame type in AC3 code
bwolowiec
parents: 6539
diff changeset
87 hdr->frame_type = EAC3_FRAME_TYPE_INDEPENDENT;
6117
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
88 } else {
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
89 /* Enhanced AC-3 */
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
90 hdr->crc1 = 0;
6540
b0d44aec1ec0 change name from stream type to frame type in AC3 code
bwolowiec
parents: 6539
diff changeset
91 hdr->frame_type = get_bits(&gbc, 2);
b0d44aec1ec0 change name from stream type to frame type in AC3 code
bwolowiec
parents: 6539
diff changeset
92 if(hdr->frame_type == EAC3_FRAME_TYPE_RESERVED)
b0d44aec1ec0 change name from stream type to frame type in AC3 code
bwolowiec
parents: 6539
diff changeset
93 return AC3_PARSE_ERROR_FRAME_TYPE;
6529
5542d0c04a55 using stream type in eac3 parser
bwolowiec
parents: 6527
diff changeset
94
6117
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
95 skip_bits(&gbc, 3); // skip substream id
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
96
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
97 hdr->frame_size = (get_bits(&gbc, 11) + 1) << 1;
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
98 if(hdr->frame_size < AC3_HEADER_SIZE)
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
99 return AC3_PARSE_ERROR_FRAME_SIZE;
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
100
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
101 hdr->sr_code = get_bits(&gbc, 2);
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
102 if (hdr->sr_code == 3) {
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
103 int sr_code2 = get_bits(&gbc, 2);
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
104 if(sr_code2 == 3)
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
105 return AC3_PARSE_ERROR_SAMPLE_RATE;
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
106 hdr->sample_rate = ff_ac3_sample_rate_tab[sr_code2] / 2;
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
107 hdr->sr_shift = 1;
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
108 num_blocks = 6;
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
109 } else {
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
110 num_blocks = eac3_blocks[get_bits(&gbc, 2)];
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
111 hdr->sample_rate = ff_ac3_sample_rate_tab[hdr->sr_code];
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
112 hdr->sr_shift = 0;
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
113 }
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
114
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
115 hdr->channel_mode = get_bits(&gbc, 3);
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
116 hdr->lfe_on = get_bits1(&gbc);
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
117
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
118 hdr->bit_rate = (uint32_t)(8.0 * hdr->frame_size * hdr->sample_rate /
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
119 (num_blocks * 256.0));
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
120 hdr->channels = ff_ac3_channels_tab[hdr->channel_mode] + hdr->lfe_on;
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
121 }
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
122
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
123 return 0;
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
124 }
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
125
6576
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
126 static int ac3_sync(AACAC3ParseContext *hdr_info, AACAC3FrameFlag *flag)
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
127 {
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
128 int err;
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
129 AC3HeaderInfo hdr;
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
130
6576
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
131 err = ff_ac3_parse_header(hdr_info->inbuf, &hdr);
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
132
6117
01b1342e717b move E-AC3 header parsing to ff_ac3_parse_header()
jbr
parents: 6116
diff changeset
133 if(err < 0)
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
134 return 0;
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
135
6527
32b984487899 Pass AACAC3ParseContext to sync() instead of individual arguments. Patch by
jbr
parents: 6517
diff changeset
136 hdr_info->sample_rate = hdr.sample_rate;
32b984487899 Pass AACAC3ParseContext to sync() instead of individual arguments. Patch by
jbr
parents: 6517
diff changeset
137 hdr_info->bit_rate = hdr.bit_rate;
32b984487899 Pass AACAC3ParseContext to sync() instead of individual arguments. Patch by
jbr
parents: 6517
diff changeset
138 hdr_info->channels = hdr.channels;
32b984487899 Pass AACAC3ParseContext to sync() instead of individual arguments. Patch by
jbr
parents: 6517
diff changeset
139 hdr_info->samples = AC3_FRAME_SIZE;
6539
04763b6fd4f0 removal of stream_type in AACAC3ParseContext and adding AACAC3FrameFlag
bwolowiec
parents: 6530
diff changeset
140
6576
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
141 switch(hdr.frame_type){
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
142 case EAC3_FRAME_TYPE_INDEPENDENT:
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
143 *flag = FRAME_START;
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
144 break;
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
145 case EAC3_FRAME_TYPE_DEPENDENT:
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
146 *flag = FRAME_CONTINUATION;
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
147 break;
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
148 case EAC3_FRAME_TYPE_AC3_CONVERT:
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
149 *flag = FRAME_COMPLETE;
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
150 break;
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
151 }
6118
76801e61ddc4 cosmetics: indentation after last commit
jbr
parents: 6117
diff changeset
152 return hdr.frame_size;
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
153 }
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
154
6517
48759bfbd073 Apply 'cold' attribute to init/uninit functions in libavcodec
zuxy
parents: 6118
diff changeset
155 static av_cold int ac3_parse_init(AVCodecParserContext *s1)
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
156 {
4942
b42e963c8149 cosmetics: rename for consistency after previous aac and ac3 parsers move
aurel
parents: 4941
diff changeset
157 AACAC3ParseContext *s = s1->priv_data;
6576
5e7c69ebc019 undo changes in aac_ac3_parser
bwolowiec
parents: 6566
diff changeset
158 s->inbuf_ptr = s->inbuf;
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
159 s->header_size = AC3_HEADER_SIZE;
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
160 s->sync = ac3_sync;
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
161 return 0;
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
162 }
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
163
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
164
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
165 AVCodecParser ac3_parser = {
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
166 { CODEC_ID_AC3 },
4942
b42e963c8149 cosmetics: rename for consistency after previous aac and ac3 parsers move
aurel
parents: 4941
diff changeset
167 sizeof(AACAC3ParseContext),
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
168 ac3_parse_init,
4942
b42e963c8149 cosmetics: rename for consistency after previous aac and ac3 parsers move
aurel
parents: 4941
diff changeset
169 ff_aac_ac3_parse,
4941
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
170 NULL,
c3ee5c30c297 move aac and ac3 parsers in their own files
aurel
parents:
diff changeset
171 };