mpegaudio: move compute_antialias_float() to mpegaudiodec_float.c
[ffmpeg.git] / libavcodec / mpegaudiodec_float.c
1 /*
2  * Float MPEG Audio decoder
3  * Copyright (c) 2010 Michael Niedermayer
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21
22 #define CONFIG_FLOAT 1
23 #include "mpegaudiodec.c"
24
25 void ff_mpa_synth_filter_float(MPADecodeContext *s, float *synth_buf_ptr,
26                                int *synth_buf_offset,
27                                float *window, int *dither_state,
28                                float *samples, int incr,
29                                float sb_samples[SBLIMIT])
30 {
31     float *synth_buf;
32     int offset;
33
34     offset = *synth_buf_offset;
35     synth_buf = synth_buf_ptr + offset;
36
37     s->dct.dct32(synth_buf, sb_samples);
38     s->apply_window_mp3(synth_buf, window, dither_state, samples, incr);
39
40     offset = (offset - 32) & 511;
41     *synth_buf_offset = offset;
42 }
43
44 static void compute_antialias_float(MPADecodeContext *s,
45                               GranuleDef *g)
46 {
47     float *ptr;
48     int n, i;
49
50     /* we antialias only "long" bands */
51     if (g->block_type == 2) {
52         if (!g->switch_point)
53             return;
54         /* XXX: check this for 8000Hz case */
55         n = 1;
56     } else {
57         n = SBLIMIT - 1;
58     }
59
60     ptr = g->sb_hybrid + 18;
61     for(i = n;i > 0;i--) {
62         float tmp0, tmp1;
63         float *csa = &csa_table_float[0][0];
64 #define FLOAT_AA(j)\
65         tmp0= ptr[-1-j];\
66         tmp1= ptr[   j];\
67         ptr[-1-j] = tmp0 * csa[0+4*j] - tmp1 * csa[1+4*j];\
68         ptr[   j] = tmp0 * csa[1+4*j] + tmp1 * csa[0+4*j];
69
70         FLOAT_AA(0)
71         FLOAT_AA(1)
72         FLOAT_AA(2)
73         FLOAT_AA(3)
74         FLOAT_AA(4)
75         FLOAT_AA(5)
76         FLOAT_AA(6)
77         FLOAT_AA(7)
78
79         ptr += 18;
80     }
81 }
82
83 #if CONFIG_MP1FLOAT_DECODER
84 AVCodec mp1float_decoder =
85 {
86     "mp1float",
87     AVMEDIA_TYPE_AUDIO,
88     CODEC_ID_MP1,
89     sizeof(MPADecodeContext),
90     decode_init,
91     NULL,
92     NULL,
93     decode_frame,
94     CODEC_CAP_PARSE_ONLY,
95     .flush= flush,
96     .long_name= NULL_IF_CONFIG_SMALL("MP1 (MPEG audio layer 1)"),
97 };
98 #endif
99 #if CONFIG_MP2FLOAT_DECODER
100 AVCodec mp2float_decoder =
101 {
102     "mp2float",
103     AVMEDIA_TYPE_AUDIO,
104     CODEC_ID_MP2,
105     sizeof(MPADecodeContext),
106     decode_init,
107     NULL,
108     NULL,
109     decode_frame,
110     CODEC_CAP_PARSE_ONLY,
111     .flush= flush,
112     .long_name= NULL_IF_CONFIG_SMALL("MP2 (MPEG audio layer 2)"),
113 };
114 #endif
115 #if CONFIG_MP3FLOAT_DECODER
116 AVCodec mp3float_decoder =
117 {
118     "mp3float",
119     AVMEDIA_TYPE_AUDIO,
120     CODEC_ID_MP3,
121     sizeof(MPADecodeContext),
122     decode_init,
123     NULL,
124     NULL,
125     decode_frame,
126     CODEC_CAP_PARSE_ONLY,
127     .flush= flush,
128     .long_name= NULL_IF_CONFIG_SMALL("MP3 (MPEG audio layer 3)"),
129 };
130 #endif
131 #if CONFIG_MP3ADUFLOAT_DECODER
132 AVCodec mp3adufloat_decoder =
133 {
134     "mp3adufloat",
135     AVMEDIA_TYPE_AUDIO,
136     CODEC_ID_MP3ADU,
137     sizeof(MPADecodeContext),
138     decode_init,
139     NULL,
140     NULL,
141     decode_frame_adu,
142     CODEC_CAP_PARSE_ONLY,
143     .flush= flush,
144     .long_name= NULL_IF_CONFIG_SMALL("ADU (Application Data Unit) MP3 (MPEG audio layer 3)"),
145 };
146 #endif
147 #if CONFIG_MP3ON4FLOAT_DECODER
148 AVCodec mp3on4float_decoder =
149 {
150     "mp3on4float",
151     AVMEDIA_TYPE_AUDIO,
152     CODEC_ID_MP3ON4,
153     sizeof(MP3On4DecodeContext),
154     decode_init_mp3on4,
155     NULL,
156     decode_close_mp3on4,
157     decode_frame_mp3on4,
158     .flush= flush,
159     .long_name= NULL_IF_CONFIG_SMALL("MP3onMP4"),
160 };
161 #endif