Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / video_engine / vie_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_VIDEO_ENGINE_VIE_CODEC_IMPL_H_
12 #define WEBRTC_VIDEO_ENGINE_VIE_CODEC_IMPL_H_
13
14 #include "webrtc/typedefs.h"
15 #include "webrtc/video_engine/include/vie_codec.h"
16 #include "webrtc/video_engine/vie_defines.h"
17 #include "webrtc/video_engine/vie_ref_count.h"
18
19 namespace webrtc {
20
21 class ViESharedData;
22
23 class ViECodecImpl
24     : public ViECodec,
25       public ViERefCount {
26  public:
27   virtual int Release();
28
29   // Implements ViECodec.
30   virtual int NumberOfCodecs() const;
31   virtual int GetCodec(const unsigned char list_number,
32                        VideoCodec& video_codec) const;
33   virtual int SetSendCodec(const int video_channel,
34                            const VideoCodec& video_codec);
35   virtual int GetSendCodec(const int video_channel,
36                            VideoCodec& video_codec) const;
37   virtual int SetReceiveCodec(const int video_channel,
38                               const VideoCodec& video_codec);
39   virtual int GetReceiveCodec(const int video_channel,
40                               VideoCodec& video_codec) const;
41   virtual int GetCodecConfigParameters(
42     const int video_channel,
43     unsigned char config_parameters[kConfigParameterSize],
44     unsigned char& config_parameters_size) const;
45   virtual int SetImageScaleStatus(const int video_channel, const bool enable);
46   virtual int GetSendCodecStastistics(const int video_channel,
47                                       unsigned int& key_frames,
48                                       unsigned int& delta_frames) const;
49   virtual int GetReceiveCodecStastistics(const int video_channel,
50                                          unsigned int& key_frames,
51                                          unsigned int& delta_frames) const;
52   virtual int GetReceiveSideDelay(const int video_channel,
53                                   int* delay_ms) const;
54   virtual int GetCodecTargetBitrate(const int video_channel,
55                                     unsigned int* bitrate) const;
56   virtual int GetNumDiscardedPackets(int video_channel) const;
57   virtual int SetKeyFrameRequestCallbackStatus(const int video_channel,
58                                                const bool enable);
59   virtual int SetSignalKeyPacketLossStatus(const int video_channel,
60                                            const bool enable,
61                                            const bool only_key_frames = false);
62   virtual int RegisterEncoderObserver(const int video_channel,
63                                       ViEEncoderObserver& observer);
64   virtual int DeregisterEncoderObserver(const int video_channel);
65   virtual int RegisterDecoderObserver(const int video_channel,
66                                       ViEDecoderObserver& observer);
67   virtual int DeregisterDecoderObserver(const int video_channel);
68   virtual int SendKeyFrame(const int video_channel);
69   virtual int WaitForFirstKeyFrame(const int video_channel, const bool wait);
70   virtual int StartDebugRecording(int video_channel,
71                                   const char* file_name_utf8);
72   virtual int StopDebugRecording(int video_channel);
73   virtual void SuspendBelowMinBitrate(int video_channel);
74   virtual bool GetSendSideDelay(int video_channel, int* avg_delay_ms,
75                                 int* max_delay_ms) const;
76
77  protected:
78   explicit ViECodecImpl(ViESharedData* shared_data);
79   virtual ~ViECodecImpl();
80
81  private:
82   bool CodecValid(const VideoCodec& video_codec);
83
84   ViESharedData* shared_data_;
85 };
86
87 }  // namespace webrtc
88
89 #endif  // WEBRTC_VIDEO_ENGINE_VIE_CODEC_IMPL_H_