HUFFMAN.H
上传用户:njqiyou
上传日期:2007-01-08
资源大小:574k
文件大小:2k
源码类别:

mpeg/mp3

开发平台:

C/C++

  1. /**********************************************************************
  2.  * ISO MPEG Audio Subgroup Software Simulation Group (1996)
  3.  * ISO 13818-3 MPEG-2 Audio Encoder - Lower Sampling Frequency Extension
  4.  *
  5.  * $Id: huffman.h,v 1.1 1996/02/14 04:04:23 rowlands Exp $
  6.  *
  7.  * $Log: huffman.h,v $
  8.  * Revision 1.1  1996/02/14 04:04:23  rowlands
  9.  * Initial revision
  10.  *
  11.  * Received from Mike Coleman
  12.  **********************************************************************/
  13. /**********************************************************************
  14.  *   date   programmers                comment                        *
  15.  *  27.2.92 F.O.Witte (ITT Intermetall)       *
  16.  *  8/24/93 M. Iwadare          Changed for 1 pass decoding.          *
  17.  *  7/14/94 J. Koller useless 'typedef' before huffcodetab  *
  18.  * removed       *
  19.  *********************************************************************/
  20.  
  21. #define HUFFBITS unsigned long int
  22. #define HTN 34
  23. #define MXOFF 250
  24.  
  25. struct huffcodetab {
  26.   char tablename[3]; /*string, containing table_description */
  27.   unsigned int xlen;  /*max. x-index+        */ 
  28.   unsigned int ylen; /*max. y-index+ */
  29.   unsigned int linbits; /*number of linbits */
  30.   unsigned int linmax; /*max number to be stored in linbits */
  31.   int ref; /*a positive value indicates a reference*/
  32.   HUFFBITS *table; /*pointer to array[xlen][ylen] */
  33.   unsigned char *hlen; /*pointer to array[xlen][ylen] */
  34.   unsigned char(*val)[2];/*decoder tree */ 
  35.   unsigned int treelen; /*length of decoder tree */
  36. };
  37. extern struct huffcodetab ht[HTN];/* global memory block */
  38. /* array of all huffcodtable headers */
  39. /* 0..31 Huffman code table 0..31 */
  40. /* 32,33 count1-tables */
  41. #ifdef PROTO_ARGS
  42. extern int read_huffcodetab(FILE *); 
  43. extern int read_decoder_table(FILE *);
  44.  
  45. extern void huffman_coder(unsigned int, unsigned int,
  46.   struct huffcodetab *, Bit_stream_struc *);
  47.   
  48. extern int huffman_decoder(struct huffcodetab *,
  49.    /* unsigned */ int *, /* unsigned */ int*, int*, int*);
  50. #else
  51. extern int read_huffcodetab(); 
  52. extern int read_decoder_table(); 
  53. extern void huffman_coder();
  54. extern int huffman_decoder();
  55. #endif