/* (c) Copyright 1998-2000 - Tord Jansson ====================================== This file is part of the BladeEnc MP3 Encoder, based on ISO's reference code for MPEG Layer 3 compression, and might contain smaller or larger sections that are directly taken from ISO's reference code. All changes to the ISO reference code herein are either copyrighted by Tord Jansson (tord.jansson@swipnet.se) or sublicensed to Tord Jansson by a third party. BladeEnc is free software; you can redistribute this file and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. ------------ Changes ------------ 2000-02-07 Andre Piotrowski - reformatted */ #ifndef __COMMON__ #define __COMMON__ /*********************************************************************** * * Global Include Files * ***********************************************************************/ #include #include #include #include "tables.h" #define MIN(A, B) ((A) < (B) ? (A) : (B)) #define MAX(A, B) ((A) > (B) ? (A) : (B)) #ifndef EXIT_SUCCESS #define EXIT_SUCCESS 0 #endif #ifndef EXIT_FAILURE #define EXIT_FAILURE 1 #endif /*********************************************************************** * * Global Definitions * ***********************************************************************/ /* General Definitions */ #define FLOAT float #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE 1 #endif #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 MPEG_AUDIO_ID 1 #define MPEG_PHASE2_LSF 0 /* 1995-07-11 SHN */ #if 0 #define MONO 1 #define STEREO 2 #endif #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 #define SCALE 32768 #define CRC16_POLYNOMIAL 0x8005 /* MPEG Header Definitions - Mode Values */ #define MPG_MD_STEREO 0 #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 /* "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 BUFFER_SIZE 4096 /*********************************************************************** * * 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 error_protection; int bitrate_index; int sampling_frequency; int padding; int extension; int mode; int mode_ext; int copyright; int original; int emphasis; /* int freq; */ } 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; 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) */ int 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 bitratex[2][15]; /*********************************************************************** * * Global Function Prototype Declarations * ***********************************************************************/ /* The following functions are in the file "common.c" */ extern void *mem_alloc (unsigned int block, char *item); extern void mem_free (void **ptr_addr); #endif /* __COMMON__ */