1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 2851becd00ce814f0e02a5c5a56ac0322a7f9494dtommi@webrtc.org * Copyright (c) 2012 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 11470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#ifndef WEBRTC_VOICE_ENGINE_VOE_CODEC_IMPL_H 12470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#define WEBRTC_VOICE_ENGINE_VOE_CODEC_IMPL_H 13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 14956aa7e0874f2e08c335a82a2c32f400fac8b031pbos@webrtc.org#include "webrtc/voice_engine/include/voe_codec.h" 15470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 16956aa7e0874f2e08c335a82a2c32f400fac8b031pbos@webrtc.org#include "webrtc/voice_engine/shared_data.h" 17470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 180d266054acece70259fc1e85026194154f41e5a0Jelena Marusicnamespace webrtc { 19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 200d266054acece70259fc1e85026194154f41e5a0Jelena Marusicclass VoECodecImpl : public VoECodec { 210d266054acece70259fc1e85026194154f41e5a0Jelena Marusic public: 220d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int NumOfCodecs() override; 23470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 240d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetCodec(int index, CodecInst& codec) override; 25470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 260d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetSendCodec(int channel, const CodecInst& codec) override; 27470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 280d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetSendCodec(int channel, CodecInst& codec) override; 29470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 300d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetBitRate(int channel, int bitrate_bps) override; 31adf89b7e33cc54dab9365dddead687a46a074cf0Ivo Creusen 320d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetRecCodec(int channel, CodecInst& codec) override; 33470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 340d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetSendCNPayloadType( 350d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int channel, 360d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int type, 370d266054acece70259fc1e85026194154f41e5a0Jelena Marusic PayloadFrequencies frequency = kFreq16000Hz) override; 38470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 390d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetRecPayloadType(int channel, const CodecInst& codec) override; 40470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 410d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetRecPayloadType(int channel, CodecInst& codec) override; 42470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 430d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetFECStatus(int channel, bool enable) override; 44c1a40a7b68a8d253b0ba32b89f3126931eeaeab3minyue@webrtc.org 450d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetFECStatus(int channel, bool& enabled) override; 46c1a40a7b68a8d253b0ba32b89f3126931eeaeab3minyue@webrtc.org 470d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetVADStatus(int channel, 480d266054acece70259fc1e85026194154f41e5a0Jelena Marusic bool enable, 490d266054acece70259fc1e85026194154f41e5a0Jelena Marusic VadModes mode = kVadConventional, 500d266054acece70259fc1e85026194154f41e5a0Jelena Marusic bool disableDTX = false) override; 51470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 520d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int GetVADStatus(int channel, 530d266054acece70259fc1e85026194154f41e5a0Jelena Marusic bool& enabled, 540d266054acece70259fc1e85026194154f41e5a0Jelena Marusic VadModes& mode, 550d266054acece70259fc1e85026194154f41e5a0Jelena Marusic bool& disabledDTX) override; 56470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 570d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetOpusMaxPlaybackRate(int channel, int frequency_hz) override; 586aac93bd9c3da92e92b016d83c8f84c65aae65b6minyue@webrtc.org 590d266054acece70259fc1e85026194154f41e5a0Jelena Marusic int SetOpusDtx(int channel, bool enable_dtx) override; 609b2e1144df6e3622354caca00baf4a7462a0809cminyue@webrtc.org 61b04965ccf83c2bc6e2758abab9bea0c18551a54civoc RtcEventLog* GetEventLog() override; 62b04965ccf83c2bc6e2758abab9bea0c18551a54civoc 630d266054acece70259fc1e85026194154f41e5a0Jelena Marusic protected: 640d266054acece70259fc1e85026194154f41e5a0Jelena Marusic VoECodecImpl(voe::SharedData* shared); 650d266054acece70259fc1e85026194154f41e5a0Jelena Marusic ~VoECodecImpl() override; 66470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 670d266054acece70259fc1e85026194154f41e5a0Jelena Marusic private: 680d266054acece70259fc1e85026194154f41e5a0Jelena Marusic voe::SharedData* _shared; 69470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 70470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 71d900e8bea84c474696bf0219aed1353ce65ffd8epbos@webrtc.org} // namespace webrtc 72470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 73470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif // WEBRTC_VOICE_ENGINE_VOE_CODEC_IMPL_H 74