/* * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef MODULES_AUDIO_CODING_CODECS_G722_G722_INTERFACE_H_ #define MODULES_AUDIO_CODING_CODECS_G722_G722_INTERFACE_H_ #include /* * Solution to support multiple instances */ typedef struct WebRtcG722EncInst G722EncInst; typedef struct WebRtcG722DecInst G722DecInst; /* * Comfort noise constants */ #define G722_WEBRTC_SPEECH 1 #define G722_WEBRTC_CNG 2 #ifdef __cplusplus extern "C" { #endif /**************************************************************************** * WebRtcG722_CreateEncoder(...) * * Create memory used for G722 encoder * * Input: * - G722enc_inst : G722 instance for encoder * * Return value : 0 - Ok * -1 - Error */ int16_t WebRtcG722_CreateEncoder(G722EncInst** G722enc_inst); /**************************************************************************** * WebRtcG722_EncoderInit(...) * * This function initializes a G722 instance * * Input: * - G722enc_inst : G722 instance, i.e. the user that should receive * be initialized * * Return value : 0 - Ok * -1 - Error */ int16_t WebRtcG722_EncoderInit(G722EncInst* G722enc_inst); /**************************************************************************** * WebRtcG722_FreeEncoder(...) * * Free the memory used for G722 encoder * * Input: * - G722enc_inst : G722 instance for encoder * * Return value : 0 - Ok * -1 - Error */ int WebRtcG722_FreeEncoder(G722EncInst* G722enc_inst); /**************************************************************************** * WebRtcG722_Encode(...) * * This function encodes G722 encoded data. * * Input: * - G722enc_inst : G722 instance, i.e. the user that should encode * a packet * - speechIn : Input speech vector * - len : Samples in speechIn * * Output: * - encoded : The encoded data vector * * Return value : Length (in bytes) of coded data */ size_t WebRtcG722_Encode(G722EncInst* G722enc_inst, const int16_t* speechIn, size_t len, uint8_t* encoded); /**************************************************************************** * WebRtcG722_CreateDecoder(...) * * Create memory used for G722 encoder * * Input: * - G722dec_inst : G722 instance for decoder * * Return value : 0 - Ok * -1 - Error */ int16_t WebRtcG722_CreateDecoder(G722DecInst** G722dec_inst); /**************************************************************************** * WebRtcG722_DecoderInit(...) * * This function initializes a G722 instance * * Input: * - inst : G722 instance */ void WebRtcG722_DecoderInit(G722DecInst* inst); /**************************************************************************** * WebRtcG722_FreeDecoder(...) * * Free the memory used for G722 decoder * * Input: * - G722dec_inst : G722 instance for decoder * * Return value : 0 - Ok * -1 - Error */ int WebRtcG722_FreeDecoder(G722DecInst* G722dec_inst); /**************************************************************************** * WebRtcG722_Decode(...) * * This function decodes a packet with G729 frame(s). Output speech length * will be a multiple of 80 samples (80*frames/packet). * * Input: * - G722dec_inst : G722 instance, i.e. the user that should decode * a packet * - encoded : Encoded G722 frame(s) * - len : Bytes in encoded vector * * Output: * - decoded : The decoded vector * - speechType : 1 normal, 2 CNG (Since G722 does not have its own * DTX/CNG scheme it should always return 1) * * Return value : Samples in decoded vector */ size_t WebRtcG722_Decode(G722DecInst* G722dec_inst, const uint8_t* encoded, size_t len, int16_t* decoded, int16_t* speechType); /**************************************************************************** * WebRtcG722_Version(...) * * Get a string with the current version of the codec */ int16_t WebRtcG722_Version(char* versionStr, short len); #ifdef __cplusplus } #endif #endif /* MODULES_AUDIO_CODING_CODECS_G722_G722_INTERFACE_H_ */