l3side.h
上传用户:bjsgzm
上传日期:2007-01-08
资源大小:256k
文件大小:3k
源码类别:

mpeg/mp3

开发平台:

Visual C++

  1. /*
  2. (c) Copyright 1998, 1999 - Tord Jansson
  3. =======================================
  4. This file is part of the BladeEnc MP3 Encoder, based on
  5. ISO's reference code for MPEG Layer 3 compression, and might
  6. contain smaller or larger sections that are directly taken
  7. from ISO's reference code.
  8. All changes to the ISO reference code herein are either
  9. copyrighted by Tord Jansson (tord.jansson@swipnet.se)
  10. or sublicensed to Tord Jansson by a third party.
  11. BladeEnc is free software; you can redistribute this file
  12. and/or modify it under the terms of the GNU Lesser General Public
  13. License as published by the Free Software Foundation; either
  14. version 2.1 of the License, or (at your option) any later version.
  15. */
  16. /**********************************************************************
  17.  * ISO MPEG Audio Subgroup Software Simulation Group (1996)
  18.  * ISO 13818-3 MPEG-2 Audio Encoder - Lower Sampling Frequency Extension
  19.  *
  20.  * $Id: l3side.h,v 1.1 1996/02/14 04:04:23 rowlands Exp $
  21.  *
  22.  * $Log: l3side.h,v $
  23.  * Revision 1.1  1996/02/14 04:04:23  rowlands
  24.  * Initial revision
  25.  *
  26.  * Received from Mike Coleman
  27.  **********************************************************************/
  28. /**********************************************************************
  29.  *   date   programmers                comment                        *
  30.  * 25. 6.92  Toshiyuki Ishino          Ver 1.0                        *
  31.  * 29.10.92  Masahiro Iwadare          Ver 2.0                        *
  32.  * 17. 4.93  Masahiro Iwadare          Updated for IS Modification    *
  33.  *                                                                    *
  34.  *********************************************************************/
  35. #ifndef L3_SIDE_H
  36. #define L3_SIDE_H
  37. /* Layer III side information. */
  38. /* #define CBLIMIT_SHORT 12 */
  39. void l3deco();
  40. typedef double D576[576];
  41. typedef int I576[576];
  42. typedef double D192_3[192][3];
  43. typedef int I192_3[192][3];
  44. typedef char C192_3[192][3];
  45. typedef struct {
  46. unsigned cbl_max;
  47. unsigned cbs_start;
  48. } III_cb_info;
  49. typedef struct {
  50. double l[2][2][21];
  51. double s[2][2][12][3];
  52. } III_psy_ratio;
  53. typedef struct {
  54. double l[2][2][21];
  55. double s[2][2][12][3];
  56. } III_psy_xmin;
  57. typedef struct {
  58. double xr[576];
  59. double xr_s[3][192];
  60. double xmin[21];
  61. double xmin_s[3][192];
  62. int ix[576];
  63. int ix_s[3][192];
  64. } III_input3; /* ch */
  65. typedef struct {
  66. unsigned part2_3_length;
  67. unsigned big_values;
  68. unsigned count1;
  69.   unsigned global_gain;
  70. unsigned scalefac_compress;
  71. unsigned window_switching_flag;
  72. unsigned block_type;
  73. unsigned mixed_block_flag;
  74. unsigned table_select[3];
  75. int /* unsigned */ subblock_gain[3];
  76. unsigned region0_count;
  77. unsigned region1_count;
  78. unsigned preflag;
  79. unsigned scalefac_scale;
  80. unsigned count1table_select;
  81. unsigned part2_length;
  82. unsigned sfb_lmax;
  83. unsigned sfb_smax;
  84. unsigned address1;
  85. unsigned address2;
  86. unsigned address3;
  87. double quantizerStepSize;
  88. /* added for LSF */
  89. unsigned *sfb_partition_table;
  90. unsigned slen[4];
  91. } gr_info;
  92. typedef struct {
  93. int main_data_begin; /* unsigned -> int */
  94. unsigned private_bits;
  95. int resvDrain;
  96. unsigned scfsi[2][4];
  97. struct {
  98. struct gr_info_s {
  99. gr_info tt;
  100. } ch[2];
  101. } gr[2];
  102. } III_side_info_t;
  103. /* Layer III scale factors. */
  104. typedef struct {
  105. int l[2][2][22];            /* [cb] */
  106. int s[2][2][13][3];         /* [window][cb] */
  107. } III_scalefac_t;  /* [gr][ch] */
  108. #endif