Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / voice_engine / voe_codec_impl.h
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
18 namespace webrtc
19 {
20
21 class VoECodecImpl: public VoECodec
22 {
23 public:
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 SetOpusMaxBandwidth(int channel, int bandwidth_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
67 protected:
68     VoECodecImpl(voe::SharedData* shared);
69     virtual ~VoECodecImpl();
70
71 private:
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