Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * AAC decoder data
  3.  * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org )
  4.  * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com )
  5.  *
  6.  * This file is part of FFmpeg.
  7.  *
  8.  * FFmpeg is free software; you can redistribute it and/or
  9.  * modify it under the terms of the GNU Lesser General Public
  10.  * License as published by the Free Software Foundation; either
  11.  * version 2.1 of the License, or (at your option) any later version.
  12.  *
  13.  * FFmpeg is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.  * Lesser General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU Lesser General Public
  19.  * License along with FFmpeg; if not, write to the Free Software
  20.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  21.  */
  22.  
  23. /**
  24.  * @file
  25.  * AAC decoder data
  26.  * @author Oded Shimon  ( ods15 ods15 dyndns org )
  27.  * @author Maxim Gavrilov ( maxim.gavrilov gmail com )
  28.  */
  29.  
  30. #ifndef AVCODEC_AACDECTAB_H
  31. #define AVCODEC_AACDECTAB_H
  32.  
  33. #include "libavutil/channel_layout.h"
  34. #include "aac.h"
  35.  
  36. #include <stdint.h>
  37.  
  38. /* @name ltp_coef
  39.  * Table of the LTP coefficients
  40.  */
  41. static const INTFLOAT ltp_coef[8] = {
  42.     Q30(0.570829f), Q30(0.696616f), Q30(0.813004f), Q30(0.911304f),
  43.     Q30(0.984900f), Q30(1.067894f), Q30(1.194601f), Q30(1.369533f),
  44. };
  45.  
  46. static const int8_t tags_per_config[16] = { 0, 1, 1, 2, 3, 3, 4, 5, 0, 0, 0, 4, 5, 0, 5, 0 };
  47.  
  48. static const uint8_t aac_channel_layout_map[16][5][3] = {
  49.     { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, },
  50.     { { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, },
  51.     { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, },
  52.     { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_SCE, 1, AAC_CHANNEL_BACK }, },
  53.     { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, },
  54.     { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE  }, },
  55.     { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_FRONT }, { TYPE_CPE, 2, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE  }, },
  56.     { { 0, } },
  57.     { { 0, } },
  58.     { { 0, } },
  59.     { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_SCE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE  }, },
  60.     { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_SIDE }, { TYPE_CPE, 2, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE  }, },
  61.     { { 0, } },
  62.     /* TODO: Add 7+1 TOP configuration */
  63. };
  64.  
  65. static const uint64_t aac_channel_layout[16] = {
  66.     AV_CH_LAYOUT_MONO,
  67.     AV_CH_LAYOUT_STEREO,
  68.     AV_CH_LAYOUT_SURROUND,
  69.     AV_CH_LAYOUT_4POINT0,
  70.     AV_CH_LAYOUT_5POINT0_BACK,
  71.     AV_CH_LAYOUT_5POINT1_BACK,
  72.     AV_CH_LAYOUT_7POINT1_WIDE_BACK,
  73.     0,
  74.     0,
  75.     0,
  76.     AV_CH_LAYOUT_6POINT1,
  77.     AV_CH_LAYOUT_7POINT1,
  78.     0,
  79.     /* AV_CH_LAYOUT_7POINT1_TOP, */
  80. };
  81.  
  82. #endif /* AVCODEC_AACDECTAB_H */
  83.