MP3_Common.h
上传用户:kingbiz
上传日期:2022-06-24
资源大小:2524k
文件大小:4k
源码类别:

mpeg/mp3

开发平台:

C/C++

  1. #define _DEBUG_MP3
  2. #ifndef _COMMON_H_
  3. #define _COMMON_H_
  4. //#include <stdio.h>
  5. #include "Include.h"
  6. /* MPEG Header Definitions - Mode Values */
  7. #define MPG_MD_STEREO           0
  8. #define MPG_MD_JOINT_STEREO     1
  9. #define MPG_MD_DUAL_CHANNEL     2
  10. #define MPG_MD_MONO             3 
  11. #define SYNC_WORD 0xfff
  12. #define SYNC_WORD_LENGTH 12
  13. #define ALIGNING 8
  14. #define MINIMUM 4    /* Minimum size of the buffer in bytes */
  15. #define MAX_LENGTH 32 /* Maximum length of word written or read from bit stream */
  16. #define BINARY 0 /*Binary input file*/
  17. #define READ_MODE 0 /*Decode mode only*/
  18. #define SBLIMIT 32
  19. #define SSLIMIT 18
  20. #define PI 3.1415926
  21. #define bitsPerSlot         8
  22. /*mp3比特流的缓冲*/
  23. #define BUFFER_SIZE 4096
  24. /*part2_3区的缓冲*/
  25. #define BITSTREAM_BUFSIZE 4096
  26. /* Header Information Structure */
  27. typedef struct {
  28.     int version;
  29.     int lay;
  30.     int error_protection;
  31.     int bitrate_index;
  32.     int sampling_frequency;
  33.     int padding;
  34.     int extension;
  35.     int mode;
  36.     int mode_ext;
  37.     int copyright;
  38.     int original;
  39.     int emphasis;
  40. } layer; 
  41. typedef float SS[SBLIMIT][SSLIMIT];
  42. /* Parent Structure Interpreting some Frame Parameters in Header */
  43. typedef struct {
  44.     layer       *header;        /* raw header information */
  45.     int         actual_mode;    /* when writing IS, may forget if 0 chs */
  46.     int         stereo;         /* 1 for mono, 2 for stereo */
  47.     int         jsbound;        /* first band of joint stereo coding */
  48.     int         sblimit;        /* total number of sub bands */
  49. } frame_params;
  50. typedef struct {
  51.     S16   *buf;         /* bit stream buffer */
  52.     int   totbit;         /* bit counter of bit stream */
  53.     int   read_ptr;      /* pointer to top byte in buffer */
  54.     int   bit_len;      /* pointer to top bit of top byte in buffer */
  55.     int   write_ptr;   /* pointer to write byte in buffer */
  56.     int   eof;            /* end of buffer index */
  57.     int   eobs;           /* end of bit stream flag */
  58. } Bit_stream_struc;
  59. /* Layer III side information. */
  60. struct Granule {
  61. int part2_3_length;
  62. int big_values;
  63. int global_gain;
  64. int scalefac_compress;
  65. int window_switching_flag;
  66. int block_type; 
  67. int mixed_block_flag;
  68. int table_select[3]; 
  69. int subblock_gain[3];
  70. int region0_count;
  71. int region1_count;
  72. int preflag;
  73. int scalefac_scale;
  74. int count1table_select;
  75. };
  76. typedef struct {
  77. int main_data_begin;
  78. int private_bits;
  79. int scfsi[2][4];
  80. } III_side_info_t;
  81. typedef struct {
  82. int l[23]; /* [cb] */
  83. int s[3][13]; /* [window][cb] */
  84. } III_scalefac_t[2]; /* [ch] */
  85. struct BandIndex{
  86. int l[23];
  87. int s[14];
  88. };
  89. /*============================================================================*/
  90. /*============================================================================*/
  91. extern U32 totpos;
  92. extern U8* mp3_src;
  93. extern U32 mp3_dat_size;
  94. extern frame_params fr_ps; 
  95. extern Bit_stream_struc  bs;
  96. extern float  s_freq[4];
  97. extern U32 buf_byte_idx;
  98. extern struct Granule grle[2][2];
  99. extern const struct BandIndex sfBandIndex[3];
  100. extern S8  bs_buf[BITSTREAM_BUFSIZE];
  101. /*============================================================================*/
  102. /*============================================================================*/
  103. /*============================================================================*/
  104. //void mp3();
  105. void open_bit_stream_r();
  106. unsigned int getbit(int N);
  107. int seek_sync( unsigned int sync);
  108. int js_bound(int lay, int m_ext);
  109. void hdr_to_frps();
  110. void quest_stream(unsigned int *ptr);
  111. void hputbuf(unsigned int val);
  112. unsigned int hgetbits(int N);
  113. void rewindNbits(int N);
  114. void rewindNbytes(int N);
  115. #endif /*_COMMON_H_*/