1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_VOICE_ENGINE_VOE_CODEC_IMPL_H 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_VOICE_ENGINE_VOE_CODEC_IMPL_H 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 14471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/include/voe_codec.h" 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 16471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/shared_data.h" 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnamespace webrtc 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass VoECodecImpl: public VoECodec 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual int NumOfCodecs(); 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual int GetCodec(int index, CodecInst& codec); 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual int SetSendCodec(int channel, const CodecInst& codec); 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual int GetSendCodec(int channel, CodecInst& codec); 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual int GetRecCodec(int channel, CodecInst& codec); 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual int SetSendCNPayloadType( 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int channel, int type, 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org PayloadFrequencies frequency = kFreq16000Hz); 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual int SetRecPayloadType(int channel, 39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const CodecInst& codec); 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual int GetRecPayloadType(int channel, CodecInst& codec); 42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 43dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org virtual int SetFECStatus(int channel, bool enable); 44dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org 45dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org virtual int GetFECStatus(int channel, bool& enabled); 46dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org 47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual int SetVADStatus(int channel, 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool enable, 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org VadModes mode = kVadConventional, 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool disableDTX = false); 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual int GetVADStatus(int channel, 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool& enabled, 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org VadModes& mode, 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool& disabledDTX); 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 57b0aac71bfeb5b06083a9664434d936e091f54d91minyue@webrtc.org virtual int SetOpusMaxPlaybackRate(int channel, int frequency_hz); 581bfd54032a8e60b993fb3b32c15ba9c55184c86bminyue@webrtc.org 597db529046a2f5fc57f964619b9926a53b513c0a4turaj@webrtc.org // Dual-streaming 607db529046a2f5fc57f964619b9926a53b513c0a4turaj@webrtc.org virtual int SetSecondarySendCodec(int channel, const CodecInst& codec, 617db529046a2f5fc57f964619b9926a53b513c0a4turaj@webrtc.org int red_payload_type); 627db529046a2f5fc57f964619b9926a53b513c0a4turaj@webrtc.org 637db529046a2f5fc57f964619b9926a53b513c0a4turaj@webrtc.org virtual int RemoveSecondarySendCodec(int channel); 647db529046a2f5fc57f964619b9926a53b513c0a4turaj@webrtc.org 657db529046a2f5fc57f964619b9926a53b513c0a4turaj@webrtc.org virtual int GetSecondarySendCodec(int channel, CodecInst& codec); 667db529046a2f5fc57f964619b9926a53b513c0a4turaj@webrtc.org 67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprotected: 68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org VoECodecImpl(voe::SharedData* shared); 69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual ~VoECodecImpl(); 70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate: 72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void ACMToExternalCodecRepresentation(CodecInst& toInst, 73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const CodecInst& fromInst); 74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void ExternalToACMCodecRepresentation(CodecInst& toInst, 76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const CodecInst& fromInst); 77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 78b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org voe::SharedData* _shared; 79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 813b89e10f31160da35b408fd00cb8f89d2b08862dpbos@webrtc.org} // namespace webrtc 82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // WEBRTC_VOICE_ENGINE_VOE_CODEC_IMPL_H 84