📄 common.h
字号:
#define BS_FORMAT ASCII /* BINARY or ASCII = 2x bytes */
#endif
#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;
} layer, *the_layer;
/* Parent Structure Interpreting some Frame Parameters in Header */
typedef struct {
layer *header; /* raw header information */
int actual_mode; /* when writing IS, may forget if 0 chs */
al_table *alloc; /* bit allocation table read in */
int tab_num; /* number of table as loaded */
int stereo; /* 1 for mono, 2 for stereo */
int jsbound; /* first band of joint stereo coding */
int sblimit; /* total number of sub bands */
} frame_params;
/* AIFF Definitions */
#define IFF_ID_FORM 0x464f524d /* "FORM" */
#define IFF_ID_AIFF 0x41494646 /* "AIFF" */
#define IFF_ID_COMM 0x434f4d4d /* "COMM" */
#define IFF_ID_SSND 0x53534e44 /* "SSND" */
#define IFF_ID_MPEG 0x4d504547 /* "MPEG" */
#define AIFF_FORM_HEADER_SIZE 12
#define AIFF_SSND_HEADER_SIZE 16
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;
unsigned long sampleType;
blockAlign blkAlgn;
} IFF_AIFF;
enum byte_order { order_unknown, order_bigEndian, order_littleEndian };
extern enum byte_order NativeByteOrder;
/* "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;
#include "l3side.h"
/***********************************************************************
*
* Global Variable External Declarations
*
***********************************************************************/
extern char *mode_names[4];
extern char *layer_names[3];
extern char *version_names[2];
extern double s_freq[2][4];
extern int bitrate[2][3][15];
extern double FAR multiple[64];
/***********************************************************************
*
* Global Function Prototype Declarations
*
***********************************************************************/
/* The following functions are in the file "common.c" */
#ifdef PROTO_ARGS
extern FILE *OpenTableFile(char*);
extern int read_bit_alloc(int, al_table*);
extern int pick_table(frame_params*);
extern int js_bound(int, int);
extern void hdr_to_frps(frame_params*);
extern void WriteHdr(frame_params*, FILE*);
extern void WriteBitAlloc(unsigned int[2][SBLIMIT], frame_params*,
FILE*);
extern void WriteScale(unsigned int[2][SBLIMIT],
unsigned int[2][SBLIMIT], unsigned int[2][3][SBLIMIT],
frame_params*, FILE*);
extern void WriteSamples(int, unsigned int FAR [SBLIMIT],
unsigned int[SBLIMIT], frame_params*, FILE*);
extern int NumericQ(char*);
extern int BitrateIndex(int, int, int);
extern int SmpFrqIndex(long, int*);
extern int memcheck(char*, int, int);
extern void FAR *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*);
extern int aiff_seek_to_sound_data(FILE*);
extern int aiff_write_headers(FILE*, IFF_AIFF*);
extern int 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 putbits(Bit_stream_struc*, unsigned int, 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);
extern void I_CRC_calc(frame_params*, unsigned int[2][SBLIMIT],
unsigned int*);
extern void II_CRC_calc(frame_params*, unsigned int[2][SBLIMIT],
unsigned int[2][SBLIMIT], unsigned int*);
extern void update_CRC(unsigned int, unsigned int, unsigned int*);
extern void read_absthr(FLOAT*, int);
extern unsigned int hget1bit(); /* MI */
extern unsigned long hgetbits(int);
extern unsigned long hsstell();
extern void hputbuf(unsigned int,int);
extern enum byte_order DetermineByteOrder();
extern void SwapBytesInWords( short *loc, int words );
#ifdef MACINTOSH
extern void set_mac_file_attr(char[MAX_NAME_SIZE], short, OSType,
OSType);
#endif
#ifdef MS_DOS
extern void new_ext(char *filename, char *extname, char *newname);
#endif
#else
extern FILE *OpenTableFile();
extern int read_bit_alloc();
extern int pick_table();
extern int js_bound();
extern void hdr_to_frps();
extern void WriteHdr();
extern void WriteBitAlloc();
extern void WriteScale();
extern void WriteSamples();
extern int NumericQ();
extern int BitrateIndex();
extern int SmpFrqIndex();
extern int memcheck();
extern void FAR *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 refill_buffer();
extern void empty_buffer();
extern void open_bit_stream_w();
extern void open_bit_stream_r();
extern void close_bit_stream_r();
extern void close_bit_stream_w();
extern void alloc_buffer();
extern void desalloc_buffer();
extern void back_track_buffer();
extern unsigned int get1bit();
extern void put1bit();
extern unsigned long look_ahead();
extern unsigned long getbits();
extern void putbits();
extern void byte_ali_putbits();
extern unsigned long byte_ali_getbits();
extern unsigned long sstell();
extern int end_bs();
extern int seek_sync();
extern void I_CRC_calc();
extern void II_CRC_calc();
extern void update_CRC();
extern void read_absthr();
extern unsigned int hget1bit();
extern unsigned long hgetbits();
extern unsigned long hsstell();
extern void hputbuf();
#ifdef MS_DOS
extern void new_ext();
#endif
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -