1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 2470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 4470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Use of this source code is governed by a BSD-style license 5470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * that can be found in the LICENSE file in the root of the source 6470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * tree. An additional intellectual property rights grant can be found 7470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * in the file PATENTS. All contributing project authors may 8470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * be found in the AUTHORS file in the root of the source tree. 9470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 10470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 113c652b67468d182bd36aee4c31557621be50cc92kjellander@webrtc.org#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_G711_G711_INTERFACE_H_ 123c652b67468d182bd36aee4c31557621be50cc92kjellander@webrtc.org#define WEBRTC_MODULES_AUDIO_CODING_CODECS_G711_G711_INTERFACE_H_ 13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 14262e676a08fc29ee6c414f5858d68697be983515andresp@webrtc.org#include "webrtc/typedefs.h" 15470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 16470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com// Comfort noise constants 17ae4e2b352b4d17c6184687949778704ea60d1da6pbos@webrtc.org#define G711_WEBRTC_SPEECH 1 18ae4e2b352b4d17c6184687949778704ea60d1da6pbos@webrtc.org#define G711_WEBRTC_CNG 2 19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 20470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#ifdef __cplusplus 21470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comextern "C" { 22470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif 23470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 24470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/**************************************************************************** 25470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * WebRtcG711_EncodeA(...) 26470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 27470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * This function encodes a G711 A-law frame and inserts it into a packet. 28470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Input speech length has be of any length. 29470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 30470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Input: 31470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - speechIn : Input speech vector 32470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - len : Samples in speechIn 33470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 34470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Output: 35470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - encoded : The encoded data vector 36470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 372acec4cc32c3a9284afaae15ba74dab66f4bc427jmarusic@webrtc.org * Return value : Length (in bytes) of coded data. 382acec4cc32c3a9284afaae15ba74dab66f4bc427jmarusic@webrtc.org * Always equal to len input parameter. 39470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 40470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 41dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kastingsize_t WebRtcG711_EncodeA(const int16_t* speechIn, 42dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting size_t len, 43dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting uint8_t* encoded); 44470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 45470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/**************************************************************************** 46470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * WebRtcG711_EncodeU(...) 47470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 48470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * This function encodes a G711 U-law frame and inserts it into a packet. 49470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Input speech length has be of any length. 50470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 51470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Input: 52470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - speechIn : Input speech vector 53470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - len : Samples in speechIn 54470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 55470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Output: 56470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - encoded : The encoded data vector 57470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 582acec4cc32c3a9284afaae15ba74dab66f4bc427jmarusic@webrtc.org * Return value : Length (in bytes) of coded data. 592acec4cc32c3a9284afaae15ba74dab66f4bc427jmarusic@webrtc.org * Always equal to len input parameter. 60470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 61470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 62dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kastingsize_t WebRtcG711_EncodeU(const int16_t* speechIn, 63dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting size_t len, 64dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting uint8_t* encoded); 65470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 66470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/**************************************************************************** 67470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * WebRtcG711_DecodeA(...) 68470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 69470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * This function decodes a packet G711 A-law frame. 70470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 71470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Input: 72470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - encoded : Encoded data 73470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - len : Bytes in encoded vector 74470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 75470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Output: 76470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - decoded : The decoded vector 77470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - speechType : 1 normal, 2 CNG (for G711 it should 78470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * always return 1 since G711 does not have a 79470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * built-in DTX/CNG scheme) 80470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 81470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Return value : >0 - Samples in decoded vector 82470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * -1 - Error 83470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 84470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 85dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kastingsize_t WebRtcG711_DecodeA(const uint8_t* encoded, 86dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting size_t len, 87dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting int16_t* decoded, 88dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting int16_t* speechType); 89470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 90470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/**************************************************************************** 91470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * WebRtcG711_DecodeU(...) 92470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 93470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * This function decodes a packet G711 U-law frame. 94470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 95470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Input: 96470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - encoded : Encoded data 97470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - len : Bytes in encoded vector 98470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 99470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Output: 100470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - decoded : The decoded vector 101470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * - speechType : 1 normal, 2 CNG (for G711 it should 102470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * always return 1 since G711 does not have a 103470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * built-in DTX/CNG scheme) 104470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 105470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Return value : >0 - Samples in decoded vector 106470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * -1 - Error 107470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 108470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 109dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kastingsize_t WebRtcG711_DecodeU(const uint8_t* encoded, 110dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting size_t len, 111dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting int16_t* decoded, 112dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting int16_t* speechType); 1135ac387c4d1434fc086f3f159bdde068a5994feedtina.legrand@webrtc.org 114470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/********************************************************************** 115470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* WebRtcG711_Version(...) 116470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* 117470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* This function gives the version string of the G.711 codec. 118470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* 119470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* Input: 120470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* - lenBytes: the size of Allocated space (in Bytes) where 121470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* the version number is written to (in string format). 122470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* 123470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* Output: 124470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* - version: Pointer to a buffer where the version number is 125470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* written to. 126470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com* 127470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com*/ 128470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 129ae4e2b352b4d17c6184687949778704ea60d1da6pbos@webrtc.orgint16_t WebRtcG711_Version(char* version, int16_t lenBytes); 130470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 131470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#ifdef __cplusplus 132470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com} 133470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif 134470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 1353c652b67468d182bd36aee4c31557621be50cc92kjellander@webrtc.org#endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_G711_G711_INTERFACE_H_ 136