| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | |
| 3 * | |
| 4 * Use of this source code is governed by a BSD-style license | |
| 5 * that can be found in the LICENSE file in the root of the source | |
| 6 * tree. An additional intellectual property rights grant can be found | |
| 7 * in the file PATENTS. All contributing project authors may | |
| 8 * be found in the AUTHORS file in the root of the source tree. | |
| 9 */ | |
| 10 | |
| 11 /* | |
| 12 * ilbc.h | |
| 13 * | |
| 14 * This header file contains all of the API's for iLBC. | |
| 15 * | |
| 16 */ | |
| 17 | |
| 18 #ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ILBC_MAIN_INTERFACE_ILBC_H_ | |
| 19 #define WEBRTC_MODULES_AUDIO_CODING_CODECS_ILBC_MAIN_INTERFACE_ILBC_H_ | |
| 20 | |
| 21 #include <stddef.h> | |
| 22 | |
| 23 /* | |
| 24 * Define the fixpoint numeric formats | |
| 25 */ | |
| 26 | |
| 27 #include "webrtc/typedefs.h" | |
| 28 | |
| 29 /* | |
| 30 * Solution to support multiple instances | |
| 31 * Customer has to cast instance to proper type | |
| 32 */ | |
| 33 | |
| 34 typedef struct iLBC_encinst_t_ IlbcEncoderInstance; | |
| 35 | |
| 36 typedef struct iLBC_decinst_t_ IlbcDecoderInstance; | |
| 37 | |
| 38 /* | |
| 39 * Comfort noise constants | |
| 40 */ | |
| 41 | |
| 42 #define ILBC_SPEECH 1 | |
| 43 #define ILBC_CNG 2 | |
| 44 | |
| 45 #ifdef __cplusplus | |
| 46 extern "C" { | |
| 47 #endif | |
| 48 | |
| 49 /**************************************************************************** | |
| 50 * WebRtcIlbcfix_XxxAssign(...) | |
| 51 * | |
| 52 * These functions assigns the encoder/decoder instance to the specified | |
| 53 * memory location | |
| 54 * | |
| 55 * Input: | |
| 56 * - XXX_xxxinst : Pointer to created instance that should be | |
| 57 * assigned | |
| 58 * - ILBCXXX_inst_Addr : Pointer to the desired memory space | |
| 59 * - size : The size that this structure occupies (in Word16
) | |
| 60 * | |
| 61 * Return value : 0 - Ok | |
| 62 * -1 - Error | |
| 63 */ | |
| 64 | |
| 65 int16_t WebRtcIlbcfix_EncoderAssign(IlbcEncoderInstance **iLBC_encinst, | |
| 66 int16_t *ILBCENC_inst_Addr, | |
| 67 int16_t *size); | |
| 68 int16_t WebRtcIlbcfix_DecoderAssign(IlbcDecoderInstance **iLBC_decinst, | |
| 69 int16_t *ILBCDEC_inst_Addr, | |
| 70 int16_t *size); | |
| 71 | |
| 72 | |
| 73 /**************************************************************************** | |
| 74 * WebRtcIlbcfix_XxxAssign(...) | |
| 75 * | |
| 76 * These functions create a instance to the specified structure | |
| 77 * | |
| 78 * Input: | |
| 79 * - XXX_inst : Pointer to created instance that should be creat
ed | |
| 80 * | |
| 81 * Return value : 0 - Ok | |
| 82 * -1 - Error | |
| 83 */ | |
| 84 | |
| 85 int16_t WebRtcIlbcfix_EncoderCreate(IlbcEncoderInstance **iLBC_encinst); | |
| 86 int16_t WebRtcIlbcfix_DecoderCreate(IlbcDecoderInstance **iLBC_decinst); | |
| 87 | |
| 88 /**************************************************************************** | |
| 89 * WebRtcIlbcfix_XxxFree(...) | |
| 90 * | |
| 91 * These functions frees the dynamic memory of a specified instance | |
| 92 * | |
| 93 * Input: | |
| 94 * - XXX_inst : Pointer to created instance that should be freed | |
| 95 * | |
| 96 * Return value : 0 - Ok | |
| 97 * -1 - Error | |
| 98 */ | |
| 99 | |
| 100 int16_t WebRtcIlbcfix_EncoderFree(IlbcEncoderInstance *iLBC_encinst); | |
| 101 int16_t WebRtcIlbcfix_DecoderFree(IlbcDecoderInstance *iLBC_decinst); | |
| 102 | |
| 103 | |
| 104 /**************************************************************************** | |
| 105 * WebRtcIlbcfix_EncoderInit(...) | |
| 106 * | |
| 107 * This function initializes a iLBC instance | |
| 108 * | |
| 109 * Input: | |
| 110 * - iLBCenc_inst : iLBC instance, i.e. the user that should receive | |
| 111 * be initialized | |
| 112 * - frameLen : The frame length of the codec 20/30 (ms) | |
| 113 * | |
| 114 * Return value : 0 - Ok | |
| 115 * -1 - Error | |
| 116 */ | |
| 117 | |
| 118 int16_t WebRtcIlbcfix_EncoderInit(IlbcEncoderInstance *iLBCenc_inst, | |
| 119 int16_t frameLen); | |
| 120 | |
| 121 /**************************************************************************** | |
| 122 * WebRtcIlbcfix_Encode(...) | |
| 123 * | |
| 124 * This function encodes one iLBC frame. Input speech length has be a | |
| 125 * multiple of the frame length. | |
| 126 * | |
| 127 * Input: | |
| 128 * - iLBCenc_inst : iLBC instance, i.e. the user that should encode | |
| 129 * a package | |
| 130 * - speechIn : Input speech vector | |
| 131 * - len : Samples in speechIn (160, 240, 320 or 480) | |
| 132 * | |
| 133 * Output: | |
| 134 * - encoded : The encoded data vector | |
| 135 * | |
| 136 * Return value : >0 - Length (in bytes) of coded data | |
| 137 * -1 - Error | |
| 138 */ | |
| 139 | |
| 140 int WebRtcIlbcfix_Encode(IlbcEncoderInstance *iLBCenc_inst, | |
| 141 const int16_t *speechIn, | |
| 142 size_t len, | |
| 143 uint8_t* encoded); | |
| 144 | |
| 145 /**************************************************************************** | |
| 146 * WebRtcIlbcfix_DecoderInit(...) | |
| 147 * | |
| 148 * This function initializes a iLBC instance with either 20 or 30 ms frames | |
| 149 * Alternatively the WebRtcIlbcfix_DecoderInit_XXms can be used. Then it's | |
| 150 * not needed to specify the frame length with a variable. | |
| 151 * | |
| 152 * Input: | |
| 153 * - IlbcDecoderInstance : iLBC decoder instance | |
| 154 * - frameLen : The frame length of the codec 20/30 (ms) | |
| 155 * | |
| 156 * Return value : 0 - Ok | |
| 157 * -1 - Error | |
| 158 */ | |
| 159 | |
| 160 int16_t WebRtcIlbcfix_DecoderInit(IlbcDecoderInstance *iLBCdec_inst, | |
| 161 int16_t frameLen); | |
| 162 void WebRtcIlbcfix_DecoderInit20Ms(IlbcDecoderInstance* iLBCdec_inst); | |
| 163 void WebRtcIlbcfix_Decoderinit30Ms(IlbcDecoderInstance* iLBCdec_inst); | |
| 164 | |
| 165 /**************************************************************************** | |
| 166 * WebRtcIlbcfix_Decode(...) | |
| 167 * | |
| 168 * This function decodes a packet with iLBC frame(s). Output speech length | |
| 169 * will be a multiple of 160 or 240 samples ((160 or 240)*frames/packet). | |
| 170 * | |
| 171 * Input: | |
| 172 * - iLBCdec_inst : iLBC instance, i.e. the user that should decode | |
| 173 * a packet | |
| 174 * - encoded : Encoded iLBC frame(s) | |
| 175 * - len : Bytes in encoded vector | |
| 176 * | |
| 177 * Output: | |
| 178 * - decoded : The decoded vector | |
| 179 * - speechType : 1 normal, 2 CNG | |
| 180 * | |
| 181 * Return value : >0 - Samples in decoded vector | |
| 182 * -1 - Error | |
| 183 */ | |
| 184 | |
| 185 int WebRtcIlbcfix_Decode(IlbcDecoderInstance* iLBCdec_inst, | |
| 186 const uint8_t* encoded, | |
| 187 size_t len, | |
| 188 int16_t* decoded, | |
| 189 int16_t* speechType); | |
| 190 int WebRtcIlbcfix_Decode20Ms(IlbcDecoderInstance* iLBCdec_inst, | |
| 191 const uint8_t* encoded, | |
| 192 size_t len, | |
| 193 int16_t* decoded, | |
| 194 int16_t* speechType); | |
| 195 int WebRtcIlbcfix_Decode30Ms(IlbcDecoderInstance* iLBCdec_inst, | |
| 196 const uint8_t* encoded, | |
| 197 size_t len, | |
| 198 int16_t* decoded, | |
| 199 int16_t* speechType); | |
| 200 | |
| 201 /**************************************************************************** | |
| 202 * WebRtcIlbcfix_DecodePlc(...) | |
| 203 * | |
| 204 * This function conducts PLC for iLBC frame(s). Output speech length | |
| 205 * will be a multiple of 160 or 240 samples. | |
| 206 * | |
| 207 * Input: | |
| 208 * - iLBCdec_inst : iLBC instance, i.e. the user that should perform | |
| 209 * a PLC | |
| 210 * - noOfLostFrames : Number of PLC frames to produce | |
| 211 * | |
| 212 * Output: | |
| 213 * - decoded : The "decoded" vector | |
| 214 * | |
| 215 * Return value : Samples in decoded PLC vector | |
| 216 */ | |
| 217 | |
| 218 size_t WebRtcIlbcfix_DecodePlc(IlbcDecoderInstance *iLBCdec_inst, | |
| 219 int16_t *decoded, | |
| 220 size_t noOfLostFrames); | |
| 221 | |
| 222 /**************************************************************************** | |
| 223 * WebRtcIlbcfix_NetEqPlc(...) | |
| 224 * | |
| 225 * This function updates the decoder when a packet loss has occured, but it | |
| 226 * does not produce any PLC data. Function can be used if another PLC method | |
| 227 * is used (i.e NetEq). | |
| 228 * | |
| 229 * Input: | |
| 230 * - iLBCdec_inst : iLBC instance that should be updated | |
| 231 * - noOfLostFrames : Number of lost frames | |
| 232 * | |
| 233 * Output: | |
| 234 * - decoded : The "decoded" vector (nothing in this case) | |
| 235 * | |
| 236 * Return value : Samples in decoded PLC vector | |
| 237 */ | |
| 238 | |
| 239 size_t WebRtcIlbcfix_NetEqPlc(IlbcDecoderInstance *iLBCdec_inst, | |
| 240 int16_t *decoded, | |
| 241 size_t noOfLostFrames); | |
| 242 | |
| 243 /**************************************************************************** | |
| 244 * WebRtcIlbcfix_version(...) | |
| 245 * | |
| 246 * This function returns the version number of iLBC | |
| 247 * | |
| 248 * Output: | |
| 249 * - version : Version number of iLBC (maximum 20 char) | |
| 250 */ | |
| 251 | |
| 252 void WebRtcIlbcfix_version(char *version); | |
| 253 | |
| 254 #ifdef __cplusplus | |
| 255 } | |
| 256 #endif | |
| 257 | |
| 258 #endif | |
| OLD | NEW |