g722_1/g722_1.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #if !defined(_G722_1_G722_1_H_)
00018 #define _G722_1_G722_1_H_
00019
00020 typedef enum
00021 {
00022
00023 G722_1_SAMPLE_RATE_16000 = 16000,
00024
00025 G722_1_SAMPLE_RATE_32000 = 32000
00026 } g722_1_sample_rates_t;
00027
00028 typedef enum
00029 {
00030
00031 G722_1_BIT_RATE_24000 = 24000,
00032
00033 G722_1_BIT_RATE_32000 = 32000,
00034
00035 G722_1_BIT_RATE_48000 = 48000
00036 } g722_1_bit_rates_t;
00037
00038 #define MAX_SAMPLE_RATE 32000
00039
00040 #define MAX_FRAME_SIZE (MAX_SAMPLE_RATE/50)
00041 #define MAX_DCT_LENGTH 640
00042
00043
00044 #define MAX_BITS_PER_FRAME 960
00045
00046 #define NUMBER_OF_REGIONS 14
00047 #define MAX_NUMBER_OF_REGIONS 28
00048
00049
00050 typedef struct
00051 {
00052
00053 uint32_t bitstream;
00054
00055 int residue;
00056 } g722_1_bitstream_state_t;
00057
00058 typedef struct
00059 {
00060 int16_t code_bit_count;
00061 int16_t current_word;
00062 uint16_t *code_word_ptr;
00063 } g722_1_bitstream_t;
00064
00065 typedef struct
00066 {
00067 int16_t seed0;
00068 int16_t seed1;
00069 int16_t seed2;
00070 int16_t seed3;
00071 } g722_1_rand_t;
00072
00073 typedef struct
00074 {
00075 int bit_rate;
00076 int sample_rate;
00077 int frame_size;
00078 int number_of_regions;
00079 int number_of_bits_per_frame;
00080 int bytes_per_frame;
00081 int number_of_16bit_words_per_frame;
00082 #if defined(G722_1_USE_FIXED_POINT)
00083 int16_t history[MAX_FRAME_SIZE];
00084 #else
00085 float history[MAX_FRAME_SIZE];
00086 float scale_factor;
00087 #endif
00088 g722_1_bitstream_state_t bitstream;
00089 } g722_1_encode_state_t;
00090
00091 typedef struct
00092 {
00093 int bit_rate;
00094 int sample_rate;
00095 int frame_size;
00096 int number_of_regions;
00097 int number_of_bits_per_frame;
00098 int bytes_per_frame;
00099 int number_of_16bit_words_per_frame;
00100 int16_t words;
00101 int16_t old_mag_shift;
00102 #if defined(G722_1_USE_FIXED_POINT)
00103 int16_t old_decoder_mlt_coefs[MAX_DCT_LENGTH];
00104 int16_t old_samples[MAX_DCT_LENGTH >> 1];
00105 #else
00106 float old_decoder_mlt_coefs[MAX_DCT_LENGTH];
00107 float old_samples[MAX_DCT_LENGTH >> 1];
00108 #endif
00109 g722_1_bitstream_t bitobj;
00110 g722_1_bitstream_state_t bitstream;
00111 const uint8_t *code_ptr;
00112 int16_t number_of_bits_left;
00113 g722_1_rand_t randobj;
00114 } g722_1_decode_state_t;
00115
00116 #if defined(__cplusplus)
00117 extern "C"
00118 {
00119 #endif
00120
00121
00122
00123
00124
00125
00126
00127
00128 g722_1_encode_state_t *g722_1_encode_init(g722_1_encode_state_t *s, int bit_rate, int sample_rate);
00129
00130
00131
00132
00133 int g722_1_encode_release(g722_1_encode_state_t *s);
00134
00135
00136
00137
00138
00139
00140
00141 int g722_1_encode(g722_1_encode_state_t *s, uint8_t g722_1_data[], const int16_t amp[], int len);
00142
00143
00144
00145
00146
00147
00148 int g722_1_encode_set_rate(g722_1_encode_state_t *s, int bit_rate);
00149
00150
00151
00152
00153
00154
00155
00156
00157 g722_1_decode_state_t *g722_1_decode_init(g722_1_decode_state_t *s, int bit_rate, int sample_rate);
00158
00159
00160
00161
00162 int g722_1_decode_release(g722_1_decode_state_t *s);
00163
00164
00165
00166
00167
00168
00169
00170 int g722_1_decode(g722_1_decode_state_t *s, int16_t amp[], const uint8_t g722_1_data[], int len);
00171
00172
00173
00174
00175
00176
00177
00178 int g722_1_fillin(g722_1_decode_state_t *s, int16_t amp[], const uint8_t g722_1_data[], int len);
00179
00180
00181
00182
00183
00184
00185 int g722_1_decode_set_rate(g722_1_decode_state_t *s, int bit_rate);
00186
00187 #if defined(__cplusplus)
00188 }
00189 #endif
00190
00191 #endif
00192