encoder.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. #ifndef ENCODER_DOT_H
  17. #define ENCODER_DOT_H
  18. /***********************************************************************
  19. *
  20. *  Encoder Definitions
  21. *
  22. ***********************************************************************/
  23. /* General Definitions */
  24. /* Psychacoustic Model 1 Definitions */
  25. #define CB_FRACTION     0.33
  26. #define MAX_SNR         1000
  27. #define NOISE           10
  28. #define TONE            20
  29. #define DBMIN           -200.0
  30. #define LAST            -1
  31. #define STOP            -100
  32. #define POWERNORM       90.3090 /* = 20 * log10(32768) to normalize */
  33.                                 /* max output power to 96 dB per spec */
  34. /* Psychoacoustic Model 2 Definitions */
  35. #define LOGBLKSIZE      10
  36. #define BLKSIZE         1024
  37. #define HBLKSIZE        513
  38. #define CBANDS          63
  39. #define LXMIN           32.0
  40. /***********************************************************************
  41. *
  42. *  Encoder Type Definitions
  43. *
  44. ***********************************************************************/
  45. /* Psychoacoustic Model 1 Type Definitions */
  46. typedef int        IFFT2[FFT_SIZE/2];
  47. typedef int        IFFT[FFT_SIZE];
  48. typedef double     D9[9];
  49. typedef double     D10[10];
  50. typedef double     D640[640];
  51. typedef double     D1408[1408];
  52. typedef double     DFFT2[FFT_SIZE/2];
  53. typedef double     DFFT[FFT_SIZE];
  54. typedef double     DSBL[SBLIMIT];
  55. typedef double     D2SBL[2][SBLIMIT];
  56. typedef struct {
  57.         int        line;
  58.         double     bark, hear, x;
  59. } g_thres, *g_ptr;
  60. typedef struct {
  61.         double     x;
  62.         int        type, next, map;
  63. } mask, *mask_ptr;
  64. /* Psychoacoustic Model 2 Type Definitions */
  65. typedef int        ICB[CBANDS];
  66. typedef int        IHBLK[HBLKSIZE];
  67. typedef FLOAT      F32[32];
  68. typedef FLOAT      F2_32[2][32];
  69. typedef FLOAT      FCB[CBANDS];
  70. typedef FLOAT      FCBCB[CBANDS][CBANDS];
  71. typedef FLOAT      FBLK[BLKSIZE];
  72. typedef FLOAT      FHBLK[HBLKSIZE];
  73. typedef FLOAT      F2HBLK[2][HBLKSIZE];
  74. typedef FLOAT      F22HBLK[2][2][HBLKSIZE];
  75. typedef double     DCB[CBANDS];
  76. /***********************************************************************
  77. *
  78. *  Encoder Function Prototype Declarations
  79. *
  80. ***********************************************************************/
  81. /* The following functions are in the file "subs.c" */
  82. extern void        fft(FLOAT[BLKSIZE], FLOAT[BLKSIZE], FLOAT[BLKSIZE],
  83.                            FLOAT[BLKSIZE], int );
  84. void windowFilterSubband( short * pBuffer, int k, double s[SBLIMIT] );
  85. void initWindowFilterSubband( void );
  86. #endif