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

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 COMMON_DOT_H
  17. #define COMMON_DOT_H
  18. /***********************************************************************
  19. *
  20. *  Global Include Files
  21. *
  22. ***********************************************************************/
  23. #include        <stdio.h>
  24. #include        <string.h>
  25. #include        <math.h>
  26. #include "tables.h"
  27. #ifndef EXIT_SUCCESS
  28. #define EXIT_SUCCESS 0
  29. #endif
  30. #ifndef EXIT_FAILURE
  31. #define EXIT_FAILURE 1
  32. #endif
  33. /***********************************************************************
  34. *
  35. *  Global Definitions
  36. *
  37. ***********************************************************************/
  38. /* General Definitions */
  39. #define         FLOAT                   float
  40. #ifndef FALSE
  41. #define         FALSE                   0
  42. #endif
  43. #ifndef TRUE
  44. #define         TRUE                    1
  45. #endif
  46. #define         NULL_CHAR               ''
  47. #define         MAX_U_32_NUM            0xFFFFFFFF
  48. #ifndef PI
  49. #define         PI                      3.14159265358979
  50. #endif
  51. #define         PI4                     PI/4
  52. #define         PI64                    PI/64
  53. #define         LN_TO_LOG10             0.2302585093
  54. #define         VOL_REF_NUM             0
  55. #define         MPEG_AUDIO_ID           1
  56. #define MPEG_PHASE2_LSF 0 /* 1995-07-11 SHN */
  57. #define         MONO                    1
  58. #define         STEREO                  2
  59. #define         BITS_IN_A_BYTE          8
  60. #define         WORD                    16
  61. #define         MAX_NAME_SIZE           81
  62. #define         SBLIMIT                 32
  63. #define         SSLIMIT                 18
  64. #define         FFT_SIZE                1024
  65. #define         HAN_SIZE                512
  66. #define         SCALE_BLOCK             12
  67. #define         SCALE_RANGE             64
  68. #define         SCALE                   32768
  69. #define         CRC16_POLYNOMIAL        0x8005
  70. /* MPEG Header Definitions - Mode Values */
  71. #define         MPG_MD_STEREO           0
  72. #define         MPG_MD_DUAL_CHANNEL     2
  73. #define         MPG_MD_MONO             3
  74. /* Mode Extention */
  75. #define         MPG_MD_LR_LR             0
  76. #define         MPG_MD_LR_I              1
  77. #define         MPG_MD_MS_LR             2
  78. #define         MPG_MD_MS_I              3
  79. /* "bit_stream.h" Definitions */
  80. #define         MINIMUM         4    /* Minimum size of the buffer in bytes */
  81. #define         MAX_LENGTH      32   /* Maximum length of word written or
  82.                                         read from bit stream */
  83. #define         READ_MODE       0
  84. #define         WRITE_MODE      1
  85. #define         ALIGNING        8
  86. #define         BUFFER_SIZE     4096
  87. #define         MIN(A, B)       ((A) < (B) ? (A) : (B))
  88. #define         MAX(A, B)       ((A) > (B) ? (A) : (B))
  89. /***********************************************************************
  90. *
  91. *  Global Type Definitions
  92. *
  93. ***********************************************************************/
  94. /* Structure for Reading Layer II Allocation Tables from File */
  95. typedef struct {
  96.     unsigned int    steps;
  97.     unsigned int    bits;
  98.     unsigned int    group;
  99.     unsigned int    quant;
  100. } sb_alloc, *alloc_ptr;
  101. typedef sb_alloc        al_table[SBLIMIT][16];
  102. /* Header Information Structure */
  103. typedef struct {
  104.     int version;
  105.     int error_protection;
  106.     int bitrate_index;
  107.     int sampling_frequency;
  108.     int padding;
  109.     int extension;
  110.     int mode;
  111.     int mode_ext;
  112.     int copyright;
  113.     int original;
  114.     int emphasis;
  115. /* int freq; */
  116. } layer, *the_layer;
  117. /* Parent Structure Interpreting some Frame Parameters in Header */
  118. typedef struct {
  119.     layer       *header;        /* raw header information */
  120.     int         actual_mode;    /* when writing IS, may forget if 0 chs */
  121.     al_table    *alloc;         /* bit allocation table read in */
  122.     int         tab_num;        /* number of table as loaded */
  123.     int         stereo;         /* 1 for mono, 2 for stereo */
  124.     int         jsbound;        /* first band of joint stereo coding */
  125.     int         sblimit;        /* total number of sub bands */
  126. } frame_params;
  127. enum byte_order { order_unknown, order_bigEndian, order_littleEndian };
  128. extern enum byte_order NativeByteOrder;
  129. /* "bit_stream.h" Type Definitions */
  130. typedef struct  bit_stream_struc {
  131.     FILE        *pt;            /* pointer to bit stream device */
  132.     unsigned char *buf;         /* bit stream buffer */
  133.     int         buf_size;       /* size of buffer (in number of bytes) */
  134.     int totbit;         /* bit counter of bit stream */
  135.     int         buf_byte_idx;   /* pointer to top byte in buffer */
  136.     int         buf_bit_idx;    /* pointer to top bit of top byte in buffer */
  137.     int         mode;           /* bit stream open in read or write mode */
  138.     int         eob;            /* end of buffer index */
  139.     int         eobs;           /* end of bit stream flag */
  140.     char        format;
  141.     
  142.     /* format of file in rd mode (BINARY/ASCII) */
  143. } Bit_stream_struc;
  144. #include "l3side.h"
  145. /***********************************************************************
  146. *
  147. *  Global Variable External Declarations
  148. *
  149. ***********************************************************************/
  150. /* extern char     *mode_names[4]; 
  151.  extern char     *layer_names[3]; 
  152.  extern char *version_names[2]; */
  153. extern double   s_freq[2][4];
  154. extern int      bitratex[2][15];
  155. /***********************************************************************
  156. *
  157. *  Global Function Prototype Declarations
  158. *
  159. ***********************************************************************/
  160. /* The following functions are in the file "common.c" */
  161. extern void  hdr_to_frps(frame_params *fr_ps); /* interpret data in hdr str to fields in fr_ps */
  162. extern void    *mem_alloc(unsigned int block, char *item);
  163. extern void     mem_free( void **ptr_addr);
  164. extern void           read_absthr();
  165. #endif