Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * AAC defines
  3.  *
  4.  * This file is part of FFmpeg.
  5.  *
  6.  * FFmpeg is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU Lesser General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * FFmpeg is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * Lesser General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Lesser General Public
  17.  * License along with FFmpeg; if not, write to the Free Software
  18.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  19.  */
  20.  
  21. #ifndef AVCODEC_AAC_DEFINES_H
  22. #define AVCODEC_AAC_DEFINES_H
  23.  
  24. #ifndef USE_FIXED
  25. #define USE_FIXED 0
  26. #endif
  27.  
  28. #if USE_FIXED
  29.  
  30. #include "libavutil/softfloat.h"
  31.  
  32. #define FFT_FLOAT    0
  33. #define FFT_FIXED_32 1
  34.  
  35. #define AAC_RENAME(x)       x ## _fixed
  36. #define AAC_RENAME_32(x)    x ## _fixed_32
  37. #define INTFLOAT int
  38. #define INT64FLOAT          int64_t
  39. #define SHORTFLOAT int16_t
  40. #define AAC_FLOAT SoftFloat
  41. #define AAC_SIGNE           int
  42. #define FIXR(a)             ((int)((a) * 1 + 0.5))
  43. #define FIXR10(a)           ((int)((a) * 1024.0 + 0.5))
  44. #define Q23(a)              (int)((a) * 8388608.0 + 0.5)
  45. #define Q30(x)              (int)((x)*1073741824.0 + 0.5)
  46. #define Q31(x)              (int)((x)*2147483648.0 + 0.5)
  47. #define RANGE15(x)          x
  48. #define GET_GAIN(x, y)      (-(y) << (x)) + 1024
  49. #define AAC_MUL16(x, y)     (int)(((int64_t)(x) * (y) + 0x8000) >> 16)
  50. #define AAC_MUL26(x, y)     (int)(((int64_t)(x) * (y) + 0x2000000) >> 26)
  51. #define AAC_MUL30(x, y)     (int)(((int64_t)(x) * (y) + 0x20000000) >> 30)
  52. #define AAC_MUL31(x, y)     (int)(((int64_t)(x) * (y) + 0x40000000) >> 31)
  53. #define AAC_MADD28(x, y, a, b) (int)((((int64_t)(x) * (y)) + \
  54.                                       ((int64_t)(a) * (b)) + \
  55.                                         0x8000000) >> 28)
  56. #define AAC_MADD30(x, y, a, b) (int)((((int64_t)(x) * (y)) + \
  57.                                       ((int64_t)(a) * (b)) + \
  58.                                         0x20000000) >> 30)
  59. #define AAC_MADD30_V8(x, y, a, b, c, d, e, f) (int)((((int64_t)(x) * (y)) + \
  60.                                                      ((int64_t)(a) * (b)) + \
  61.                                                      ((int64_t)(c) * (d)) + \
  62.                                                      ((int64_t)(e) * (f)) + \
  63.                                                        0x20000000) >> 30)
  64. #define AAC_MSUB30(x, y, a, b) (int)((((int64_t)(x) * (y)) - \
  65.                                       ((int64_t)(a) * (b)) + \
  66.                                         0x20000000) >> 30)
  67. #define AAC_MSUB30_V8(x, y, a, b, c, d, e, f) (int)((((int64_t)(x) * (y)) + \
  68.                                                      ((int64_t)(a) * (b)) - \
  69.                                                      ((int64_t)(c) * (d)) - \
  70.                                                      ((int64_t)(e) * (f)) + \
  71.                                                        0x20000000) >> 30)
  72. #define AAC_MSUB31_V3(x, y, z)    (int)((((int64_t)(x) * (z)) - \
  73.                                       ((int64_t)(y) * (z)) + \
  74.                                         0x40000000) >> 31)
  75. #define AAC_HALF_SUM(x, y)  (x) >> 1 + (y) >> 1
  76. #define AAC_SRA_R(x, y)     (int)(((x) + (1 << ((y) - 1))) >> (y))
  77.  
  78. #else
  79.  
  80. #define FFT_FLOAT    1
  81. #define FFT_FIXED_32 0
  82.  
  83. #define AAC_RENAME(x)       x
  84. #define AAC_RENAME_32(x)    x
  85. #define INTFLOAT float
  86. #define INT64FLOAT          float
  87. #define SHORTFLOAT float
  88. #define AAC_FLOAT float
  89. #define AAC_SIGNE           unsigned
  90. #define FIXR(x)             ((float)(x))
  91. #define FIXR10(x)           ((float)(x))
  92. #define Q23(x)              x
  93. #define Q30(x)              x
  94. #define Q31(x)              x
  95. #define RANGE15(x)          (32768.0 * (x))
  96. #define GET_GAIN(x, y)      powf((x), -(y))
  97. #define AAC_MUL16(x, y)     ((x) * (y))
  98. #define AAC_MUL26(x, y)     ((x) * (y))
  99. #define AAC_MUL30(x, y)     ((x) * (y))
  100. #define AAC_MUL31(x, y)     ((x) * (y))
  101. #define AAC_MADD28(x, y, a, b) ((x) * (y) + (a) * (b))
  102. #define AAC_MADD30(x, y, a, b) ((x) * (y) + (a) * (b))
  103. #define AAC_MADD30_V8(x, y, a, b, c, d, e, f) ((x) * (y) + (a) * (b) + \
  104.                                                (c) * (d) + (e) * (f))
  105. #define AAC_MSUB30(x, y, a, b) ((x) * (y) - (a) * (b))
  106. #define AAC_MSUB30_V8(x, y, a, b, c, d, e, f) ((x) * (y) + (a) * (b) - \
  107.                                                (c) * (d) - (e) * (f))
  108. #define AAC_MSUB31_V3(x, y, z)    ((x) - (y)) * (z)
  109. #define AAC_HALF_SUM(x, y)  ((x) + (y)) * 0.5f
  110. #define AAC_SRA_R(x, y)     (x)
  111.  
  112. #endif /* USE_FIXED */
  113.  
  114. #endif /* AVCODEC_AAC_DEFINES_H */
  115.