📄 common.h
字号:
/********************************************************************** * ISO MPEG Audio Subgroup Software Simulation Group (1996) * ISO 13818-3 MPEG-2 Audio Multichannel Encoder * * $Id: common.h 2.0 1996/02/12 07:18:32 rowlands Exp $ * * $Log: common.h $ * Revision 2.0 1996/02/12 07:18:32 rowlands * Release following Munich meeting * * Revision 1.5.2.1 1995/11/06 04:19:12 rowlands * Received from Uwe Felderhoff (IRT) * * Revision 1.7 1995/08/14 07:52:40 tenkate * ML-LSF added Warner ten Kate 7/8/95 (Philips) * struct frame_params extended * * Revision 1.6 1995/07/31 07:46:45 tenkate * typedef frame_params updated for phantom coding, 25/07/95 WtK * * Revision 1.4.2.1 1995/06/16 03:46:42 rowlands * Input from Susanne Ritscher (IRT) * **********************************************************************//********************************************************************** * 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. * * 8 jul 92 Susanne Ritscher MS-DOS, MSC 6.0 port fixes. * *19 aug 92 Soren H. Nielsen Printout of bit allocation. * * UNIX port fixes. MS-DOS file name * * extensions fix * * dec 92 Susanne Ritscher Changed to multi-channel with several * * options * ********************************************************************** * * * * * MPEG/audio Phase 2 coding/decoding multichannel * * * * 7/27/93 Susanne Ritscher, IRT Munich * * 8/27/93 Susanne Ritscher, IRT Munich * * Channel-Switching is working * * 9/1/93 Susanne Ritscher, IRT Munich * * all channels normalized * * 9/20/93 channel-switching is only performed at a * * certain limit of TC_ALLOC dB, which is included * * in encoder.h * * * * Version 1.0 * * * * 07/12/94 Susanne Ritscher, IRT Munich * * * * Version 1.1 * * * * 02/23/95 Susanne Ritscher, IRT Munich * * corrected some bugs * * extension bitstream is working * * * * Version 2.0 * * * * 01/28/97 Frans de Bont, Philips Sound & Vision, Eindhoven * * - dynamic crosstalk working for all configurations* * - prediction working for all configurations * * - extension bitstream fixed * * - fully compliant to DIS 13818-3.2 * * * * **********************************************************************//************************************************************************* Global Conditional Compile Switches************************************************************************/#define PRINTOUT#define DEBUG/*#define MACINTOSH */ /* Macintosh conditional compile switch *//*#define MS_DOS */ /* IBM PC conditional compile switch Microsoft C ver. 6.0 */#define VERSION "$Revision: 2.0 $"#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 */#define PROTO_ARGS /* unix gcc uses arg. prototypes */#endif /* UNIX */#ifdef MACINTOSH/* #define TABLES_PATH ":tables:" /* where to find data files */#define PROTO_ARGS /* Mac uses argument prototypes */#endif /* MACINTOSH */#ifdef MS_DOS#define PROTO_ARGS /* DOS uses argument prototypes */#endif /* MS_DOS *//* 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>#ifdef UNIX#include <unistd.h> /* removed 92-08-05 shn */#include <stdlib.h> /* put in 92-08-05 shn */#endif /* UNIX */#ifdef MACINTOSH#include <stdlib.h>#include <console.h>#endif /* MACINTOSH */#ifdef MS_DOS/* #include <alloc.h> */ /* removed 92-07-08 sr */#include <malloc.h> /* put in 92-07-08 sr *//* #include <mem.h> */ /* removed 92-07-08 sr */#include <stdlib.h>#endif /* MS_DOS *//************************************************************************* Global Definitions************************************************************************//* General Definitions */#ifdef MS_DOS#define FLOAT double#else#define FLOAT float#endif#define FALSE 0#define TRUE (!FALSE)#define NULL_CHAR '\0'#define MAX_U_32_NUM 0xFFFFFFFF#define PI 3.14159265358979#define PI4 PI/4#define PI64 PI/64#define LN_TO_LOG10 0.2302585093#define VOL_REF_NUM 0#define MPEG_AUDIO_ID 1#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 FFT_SIZE 1024#define HAN_SIZE 512#define SCALE_BLOCK 12#define SCALE_RANGE 63#define SCALE 32768#define CRC16_POLYNOMIAL 0x8005#define MAX_PRED_COEFF 3.96875 /* gleichfoermige Quantisierung der */ /* Praediktorkoeff. im Bereich */ /* [-MAX_PRED_COEF .. +MAX_PRED_COEF] */#define CHANMAX1 5#define CHANMAX2 7#define CHANMAX3 12#define SBGRS 12/* Channels */#define L0 0 #define R0 1 #define C 2 #define LS 3 #define RS 4 #define L 5 #define R 6 #define L7 7#define R7 8 #define C7 9#define LC 10 #define RC 11 /* Sums */#define T23 0#define T24 1#define T34 2#define T234 3 #define T56 4 /* 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#define MPG_MD_NONE 4/* AIFF Definitions */#ifndef MS_DOS#define IFF_ID_FORM "FORM" /* HP400 unix v8.0: double qoutes 1992-07-24 shn */#define IFF_ID_AIFF "AIFF"#define IFF_ID_COMM "COMM"#define IFF_ID_SSND "SSND"#define IFF_ID_MPEG "MPEG"#else#define IFF_ID_FORM "FORM"#define IFF_ID_AIFF "AIFF"#define IFF_ID_COMM "COMM"#define IFF_ID_SSND "SSND"#define IFF_ID_MPEG "MPEG"#endif/* "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))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -