00001 #ifndef MPG123_H_INCLUDED 00002 #define MPG123_H_INCLUDED 00003 00004 #include <stdio.h> 00005 00006 #ifdef STDC_HEADERS 00007 # include <string.h> 00008 #else 00009 # ifndef HAVE_STRCHR 00010 # define strchr index 00011 # define strrchr rindex 00012 # endif 00013 char *strchr (), *strrchr (); 00014 # ifndef HAVE_MEMCPY 00015 # define memcpy(d, s, n) bcopy ((s), (d), (n)) 00016 # define memmove(d, s, n) bcopy ((s), (d), (n)) 00017 # endif 00018 #endif 00019 00020 #include <signal.h> 00021 00022 00023 #if defined(__riscos__) && defined(FPA10) 00024 #include "ymath.h" 00025 #else 00026 #include <math.h> 00027 #endif 00028 00029 #ifndef M_PI 00030 #define M_PI 3.14159265358979323846 00031 #endif 00032 #ifndef M_SQRT2 00033 #define M_SQRT2 1.41421356237309504880 00034 #endif 00035 00036 #ifndef FALSE 00037 #define FALSE 0 00038 #endif 00039 #ifndef TRUE 00040 #define TRUE 1 00041 #endif 00042 00043 #undef REAL_IS_FLOAT 00044 #define REAL_IS_FLOAT 00045 00046 #ifdef REAL_IS_FLOAT 00047 # define real float 00048 #elif defined(REAL_IS_LONG_DOUBLE) 00049 # define real long double 00050 #else 00051 # define real double 00052 #endif 00053 00054 #define FALSE 0 00055 #define TRUE 1 00056 00057 #define SBLIMIT 32 00058 #define SSLIMIT 18 00059 00060 #define MPG_MD_STEREO 0 00061 #define MPG_MD_JOINT_STEREO 1 00062 #define MPG_MD_DUAL_CHANNEL 2 00063 #define MPG_MD_MONO 3 00064 00065 #define MAXFRAMESIZE 2880 00066 00067 /* AF: ADDED FOR LAYER1/LAYER2 */ 00068 #define SCALE_BLOCK 12 00069 00070 00071 /* Pre Shift fo 16 to 8 bit converter table */ 00072 #define AUSHIFT (3) 00073 00074 struct frame { 00075 int stereo; 00076 int jsbound; 00077 int single; 00078 int lsf; 00079 int mpeg25; 00080 int header_change; 00081 int lay; 00082 int error_protection; 00083 int bitrate_index; 00084 int sampling_frequency; 00085 int padding; 00086 int extension; 00087 int mode; 00088 int mode_ext; 00089 int copyright; 00090 int original; 00091 int emphasis; 00092 int framesize; /* computed framesize */ 00093 00094 /* AF: ADDED FOR LAYER1/LAYER2 */ 00095 int II_sblimit; 00096 struct al_table2 *alloc; 00097 int down_sample_sblimit; 00098 int down_sample; 00099 00100 00101 }; 00102 00103 struct gr_info_s { 00104 int scfsi; 00105 unsigned part2_3_length; 00106 unsigned big_values; 00107 unsigned scalefac_compress; 00108 unsigned block_type; 00109 unsigned mixed_block_flag; 00110 unsigned table_select[3]; 00111 unsigned subblock_gain[3]; 00112 unsigned maxband[3]; 00113 unsigned maxbandl; 00114 unsigned maxb; 00115 unsigned region1start; 00116 unsigned region2start; 00117 unsigned preflag; 00118 unsigned scalefac_scale; 00119 unsigned count1table_select; 00120 real *full_gain[3]; 00121 real *pow2gain; 00122 }; 00123 00124 struct III_sideinfo 00125 { 00126 unsigned main_data_begin; 00127 unsigned private_bits; 00128 struct { 00129 struct gr_info_s gr[2]; 00130 } ch[2]; 00131 }; 00132 00133 00134 #endif 00135