| /* |
| * 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 <stddef.h> |
| #include <stdint.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 |
| */ |
| |
| 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_ */ |