annotate mpegaudiodec_float.c @ 11762:91b9bd17e79c libavcodec

aacenc: Trellis over scalefactors using an estimated codebook rather than every codebook. The minimal codebook to encode the band without clipping is used (as is done in the TLS).
author alexc
date Tue, 25 May 2010 18:31:55 +0000
parents eb9e142ea51f
children 5e8770f9d8f1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11707
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
1 /*
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
2 * Float MPEG Audio decoder
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
3 * Copyright (c) 2010 Michael Niedermayer
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
4 *
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
5 * This file is part of FFmpeg.
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
6 *
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
11 *
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
15 * Lesser General Public License for more details.
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
16 *
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
20 */
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
21
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
22 #define CONFIG_FLOAT 1
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
23 #include "mpegaudiodec.c"
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
24
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
25 #if CONFIG_MP1FLOAT_DECODER
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
26 AVCodec mp1float_decoder =
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
27 {
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
28 "mp1float",
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
29 AVMEDIA_TYPE_AUDIO,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
30 CODEC_ID_MP1,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
31 sizeof(MPADecodeContext),
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
32 decode_init,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
33 NULL,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
34 NULL,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
35 decode_frame,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
36 CODEC_CAP_PARSE_ONLY,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
37 .flush= flush,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
38 .long_name= NULL_IF_CONFIG_SMALL("MP1 (MPEG audio layer 1)"),
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
39 };
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
40 #endif
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
41 #if CONFIG_MP2FLOAT_DECODER
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
42 AVCodec mp2float_decoder =
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
43 {
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
44 "mp2float",
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
45 AVMEDIA_TYPE_AUDIO,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
46 CODEC_ID_MP2,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
47 sizeof(MPADecodeContext),
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
48 decode_init,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
49 NULL,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
50 NULL,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
51 decode_frame,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
52 CODEC_CAP_PARSE_ONLY,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
53 .flush= flush,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
54 .long_name= NULL_IF_CONFIG_SMALL("MP2 (MPEG audio layer 2)"),
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
55 };
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
56 #endif
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
57 #if CONFIG_MP3FLOAT_DECODER
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
58 AVCodec mp3float_decoder =
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
59 {
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
60 "mp3float",
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
61 AVMEDIA_TYPE_AUDIO,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
62 CODEC_ID_MP3,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
63 sizeof(MPADecodeContext),
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
64 decode_init,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
65 NULL,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
66 NULL,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
67 decode_frame,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
68 CODEC_CAP_PARSE_ONLY,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
69 .flush= flush,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
70 .long_name= NULL_IF_CONFIG_SMALL("MP3 (MPEG audio layer 3)"),
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
71 };
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
72 #endif
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
73 #if CONFIG_MP3ADUFLOAT_DECODER
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
74 AVCodec mp3adufloat_decoder =
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
75 {
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
76 "mp3adufloat",
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
77 AVMEDIA_TYPE_AUDIO,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
78 CODEC_ID_MP3ADU,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
79 sizeof(MPADecodeContext),
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
80 decode_init,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
81 NULL,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
82 NULL,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
83 decode_frame_adu,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
84 CODEC_CAP_PARSE_ONLY,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
85 .flush= flush,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
86 .long_name= NULL_IF_CONFIG_SMALL("ADU (Application Data Unit) MP3 (MPEG audio layer 3)"),
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
87 };
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
88 #endif
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
89 #if CONFIG_MP3ON4FLOAT_DECODER
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
90 AVCodec mp3on4float_decoder =
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
91 {
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
92 "mp3on4float",
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
93 AVMEDIA_TYPE_AUDIO,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
94 CODEC_ID_MP3ON4,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
95 sizeof(MP3On4DecodeContext),
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
96 decode_init_mp3on4,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
97 NULL,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
98 decode_close_mp3on4,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
99 decode_frame_mp3on4,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
100 .flush= flush,
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
101 .long_name= NULL_IF_CONFIG_SMALL("MP3onMP4"),
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
102 };
eb9e142ea51f float based mp1/mp2/mp3 decoders.
michael
parents:
diff changeset
103 #endif