util.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:5k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. #ifndef UTIL_DOT_H
  2. #define UTIL_DOT_H
  3. /***********************************************************************
  4. *
  5. *  Global Include Files
  6. *
  7. ***********************************************************************/
  8. #include "machine.h"
  9. #include "encoder.h"
  10. #include "lame.h"
  11. /***********************************************************************
  12. *
  13. *  Global Definitions
  14. *
  15. ***********************************************************************/
  16. /* General Definitions */
  17. #ifndef FALSE
  18. #define         FALSE                   0
  19. #endif
  20. #ifndef TRUE
  21. #define         TRUE                    1
  22. #endif
  23. #define         MAX_U_32_NUM            0xFFFFFFFF
  24. #ifndef PI
  25. # ifdef M_PI
  26. #  define       PI                      M_PI
  27. # else
  28. #  define       PI                      3.14159265358979323846
  29. # endif
  30. #endif
  31. #ifdef M_LN2
  32. # define        LOG2                    M_LN2
  33. #else
  34. # define        LOG2                    0.69314718055994530942
  35. #endif
  36. #ifdef M_LN10
  37. # define        LOG10                   M_LN10
  38. #else
  39. # define        LOG10                   2.30258509299404568402
  40. #endif
  41. #ifdef M_SQRT2
  42. # define        SQRT2                   M_SQRT2
  43. #else
  44. # define        SQRT2                   1.41421356237309504880
  45. #endif
  46. #define         BITS_IN_A_BYTE          8
  47. #define         HAN_SIZE                512
  48. #define         CRC16_POLYNOMIAL        0x8005
  49. /* MPEG Header Definitions - Mode Values */
  50. #define         MPG_MD_STEREO           0
  51. #define         MPG_MD_JOINT_STEREO     1
  52. #define         MPG_MD_DUAL_CHANNEL     2
  53. #define         MPG_MD_MONO             3
  54. /* Mode Extention */
  55. #define         MPG_MD_LR_LR             0
  56. #define         MPG_MD_LR_I              1
  57. #define         MPG_MD_MS_LR             2
  58. #define         MPG_MD_MS_I              3
  59. /* "bit_stream.h" Definitions */
  60. #define         MINIMUM         4    /* Minimum size of the buffer in bytes */
  61. #define         MAX_LENGTH      32   /* Maximum length of word written or
  62.                                         read from bit stream */
  63. #define         BUFFER_SIZE     LAME_MAXMP3BUFFER 
  64. #define         Min(A, B)       ((A) < (B) ? (A) : (B))
  65. #define         Max(A, B)       ((A) > (B) ? (A) : (B))
  66. /***********************************************************************
  67. *
  68. *  Global Type Definitions
  69. *
  70. ***********************************************************************/
  71. /* Structure for Reading Layer II Allocation Tables from File */
  72. typedef struct {
  73.     unsigned int    steps;
  74.     unsigned int    bits;
  75.     unsigned int    group;
  76.     unsigned int    quant;
  77. } sb_alloc, *alloc_ptr;
  78. typedef sb_alloc        al_table[SBLIMIT][16]; 
  79. /* Header Information Structure */
  80. enum byte_order { order_unknown, order_bigEndian, order_littleEndian };
  81. extern enum byte_order NativeByteOrder;
  82. /* "bit_stream.h" Type Definitions */
  83. typedef struct  bit_stream_struc {
  84.     unsigned char* pbtOutBuf;   /* for .DLL code */
  85.     int  nOutBufPos;  /* for .DLL code */
  86.     FILE        *pt;            /* pointer to bit stream device */
  87.     unsigned char *buf;         /* bit stream buffer */
  88.     int         buf_size;       /* size of buffer (in number of bytes) */
  89.     unsigned long        totbit;         /* bit counter of bit stream */
  90.     int         buf_byte_idx;   /* pointer to top byte in buffer */
  91.     int         buf_bit_idx;    /* pointer to top bit of top byte in buffer */
  92.     
  93.     /* format of file in rd mode (BINARY/ASCII) */
  94. } Bit_stream_struc;
  95. #include "l3side.h"
  96. /***********************************************************************
  97. *
  98. *  Global Variable External Declarations
  99. *
  100. ***********************************************************************/
  101. #ifdef __cplusplus
  102. extern "C" {
  103. #endif
  104.   
  105. extern int      bitrate_table[2][15];
  106. /***********************************************************************
  107. *
  108. *  Global Function Prototype Declarations
  109. *
  110. ***********************************************************************/
  111. extern void           display_bitrates(FILE *out_fh);
  112. extern int            BitrateIndex(int, int,int);
  113. extern int            SmpFrqIndex(long, int*);
  114. extern void           *mem_alloc(unsigned long, char*);
  115. extern int            copy_buffer(char *buffer,int buffer_size,Bit_stream_struc *bs);
  116. extern void           init_bit_stream_w(Bit_stream_struc*);
  117. extern void           alloc_buffer(Bit_stream_struc*, int);
  118. extern void           desalloc_buffer(Bit_stream_struc*);
  119. extern void           putbits(Bit_stream_struc*, unsigned int, int);
  120. extern enum byte_order DetermineByteOrder(void);
  121. extern void SwapBytesInWords( short *loc, int words );
  122. extern void 
  123. getframebits(lame_global_flags *gfp,int *bitsPerFrame, int *mean_bits);
  124. #ifdef __cplusplus
  125. }
  126. #endif
  127. #endif