blob: eb955ece93f89022aa485491635db1fccdd46d03 [file] [log] [blame]
andrew@webrtc.orga7b57da2012-10-22 18:19:23 +00001/*
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 "voe_codec.h"
15
16#include "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 SetAMREncFormat(int channel,
35 AmrMode mode = kRfc3267BwEfficient);
36
37 virtual int SetAMRDecFormat(int channel,
38 AmrMode mode = kRfc3267BwEfficient);
39
40 virtual int SetAMRWbEncFormat(int channel,
41 AmrMode mode = kRfc3267BwEfficient);
42
43 virtual int SetAMRWbDecFormat(int channel,
44 AmrMode mode = kRfc3267BwEfficient);
45
46 virtual int SetSendCNPayloadType(
47 int channel, int type,
48 PayloadFrequencies frequency = kFreq16000Hz);
49
50 virtual int SetRecPayloadType(int channel,
51 const CodecInst& codec);
52
53 virtual int GetRecPayloadType(int channel, CodecInst& codec);
54
55 virtual int SetISACInitTargetRate(int channel,
56 int rateBps,
57 bool useFixedFrameSize = false);
58
59 virtual int SetISACMaxRate(int channel, int rateBps);
60
61 virtual int SetISACMaxPayloadSize(int channel, int sizeBytes);
62
63 virtual int SetVADStatus(int channel,
64 bool enable,
65 VadModes mode = kVadConventional,
66 bool disableDTX = false);
67
68 virtual int GetVADStatus(int channel,
69 bool& enabled,
70 VadModes& mode,
71 bool& disabledDTX);
72
73protected:
74 VoECodecImpl(voe::SharedData* shared);
75 virtual ~VoECodecImpl();
76
77private:
78 void ACMToExternalCodecRepresentation(CodecInst& toInst,
79 const CodecInst& fromInst);
80
81 void ExternalToACMCodecRepresentation(CodecInst& toInst,
82 const CodecInst& fromInst);
83
84 voe::SharedData* _shared;
85};
86
87} // namespace webrtc
88
89#endif // WEBRTC_VOICE_ENGINE_VOE_CODEC_IMPL_H