Upstream version 7.36.149.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 SetVADStatus(int channel,
44                              bool enable,
45                              VadModes mode = kVadConventional,
46                              bool disableDTX = false);
47
48     virtual int GetVADStatus(int channel,
49                              bool& enabled,
50                              VadModes& mode,
51                              bool& disabledDTX);
52
53     // Dual-streaming
54     virtual int SetSecondarySendCodec(int channel, const CodecInst& codec,
55                                       int red_payload_type);
56
57     virtual int RemoveSecondarySendCodec(int channel);
58
59     virtual int GetSecondarySendCodec(int channel, CodecInst& codec);
60
61 protected:
62     VoECodecImpl(voe::SharedData* shared);
63     virtual ~VoECodecImpl();
64
65 private:
66     void ACMToExternalCodecRepresentation(CodecInst& toInst,
67                                           const CodecInst& fromInst);
68
69     void ExternalToACMCodecRepresentation(CodecInst& toInst,
70                                           const CodecInst& fromInst);
71
72     voe::SharedData* _shared;
73 };
74
75 }  // namespace webrtc
76
77 #endif  // WEBRTC_VOICE_ENGINE_VOE_CODEC_IMPL_H