Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * This file is part of FFmpeg.
  3.  *
  4.  * FFmpeg 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.  * FFmpeg 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 FFmpeg; if not, write to the Free Software
  16.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  17.  */
  18.  
  19. #include "libavutil/attributes.h"
  20. #include "libavutil/mem.h"
  21. #include "avfft.h"
  22. #include "fft.h"
  23. #include "rdft.h"
  24. #include "dct.h"
  25.  
  26. /* FFT */
  27.  
  28. FFTContext *av_fft_init(int nbits, int inverse)
  29. {
  30.     FFTContext *s = av_mallocz(sizeof(*s));
  31.  
  32.     if (s && ff_fft_init(s, nbits, inverse))
  33.         av_freep(&s);
  34.  
  35.     return s;
  36. }
  37.  
  38. void av_fft_permute(FFTContext *s, FFTComplex *z)
  39. {
  40.     s->fft_permute(s, z);
  41. }
  42.  
  43. void av_fft_calc(FFTContext *s, FFTComplex *z)
  44. {
  45.     s->fft_calc(s, z);
  46. }
  47.  
  48. av_cold void av_fft_end(FFTContext *s)
  49. {
  50.     if (s) {
  51.         ff_fft_end(s);
  52.         av_free(s);
  53.     }
  54. }
  55.  
  56. #if CONFIG_MDCT
  57.  
  58. FFTContext *av_mdct_init(int nbits, int inverse, double scale)
  59. {
  60.     FFTContext *s = av_malloc(sizeof(*s));
  61.  
  62.     if (s && ff_mdct_init(s, nbits, inverse, scale))
  63.         av_freep(&s);
  64.  
  65.     return s;
  66. }
  67.  
  68. void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input)
  69. {
  70.     s->imdct_calc(s, output, input);
  71. }
  72.  
  73. void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input)
  74. {
  75.     s->imdct_half(s, output, input);
  76. }
  77.  
  78. void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input)
  79. {
  80.     s->mdct_calc(s, output, input);
  81. }
  82.  
  83. av_cold void av_mdct_end(FFTContext *s)
  84. {
  85.     if (s) {
  86.         ff_mdct_end(s);
  87.         av_free(s);
  88.     }
  89. }
  90.  
  91. #endif /* CONFIG_MDCT */
  92.  
  93. #if CONFIG_RDFT
  94.  
  95. RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans)
  96. {
  97.     RDFTContext *s = av_malloc(sizeof(*s));
  98.  
  99.     if (s && ff_rdft_init(s, nbits, trans))
  100.         av_freep(&s);
  101.  
  102.     return s;
  103. }
  104.  
  105. void av_rdft_calc(RDFTContext *s, FFTSample *data)
  106. {
  107.     s->rdft_calc(s, data);
  108. }
  109.  
  110. av_cold void av_rdft_end(RDFTContext *s)
  111. {
  112.     if (s) {
  113.         ff_rdft_end(s);
  114.         av_free(s);
  115.     }
  116. }
  117.  
  118. #endif /* CONFIG_RDFT */
  119.  
  120. #if CONFIG_DCT
  121.  
  122. DCTContext *av_dct_init(int nbits, enum DCTTransformType inverse)
  123. {
  124.     DCTContext *s = av_malloc(sizeof(*s));
  125.  
  126.     if (s && ff_dct_init(s, nbits, inverse))
  127.         av_freep(&s);
  128.  
  129.     return s;
  130. }
  131.  
  132. void av_dct_calc(DCTContext *s, FFTSample *data)
  133. {
  134.     s->dct_calc(s, data);
  135. }
  136.  
  137. av_cold void av_dct_end(DCTContext *s)
  138. {
  139.     if (s) {
  140.         ff_dct_end(s);
  141.         av_free(s);
  142.     }
  143. }
  144.  
  145. #endif /* CONFIG_DCT */
  146.