1 /* 2 * Copyright (c) 2011 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 #ifndef MODULES_AUDIO_CODING_CODECS_G722_MAIN_INTERFACE_G722_INTERFACE_H_ 12 #define MODULES_AUDIO_CODING_CODECS_G722_MAIN_INTERFACE_G722_INTERFACE_H_ 13 14 #include "webrtc/typedefs.h" 15 16 /* 17 * Solution to support multiple instances 18 */ 19 20 typedef struct WebRtcG722EncInst G722EncInst; 21 typedef struct WebRtcG722DecInst G722DecInst; 22 23 /* 24 * Comfort noise constants 25 */ 26 27 #define G722_WEBRTC_SPEECH 1 28 #define G722_WEBRTC_CNG 2 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 35 /**************************************************************************** 36 * WebRtcG722_CreateEncoder(...) 37 * 38 * Create memory used for G722 encoder 39 * 40 * Input: 41 * - G722enc_inst : G722 instance for encoder 42 * 43 * Return value : 0 - Ok 44 * -1 - Error 45 */ 46 int16_t WebRtcG722_CreateEncoder(G722EncInst **G722enc_inst); 47 48 49 /**************************************************************************** 50 * WebRtcG722_EncoderInit(...) 51 * 52 * This function initializes a G722 instance 53 * 54 * Input: 55 * - G722enc_inst : G722 instance, i.e. the user that should receive 56 * be initialized 57 * 58 * Return value : 0 - Ok 59 * -1 - Error 60 */ 61 62 int16_t WebRtcG722_EncoderInit(G722EncInst *G722enc_inst); 63 64 65 /**************************************************************************** 66 * WebRtcG722_FreeEncoder(...) 67 * 68 * Free the memory used for G722 encoder 69 * 70 * Input: 71 * - G722enc_inst : G722 instance for encoder 72 * 73 * Return value : 0 - Ok 74 * -1 - Error 75 */ 76 int16_t WebRtcG722_FreeEncoder(G722EncInst *G722enc_inst); 77 78 79 80 /**************************************************************************** 81 * WebRtcG722_Encode(...) 82 * 83 * This function encodes G722 encoded data. 84 * 85 * Input: 86 * - G722enc_inst : G722 instance, i.e. the user that should encode 87 * a packet 88 * - speechIn : Input speech vector 89 * - len : Samples in speechIn 90 * 91 * Output: 92 * - encoded : The encoded data vector 93 * 94 * Return value : >0 - Length (in bytes) of coded data 95 * -1 - Error 96 */ 97 98 int16_t WebRtcG722_Encode(G722EncInst *G722enc_inst, 99 int16_t *speechIn, 100 int16_t len, 101 int16_t *encoded); 102 103 104 /**************************************************************************** 105 * WebRtcG722_CreateDecoder(...) 106 * 107 * Create memory used for G722 encoder 108 * 109 * Input: 110 * - G722dec_inst : G722 instance for decoder 111 * 112 * Return value : 0 - Ok 113 * -1 - Error 114 */ 115 int16_t WebRtcG722_CreateDecoder(G722DecInst **G722dec_inst); 116 117 118 /**************************************************************************** 119 * WebRtcG722_DecoderInit(...) 120 * 121 * This function initializes a G729 instance 122 * 123 * Input: 124 * - G729_decinst_t : G729 instance, i.e. the user that should receive 125 * be initialized 126 * 127 * Return value : 0 - Ok 128 * -1 - Error 129 */ 130 131 int16_t WebRtcG722_DecoderInit(G722DecInst *G722dec_inst); 132 133 134 /**************************************************************************** 135 * WebRtcG722_FreeDecoder(...) 136 * 137 * Free the memory used for G722 decoder 138 * 139 * Input: 140 * - G722dec_inst : G722 instance for decoder 141 * 142 * Return value : 0 - Ok 143 * -1 - Error 144 */ 145 146 int16_t WebRtcG722_FreeDecoder(G722DecInst *G722dec_inst); 147 148 149 /**************************************************************************** 150 * WebRtcG722_Decode(...) 151 * 152 * This function decodes a packet with G729 frame(s). Output speech length 153 * will be a multiple of 80 samples (80*frames/packet). 154 * 155 * Input: 156 * - G722dec_inst : G722 instance, i.e. the user that should decode 157 * a packet 158 * - encoded : Encoded G722 frame(s) 159 * - len : Bytes in encoded vector 160 * 161 * Output: 162 * - decoded : The decoded vector 163 * - speechType : 1 normal, 2 CNG (Since G722 does not have its own 164 * DTX/CNG scheme it should always return 1) 165 * 166 * Return value : >0 - Samples in decoded vector 167 * -1 - Error 168 */ 169 170 int16_t WebRtcG722_Decode(G722DecInst *G722dec_inst, 171 int16_t *encoded, 172 int16_t len, 173 int16_t *decoded, 174 int16_t *speechType); 175 176 /**************************************************************************** 177 * WebRtcG722_Version(...) 178 * 179 * Get a string with the current version of the codec 180 */ 181 182 int16_t WebRtcG722_Version(char *versionStr, short len); 183 184 185 #ifdef __cplusplus 186 } 187 #endif 188 189 190 #endif /* MODULES_AUDIO_CODING_CODECS_G722_MAIN_INTERFACE_G722_INTERFACE_H_ */ 191