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