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(G722EncoderState));
     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         (G722EncoderState*) G722enc_inst, 64000, 2);
     35     if (G722enc_inst == NULL) {
     36         return -1;
     37     } else {
     38         return 0;
     39     }
     40 }
     41 
     42 int WebRtcG722_FreeEncoder(G722EncInst *G722enc_inst)
     43 {
     44     // Free encoder memory
     45     return WebRtc_g722_encode_release((G722EncoderState*) G722enc_inst);
     46 }
     47 
     48 size_t WebRtcG722_Encode(G722EncInst *G722enc_inst,
     49                          const int16_t* speechIn,
     50                          size_t len,
     51                          uint8_t* encoded)
     52 {
     53     unsigned char *codechar = (unsigned char*) encoded;
     54     // Encode the input speech vector
     55     return WebRtc_g722_encode((G722EncoderState*) G722enc_inst, codechar,
     56                               speechIn, len);
     57 }
     58 
     59 int16_t WebRtcG722_CreateDecoder(G722DecInst **G722dec_inst)
     60 {
     61     *G722dec_inst=(G722DecInst*)malloc(sizeof(G722DecoderState));
     62     if (*G722dec_inst!=NULL) {
     63       return(0);
     64     } else {
     65       return(-1);
     66     }
     67 }
     68 
     69 void WebRtcG722_DecoderInit(G722DecInst* inst) {
     70   // Create and/or reset the G.722 decoder
     71   // Bitrate 64 kbps and wideband mode (2)
     72   WebRtc_g722_decode_init((G722DecoderState*)inst, 64000, 2);
     73 }
     74 
     75 int WebRtcG722_FreeDecoder(G722DecInst *G722dec_inst)
     76 {
     77     // Free encoder memory
     78     return WebRtc_g722_decode_release((G722DecoderState*) G722dec_inst);
     79 }
     80 
     81 size_t WebRtcG722_Decode(G722DecInst *G722dec_inst,
     82                          const uint8_t *encoded,
     83                          size_t len,
     84                          int16_t *decoded,
     85                          int16_t *speechType)
     86 {
     87     // Decode the G.722 encoder stream
     88     *speechType=G722_WEBRTC_SPEECH;
     89     return WebRtc_g722_decode((G722DecoderState*) G722dec_inst, decoded,
     90                               encoded, len);
     91 }
     92 
     93 int16_t WebRtcG722_Version(char *versionStr, short len)
     94 {
     95     // Get version string
     96     char version[30] = "2.0.0\n";
     97     if (strlen(version) < (unsigned int)len)
     98     {
     99         strcpy(versionStr, version);
    100         return 0;
    101     }
    102     else
    103     {
    104         return -1;
    105     }
    106 }
    107 
    108