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 12 13 #include <stdlib.h> 14 #include <string.h> 15 #include "g722_interface.h" 16 #include "g722_enc_dec.h" 17 #include "typedefs.h" 18 19 20 int16_t WebRtcG722_CreateEncoder(G722EncInst **G722enc_inst) 21 { 22 *G722enc_inst=(G722EncInst*)malloc(sizeof(g722_encode_state_t)); 23 if (*G722enc_inst!=NULL) { 24 return(0); 25 } else { 26 return(-1); 27 } 28 } 29 30 int16_t WebRtcG722_EncoderInit(G722EncInst *G722enc_inst) 31 { 32 // Create and/or reset the G.722 encoder 33 // Bitrate 64 kbps and wideband mode (2) 34 G722enc_inst = (G722EncInst *) WebRtc_g722_encode_init( 35 (g722_encode_state_t*) G722enc_inst, 64000, 2); 36 if (G722enc_inst == NULL) { 37 return -1; 38 } else { 39 return 0; 40 } 41 } 42 43 int16_t WebRtcG722_FreeEncoder(G722EncInst *G722enc_inst) 44 { 45 // Free encoder memory 46 return WebRtc_g722_encode_release((g722_encode_state_t*) G722enc_inst); 47 } 48 49 int16_t WebRtcG722_Encode(G722EncInst *G722enc_inst, 50 int16_t *speechIn, 51 int16_t len, 52 int16_t *encoded) 53 { 54 unsigned char *codechar = (unsigned char*) encoded; 55 // Encode the input speech vector 56 return WebRtc_g722_encode((g722_encode_state_t*) G722enc_inst, 57 codechar, speechIn, len); 58 } 59 60 int16_t WebRtcG722_CreateDecoder(G722DecInst **G722dec_inst) 61 { 62 *G722dec_inst=(G722DecInst*)malloc(sizeof(g722_decode_state_t)); 63 if (*G722dec_inst!=NULL) { 64 return(0); 65 } else { 66 return(-1); 67 } 68 } 69 70 int16_t WebRtcG722_DecoderInit(G722DecInst *G722dec_inst) 71 { 72 // Create and/or reset the G.722 decoder 73 // Bitrate 64 kbps and wideband mode (2) 74 G722dec_inst = (G722DecInst *) WebRtc_g722_decode_init( 75 (g722_decode_state_t*) G722dec_inst, 64000, 2); 76 if (G722dec_inst == NULL) { 77 return -1; 78 } else { 79 return 0; 80 } 81 } 82 83 int16_t WebRtcG722_FreeDecoder(G722DecInst *G722dec_inst) 84 { 85 // Free encoder memory 86 return WebRtc_g722_decode_release((g722_decode_state_t*) G722dec_inst); 87 } 88 89 int16_t WebRtcG722_Decode(G722DecInst *G722dec_inst, 90 int16_t *encoded, 91 int16_t len, 92 int16_t *decoded, 93 int16_t *speechType) 94 { 95 // Decode the G.722 encoder stream 96 *speechType=G722_WEBRTC_SPEECH; 97 return WebRtc_g722_decode((g722_decode_state_t*) G722dec_inst, 98 decoded, (uint8_t*) encoded, len); 99 } 100 101 int16_t WebRtcG722_Version(char *versionStr, short len) 102 { 103 // Get version string 104 char version[30] = "2.0.0\n"; 105 if (strlen(version) < (unsigned int)len) 106 { 107 strcpy(versionStr, version); 108 return 0; 109 } 110 else 111 { 112 return -1; 113 } 114 } 115 116