📄 common.h
字号:
/********************************************************************** * ISO MPEG Audio Subgroup Software Simulation Group (1996) * ISO 13818-3 MPEG-2 Audio Decoder - Lower Sampling Frequency Extension * * $Id: common.h.rca 1.2 Fri Dec 13 00:30:53 2002 franklej Experimental $ * * Received from FhG **********************************************************************//********************************************************************** * date programmers comment * * 2/25/91 Doulas Wong, start of version 1.0 records * * Davis Pan * * 5/10/91 W. Joseph Carter Reorganized & renamed all ".h" files * * into "common.h" and "encoder.h". * * Ported to Macintosh and Unix. * * Added additional type definitions for * * AIFF, double/SANE and "bitstream.c". * * Added function prototypes for more * * rigorous type checking. * * 27jun91 dpwe (Aware) Added "alloc_*" defs & prototypes * * Defined new struct 'frame_params'. * * Changed info.stereo to info.mode_ext * * #define constants for mode types * * Prototype arguments if PROTO_ARGS * * 5/28/91 Earle Jennings added MS_DOS definition * * MsDos function prototype declarations * * 7/10/91 Earle Jennings added FLOAT definition as double * *10/ 3/91 Don H. Lee implemented CRC-16 error protection * * 2/11/92 W. Joseph Carter Ported new code to Macintosh. Most * * important fixes involved changing * * 16-bit ints to long or unsigned in * * bit alloc routines for quant of 65535 * * and passing proper function args. * * Removed "Other Joint Stereo" option * * and made bitrate be total channel * * bitrate, irrespective of the mode. * * Fixed many small bugs & reorganized. * * Modified some function prototypes. * * Changed BUFFER_SIZE back to 4096. * * 7/27/92 Michael Li (re-)Ported to MS-DOS * * 7/27/92 Masahiro Iwadare Ported to Convex * * 8/07/92 mc@tv.tek.com * * 8/10/92 Amit Gulati Ported to the AIX Platform (RS6000) * * AIFF string constants redefined * * 8/27/93 Seymour Shlien, Fixes in Unix and MSDOS ports, * * Daniel Lauzon, and * * Bill Truerniet * *--------------------------------------------------------------------* * 4/23/92 J. Pineda Added code for Layer III. * * 11/9/92 Amit Gulati Added defines for layerIII stereo * * modes. * * 8/24/93 Masahiro Iwadare Included IS modification in Layer III.* * Changed for 1 pass decoding. * * 9/07/93 Toshiyuki Ishino Integrated Layer III with Ver 3.9. * *--------------------------------------------------------------------* * 11/20/93 Masahiro Iwadare Integrated Layer III with Ver 4.0. * *--------------------------------------------------------------------* * 7/14/94 Juergen Koller Fix for HPUX an IRIX in AIFF-Strings * *--------------------------------------------------------------------* * 6/12/95 Soeren H. Nielsen Bug fix in new_ext(). * * 7/11/95 Soeren H. Nielsen Added defs. for MPEG-2 LSF * *--------------------------------------------------------------------* * Roland Bitto Adapted to MPEG2 low sampling rate * **********************************************************************/#ifndef COMMON_H#define COMMON_H #define CAPT_CODE_BOOK//#define CAPT_BS//#define DEBUG_PRINT_SCREEN#define DEBUG_PRINT #define DEBUG_PRINT_XING//#define DEBUG_SIDE_INFO//#define DEBUG_MAX_SLOT#define DEBUG_MAIN//#define DEBUG_SCALEFAC//#define DEBUG_HUFFMAN//#define DEBUG_REQUAN//#define DEBUG_STEREO//#define DEBUG_REORDER//#define DEBUG_ANTIALIAS//#define DEBUG_IMDCT#define DEBUG_COMPEN#define DEBUG_POLY/************************************************************************* Global Conditional Compile Switches************************************************************************//* #define UNIX Unix conditional compile switch *//* #define MACINTOSH Macintosh conditional compile switch *//* #define MS_DOS IBM PC conditional compile switch *//* #define MSC60 Compiled for MS_DOS with MSC v6.0 *//* #define AIX AIX conditional compile switch *//* #define CONVEX CONVEX conditional compile switch */#if defined(MSC60) #ifndef MS_DOS#define MS_DOS#endif#ifndef PROTO_ARGS#define PROTO_ARGS#endif#endif#ifdef UNIX#define TABLES_PATH "tables" /* to find data files *//* name of environment variable holding path of table files */#define MPEGTABENV "MPEGTABLES"#define PATH_SEPARATOR "/" /* how to build paths */#endif /* UNIX */#ifdef MACINTOSH#define TABLES_PATH ":tables:" /* where to find data files */#endif /* MACINTOSH *//* * Don't define FAR to far unless you're willing to clean up the * prototypes */#define FAR /*far*/#ifdef __STDC__#ifndef PROTO_ARGS#define PROTO_ARGS #endif#endif#ifdef CONVEX#define SEEK_SET 0#define SEEK_CUR 1#define SEEK_END 2#endif/* MS_DOS and VMS do not define TABLES_PATH, so OpenTableFile will default to finding the data files in the default directory *//************************************************************************* Global Include Files************************************************************************/#include <stdio.h>#include <string.h>#include <math.h>#include "ieeefloat.h"#include "portableio.h"#ifdef UNIX#include <unistd.h>#endif /* UNIX */#ifdef __sgi#include <stdlib.h>#endif#ifdef MACINTOSH#include <stdlib.h>#include <console.h>#endif /* MACINTOSH */#ifdef MS_DOS#include <stdlib.h>#ifdef MSC60#include <memory.h>#else#include <alloc.h>#include <mem.h>#endif /* MSC60 */#endif /* MS_DOS *//************************************************************************* Global Definitions************************************************************************//* General Definitions */#ifdef MS_DOS#define FLOAT double#else#define FLOAT float#endif#define FALSE 0#define TRUE 1#define NULL_CHAR '\0'#define MAX_U_32_NUM 0xFFFFFFFF#ifndef PI#define PI 3.14159265358979#endif#define PI4 PI/4#define PI64 PI/64#define LN_TO_LOG10 0.2302585093#define VOL_REF_NUM 0#define MAC_WINDOW_SIZE 24#define MONO 1#define STEREO 2#define BITS_IN_A_BYTE 8#define WORD 16#define MAX_NAME_SIZE 81#define SBLIMIT 32#define SSLIMIT 18#define FFT_SIZE 1024#define HAN_SIZE 512#define SCALE_BLOCK 12#define SCALE_RANGE 64#ifdef OUT20#define SCALE 524288#else#define SCALE 32768#endif#define CRC16_POLYNOMIAL 0x8005/* MPEG Header Definitions - ID Bit Values */#define MPEG_AUDIO_ID 1#define MPEG_PHASE2_LSF 0 /* 1995-07-11 SHN *//* MPEG Header Definitions - Mode Values */#define MPG_MD_STEREO 0#define MPG_MD_JOINT_STEREO 1#define MPG_MD_DUAL_CHANNEL 2#define MPG_MD_MONO 3/* Mode Extention */#define MPG_MD_LR_LR 0#define MPG_MD_LR_I 1#define MPG_MD_MS_LR 2#define MPG_MD_MS_I 3/* 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 16typedef 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" 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#ifndef BS_FORMAT#define BS_FORMAT ASCII /* BINARY or ASCII = 2x bytes */#endif#define BUFFER_SIZE 4096#define MIN(A, B) ((A) < (B) ? (A) : (B))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -