www.pudn.com > avi 到 mpeg 的转换程序及源代码.zip > BITSTRM.H


/********************************************************************** 
Copyright (c) 1991 MPEG/audio software simulation group, All Rights Reserved 
bitstrm.h 
**********************************************************************/ 
 
/* 
 * 4/4/97 - John Schlichther 
 * 
 * extensively altered to create avi2mpg1 - avi to mpeg-1 encoder 
 * 
 * Since avi file, and the avi subsystem are platform dependant, cross 
 * platform compatibility removed, many optional features disabled or 
 * removed, code generally trimmed to a minimum. 
 * 
 */ 
/*********************************************************************** 
* 
*  Global Conditional Compile Switches 
* 
***********************************************************************/ 
 
#define      UNIX            /* Unix conditional compile switch */ 
#define      MS_DOS          /* IBM PC conditional compile switch */ 
 
/*********************************************************************** 
* 
*  Global Include Files 
* 
***********************************************************************/ 
 
#include         
#include         
#include         
 
#include		 
#include		 
 
/*********************************************************************** 
* 
*  Global Definitions 
* 
***********************************************************************/ 
 
/* General Definitions */ 
 
#define         FLOAT                   double 
 
#define         FALSE                   0 
#define         TRUE                    1 
#define         NULL_CHAR               '\0' 
 
#define         BITS_IN_A_BYTE          8 
#define         WORD                    16 
 
 
/* "bit_stream.h" Definitions */ 
 
#define         MINIMUM         4    /* Minimum size of the buffer in bytes */ 
#define         MAX_LENGTH      32   /* Maximum length of word written or 
                                        read from bit stream */ 
#define         READ_MODE       0 
#define         WRITE_MODE      1 
#define         ALIGNING        8 
#define         BINARY          0 
#define         ASCII           1 
#define         BS_FORMAT       BINARY /* BINARY or ASCII = 2x bytes */ 
#define         BUFFER_SIZE     4096 
 
#define         MIN(A, B)       ((A) < (B) ? (A) : (B)) 
#define         MAX(A, B)       ((A) > (B) ? (A) : (B)) 
 
/* "bit_stream.h" Type Definitions */ 
 
typedef struct  bit_stream_struc { 
    FILE        *pt;            /* pointer to bit stream device */ 
    unsigned char *buf;         /* bit stream buffer */ 
    int         buf_size;       /* size of buffer (in number of bytes) */ 
    long        totbit;         /* bit counter of bit stream */ 
    int         buf_byte_idx;   /* pointer to top byte in buffer */ 
    int         buf_bit_idx;    /* pointer to top bit of top byte in buffer */ 
    int         mode;           /* bit stream open in read or write mode */ 
    int         eob;            /* end of buffer index */ 
    int         eobs;           /* end of bit stream flag */ 
    char        format; 
     
    /* format of file in rd mode (BINARY/ASCII) */ 
} Bit_stream_struc; 
 
 
/*********************************************************************** 
* 
*  Global Function Prototype Declarations 
* 
***********************************************************************/ 
 
/* The following functions are in the file "common.c" */ 
 
extern int            memcheck(char*, int, int); 
extern void           *mem_alloc(unsigned long, char*); 
extern void           mem_free(void**); 
extern void            refill_buffer(Bit_stream_struc*); 
extern void           empty_buffer(Bit_stream_struc*, int); 
extern void           open_bit_stream_w(Bit_stream_struc*, char*, int); 
extern void           open_bit_stream_r(Bit_stream_struc*, char*, int); 
extern void           close_bit_stream_r(Bit_stream_struc*); 
extern void           close_bit_stream_w(Bit_stream_struc*); 
extern void           alloc_buffer(Bit_stream_struc*, int); 
extern void           desalloc_buffer(Bit_stream_struc*); 
extern void           back_track_buffer(Bit_stream_struc*, int); 
extern unsigned int   get1bit(Bit_stream_struc*); 
extern void           put1bit(Bit_stream_struc*, int); 
extern unsigned long  look_ahead(Bit_stream_struc*, int); 
extern unsigned long  getbits(Bit_stream_struc*, int); 
extern void           byte_ali_putbits(Bit_stream_struc*, unsigned int, int); 
extern unsigned long  byte_ali_getbits(Bit_stream_struc*, int); 
extern unsigned long  sstell(Bit_stream_struc*); 
extern int            end_bs(Bit_stream_struc*); 
extern int            seek_sync(Bit_stream_struc*, long, int);