| /* | |
| * 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_MAIN_INTERFACE_G722_INTERFACE_H_ | |
| #define MODULES_AUDIO_CODING_CODECS_G722_MAIN_INTERFACE_G722_INTERFACE_H_ | |
| #include "webrtc/typedefs.h" | |
| /* | |
| * 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 | |
| */ | |
| int16_t WebRtcG722_Encode(G722EncInst* G722enc_inst, | |
| const int16_t* speechIn, | |
| int16_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 G729 instance | |
| * | |
| * Input: | |
| * - G729_decinst_t : G729 instance, i.e. the user that should receive | |
| * be initialized | |
| * | |
| * Return value : 0 - Ok | |
| * -1 - Error | |
| */ | |
| int16_t WebRtcG722_DecoderInit(G722DecInst *G722dec_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 : >0 - Samples in decoded vector | |
| * -1 - Error | |
| */ | |
| int16_t WebRtcG722_Decode(G722DecInst *G722dec_inst, | |
| const uint8_t* encoded, | |
| int16_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_MAIN_INTERFACE_G722_INTERFACE_H_ */ |