📄 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 + -