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