📄 common.h
字号:
#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 ASCII /* 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))/************************************************************************* Global Type Definitions************************************************************************//* Structure for Reading Layer II Allocation Tables from File */typedef struct { unsigned int steps; unsigned int bits; unsigned int group; unsigned int quant;} sb_alloc, *alloc_ptr;typedef sb_alloc al_table[SBLIMIT][16];/* Header Information Structure */typedef struct { int version; int lay; int error_protection; int bitrate_index; int sampling_frequency; int padding; int extension; int mode; int mode_ext; int copyright; int original; int emphasis; int center; /* center present */ int surround; /* surrounds present*/ int dematrix_procedure; /* type of dematricing */ int lfe; /* low freequency effect channel*/ unsigned int lfe_alloc; unsigned int lfe_scf; unsigned int lfe_spl[12]; double lfe_spl_fraction[12]; int audio_mix; /* large or small room */ int no_of_multi_lingual_ch;/* number of multilingual channels */ int multi_lingual_fs; /* fs of main channels and ML-fs are the same*/ int multi_lingual_layer; /* Layer IIML or Layer II ML is used*/ int mc_prediction[8]; /* prediction bit *//* 28.9. R.S. changed name and length like DIS*/ int mc_pred_coeff[8][6][3];/* bits for prediction coefficient */ int tc_alloc[12]; /* transmission channel allocation in each sbgroup*/ int mc_predsi[8][6]; /* predictor select information*/ int mc_delay_comp[8][6]; /* 3 bit for delay compensations factor */ int ext_bit_stream_present; int copyright_ident_bit; /* additional copyright bits */ int copyright_ident_start; /* */ int n_ad_bytes; int mc_prediction_on; int tc_sbgr_select; int dyn_cross_on; int dyn_cross_LR; int dyn_cross_mode[12]; int dyn_second_stereo[12]; /* 960816 FdB changed from scalar to array */ int tc_allocation; int ext_syncword; /* 12 bits */ int ext_crc_check; /* 16 bits */ int ext_length; /* 11 bits *//* Important!! in bits per frame */ int reserved_bit;unsigned int ext_crc_bits[15];#ifdef Augmentation_7ch int aug_mtx_proc; int aug_dyn_cross_on; int aug_future_ext; int tc_aug_alloc[12]; /* transmission channel allocation in each sbgroup */ int dyn_cross_aug_mode[12];#endif} layer, *the_layer;/* "bit_stream.h" Type Definitions */typedef struct bit_stream { FILE *pt; /* pointer to bit stream device */ unsigned char *bits; /* bit stream bit buffer */ int header_size; /* header of bitstream (in number of bytes) */ long totbits; /* bit counter of bit stream */ long curpos; /* bit pointer of bit stream */ int mode; /* bit stream open in read or write mode */ int eobs; /* end of bit stream flag */ char format; /* format of file in rd mode (BINARY/ASCII) */} Bit_stream;/* Parent Structure Interpreting some Frame Parameters in Header */typedef struct { layer *header; /* raw header information */ Bit_stream *bs_mpg; Bit_stream *bs_ext; Bit_stream *bs_mc; int actual_mode; /* when writing IS, may forget if 0 chs */ al_table *alloc; /* bit allocation table read in */ al_table *alloc_mc; /* MC bit allocation table read in */ al_table *alloc_ml; /* ML bit allocation table read in */ int tab_num; /* number of table as loaded */ int tab_num_mc; /* number of MC-table as loaded */ int tab_num_ml; /* number of ML-table as loaded */ int stereo; /* 1 for mono, 2 for stereo */ int mc_channel; int jsbound; /* first band of joint stereo coding */ double mnr_min; /* mnr for dynamic bitallocation */ int sblimit; /* total number of sub bands */ int sblimit_mc; /* total number of MC sub bands */ int sblimit_ml; /* total number of ML sub bands */ int alloc_bits; /* to read the right length of tc_alloc field */ int dyn_cross_bits; /* to read the right length of dyn_cross field */ int pred_mode; /* entry for prediction table */} frame_params;/* Double and SANE Floating Point Type Definitions */typedef struct IEEE_DBL_struct { unsigned long hi; unsigned long lo;} IEEE_DBL;typedef struct SANE_EXT_struct { unsigned long l1; unsigned long l2; unsigned short s1;} SANE_EXT;/* AIFF Type Definitions */typedef char ID[4];typedef struct identifier_struct{ ID name; long ck_length;}identifier;typedef struct ChunkHeader_struct { ID ckID; long ckSize;} ChunkHeader;typedef struct Chunk_struct { ID ckID; long ckSize; ID formType;} Chunk;typedef struct CommonChunk_struct { ID ckID; long ckSize; short numChannels; unsigned long numSampleFrames; short sampleSize; char sampleRate[10];} CommonChunk;typedef struct SoundDataChunk_struct { ID ckID; long ckSize; unsigned long offset; unsigned long blockSize;} SoundDataChunk;typedef struct blockAlign_struct { unsigned long offset; unsigned long blockSize;} blockAlign;typedef struct IFF_AIFF_struct { short numChannels; unsigned long numSampleFrames; short sampleSize; double sampleRate; ID/*char**/ sampleType;/*must be allocated 21.6.93 SR*/ blockAlign blkAlgn;} IFF_AIFF;/************************************************************************* Global Variable External Declarations************************************************************************/extern layer info;extern char *mode_names[4];extern char *layer_names[3];extern double s_freq[4];extern int bitrate[3][15];extern double multiple[64];extern int sb_groups[12];/************************************************************************* Global Function Prototype Declarations************************************************************************//* The following functions are in the file "common.c" */#ifdef PROTO_ARGSextern FILE *OpenTableFile(char*);extern int read_bit_alloc(int, al_table*);extern int pick_table(frame_params*);extern void mc_pick_table(frame_params*);extern int js_bound(int, int);extern void hdr_to_frps(frame_params*);extern void mc_hdr_to_frps(frame_params*);extern void WriteHdr(frame_params*, FILE*);extern void *mem_alloc(unsigned long, char*);extern void mem_free(void**);extern void double_to_extended(double*, char[10]);extern void extended_to_double(char[10], double*);extern int aiff_read_headers(FILE*, IFF_AIFF*, int*);extern int aiff_seek_to_sound_data(FILE*);extern int aiff_write_headers(FILE*, IFF_AIFF*);extern int open_bit_stream_r(Bit_stream*, char*, int);extern void close_bit_stream_r(Bit_stream*);extern unsigned int get1bit(Bit_stream*);extern unsigned long getbits(Bit_stream*, int);extern void program_information(void);extern int end_bs(Bit_stream*);extern int seek_sync_mpg(Bit_stream*);extern int seek_sync_ext(Bit_stream*, frame_params*);extern void update_CRC(unsigned int, unsigned int, unsigned int*);extern void I_CRC_calc(frame_params*, unsigned int[2][SBLIMIT], unsigned int*);extern void II_CRC_calc(frame_params*, unsigned int[7][SBLIMIT], unsigned int[7][SBLIMIT], unsigned int*);extern void mc_error_check(frame_params*, unsigned int[7][SBLIMIT], unsigned int[7][SBLIMIT], unsigned int*, int, int);#ifdef Augmentation_7chextern void mc_aug_error_check(frame_params*, unsigned int[7][SBLIMIT], unsigned int[7][SBLIMIT], unsigned int*);#endifextern int mc_ext_error_check(frame_params*, int, int);#ifdef MACINTOSHextern void set_mac_file_attr(char[MAX_NAME_SIZE], short, OsType, OsType);#endif#elseextern FILE *OpenTableFile();extern int read_bit_alloc();extern int pick_table();extern int mc_pick_table();extern int js_bound();extern void hdr_to_frps();extern void mc_hdr_to_frps();extern void WriteHdr();extern void *mem_alloc();extern void mem_free();extern void double_to_extended();extern void extended_to_double();extern int aiff_read_headers();extern int aiff_seek_to_sound_data();extern int aiff_write_headers();extern int open_bit_stream_r();extern void close_bit_stream_r();extern unsigned int get1bit();extern unsigned long getbits();extern void program_information();extern int end_bs();extern int seek_sync_mpg();extern int seek_sync_ext();extern void update_CRC();extern void I_CRC_calc();extern void II_CRC_calc();extern void mc_error_check();#ifdef Augmentation_7chextern void mc_aug_error_check();#endifextern void mc_ext_check();#ifdef MACINTOSHextern void set_mac_file_attr();#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -