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