00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 #ifndef _G72X_H
00034 #define _G72X_H
00035 
00036 #define AUDIO_ENCODING_ULAW     (1)     
00037 #define AUDIO_ENCODING_ALAW     (2)     
00038 #define AUDIO_ENCODING_LINEAR   (3)     
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 struct g72x_state {
00050         long yl;        
00051         short yu;       
00052         short dms;      
00053         short dml;      
00054         short ap;       
00055 
00056         short a[2];     
00057         short b[6];     
00058         short pk[2];    
00059 
00060 
00061 
00062         short dq[6];    
00063 
00064 
00065 
00066 
00067         short sr[2];    
00068 
00069 
00070 
00071 
00072         char td;        
00073 };
00074 
00075 
00076 
00077 extern void g72x_init_state(struct g72x_state *);
00078 extern int g721_encoder(
00079                 int sample,
00080                 int in_coding,
00081                 struct g72x_state *state_ptr);
00082 extern int g721_decoder(
00083                 int code,
00084                 int out_coding,
00085                 struct g72x_state *state_ptr);
00086 extern int g723_24_encoder(
00087                 int sample,
00088                 int in_coding,
00089                 struct g72x_state *state_ptr);
00090 extern int g723_24_decoder(
00091                 int code,
00092                 int out_coding,
00093                 struct g72x_state *state_ptr);
00094 extern int g723_40_encoder(
00095                 int sample,
00096                 int in_coding,
00097                 struct g72x_state *state_ptr);
00098 extern int g723_40_decoder(
00099                 int code,
00100                 int out_coding,
00101                 struct g72x_state *state_ptr);
00102 
00103 
00104 extern int
00105 quantize(
00106          int            d,      
00107          int            y,      
00108         short           *table, 
00109         int             size);
00110 extern int reconstruct(int,int,int);void
00111 
00112 extern update(
00113         int             code_size,      
00114         int             y,              
00115         int             wi,             
00116         int             fi,             
00117         int             dq,             
00118         int             sr,             
00119         int             dqsez,          
00120         struct g72x_state *state_ptr);
00121 extern int
00122 tandem_adjust_alaw(
00123         int             sr,     
00124         int             se,     
00125         int             y,      
00126         int             i,      
00127         int             sign,
00128         short           *qtab);
00129 
00130 extern int
00131 tandem_adjust_ulaw(
00132         int             sr,     
00133         int             se,     
00134         int             y,      
00135         int             i,      
00136         int             sign,
00137         short           *qtab);
00138 
00139 extern unsigned char
00140 linear2alaw(
00141         int             pcm_val);
00142 
00143 extern int
00144 alaw2linear(
00145         unsigned char   a_val);
00146 
00147 extern unsigned char
00148 linear2ulaw(int         pcm_val);
00149 
00150 extern int ulaw2linear( unsigned char   u_val);
00151 
00152 extern int predictor_zero(struct g72x_state *state_ptr);
00153 
00154 extern int predictor_pole(      struct g72x_state *state_ptr);
00155 extern int step_size(   struct g72x_state *state_ptr);
00156 #endif