ffmpeg / libavcodec / fftinternal.h @ 7087ce08
History  View  Annotate  Download (2.25 KB)
1 
/*


2 
* This file is part of Libav.

3 
*

4 
* Libav is free software; you can redistribute it and/or

5 
* modify it under the terms of the GNU Lesser General Public

6 
* License as published by the Free Software Foundation; either

7 
* version 2.1 of the License, or (at your option) any later version.

8 
*

9 
* Libav is distributed in the hope that it will be useful,

10 
* but WITHOUT ANY WARRANTY; without even the implied warranty of

11 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

12 
* Lesser General Public License for more details.

13 
*

14 
* You should have received a copy of the GNU Lesser General Public

15 
* License along with Libav; if not, write to the Free Software

16 
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 021101301 USA

17 
*/

18  
19 
#ifndef AVCODEC_FFT_INTERNAL_H

20 
#define AVCODEC_FFT_INTERNAL_H

21  
22 
#if CONFIG_FFT_FLOAT

23  
24 
#define FIX15(v) (v)

25 
#define sqrthalf (float)M_SQRT1_2 
26  
27 
#define BF(x, y, a, b) do { \ 
28 
x = a  b; \ 
29 
y = a + b; \ 
30 
} while (0) 
31  
32 
#define CMUL(dre, dim, are, aim, bre, bim) do { \ 
33 
(dre) = (are) * (bre)  (aim) * (bim); \ 
34 
(dim) = (are) * (bim) + (aim) * (bre); \ 
35 
} while (0) 
36  
37 
#else

38  
39 
#include "libavutil/intmath.h" 
40 
#include "mathops.h" 
41  
42 
#define SCALE_FLOAT(a, bits) lrint((a) * (double)(1 << (bits))) 
43 
#define FIX15(a) av_clip(SCALE_FLOAT(a, 15), 32767, 32767) 
44  
45 
#define sqrthalf ((int16_t)((1<<15)*M_SQRT1_2)) 
46  
47 
#define BF(x, y, a, b) do { \ 
48 
x = (a  b) >> 1; \

49 
y = (a + b) >> 1; \

50 
} while (0) 
51  
52 
#define CMUL(dre, dim, are, aim, bre, bim) do { \ 
53 
(dre) = (MUL16(are, bre)  MUL16(aim, bim)) >> 15; \

54 
(dim) = (MUL16(are, bim) + MUL16(aim, bre)) >> 15; \

55 
} while (0) 
56  
57 
#endif /* CONFIG_FFT_FLOAT */ 
58  
59 
#define ff_imdct_calc_c FFT_NAME(ff_imdct_calc_c)

60 
#define ff_imdct_half_c FFT_NAME(ff_imdct_half_c)

61 
#define ff_mdct_calc_c FFT_NAME(ff_mdct_calc_c)

62  
63 
void ff_imdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); 
64 
void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input); 
65 
void ff_mdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); 
66  
67 
#endif /* AVCODEC_FFT_INTERNAL_H */ 