Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / video / video_send_stream.h
index 304d825..f1f8f7d 100644 (file)
@@ -8,18 +8,24 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#ifndef WEBRTC_VIDEO_ENGINE_VIDEO_SEND_STREAM_IMPL_H_
-#define WEBRTC_VIDEO_ENGINE_VIDEO_SEND_STREAM_IMPL_H_
+#ifndef WEBRTC_VIDEO_VIDEO_SEND_STREAM_H_
+#define WEBRTC_VIDEO_VIDEO_SEND_STREAM_H_
 
+#include <map>
 #include <vector>
 
 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
+#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h"
+#include "webrtc/video/encoded_frame_callback_adapter.h"
+#include "webrtc/video/send_statistics_proxy.h"
 #include "webrtc/video/transport_adapter.h"
 #include "webrtc/video_receive_stream.h"
 #include "webrtc/video_send_stream.h"
+#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
 
 namespace webrtc {
 
+class CpuOveruseObserver;
 class VideoEngine;
 class ViEBase;
 class ViECapture;
@@ -32,39 +38,47 @@ class ViERTP_RTCP;
 
 namespace internal {
 
-class ResolutionAdaptor;
-
 class VideoSendStream : public webrtc::VideoSendStream,
                         public VideoSendStreamInput {
  public:
   VideoSendStream(newapi::Transport* transport,
-                  bool overuse_detection,
+                  CpuOveruseObserver* overuse_observer,
                   webrtc::VideoEngine* video_engine,
-                  const VideoSendStream::Config& config);
+                  const VideoSendStream::Config& config,
+                  const std::vector<VideoStream> video_streams,
+                  const void* encoder_settings,
+                  const std::map<uint32_t, RtpState>& suspended_ssrcs,
+                  int base_channel,
+                  int start_bitrate);
 
   virtual ~VideoSendStream();
 
-  virtual void PutFrame(const I420VideoFrame& frame,
-                        uint32_t time_since_capture_ms) OVERRIDE;
+  virtual void Start() OVERRIDE;
+  virtual void Stop() OVERRIDE;
 
-  virtual VideoSendStreamInput* Input() OVERRIDE;
+  virtual bool ReconfigureVideoEncoder(const std::vector<VideoStream>& streams,
+                                       const void* encoder_settings) OVERRIDE;
 
-  virtual void StartSend() OVERRIDE;
+  virtual Stats GetStats() const OVERRIDE;
 
-  virtual void StopSend() OVERRIDE;
+  bool DeliverRtcp(const uint8_t* packet, size_t length);
 
-  virtual bool SetTargetBitrate(int min_bitrate, int max_bitrate,
-                                const std::vector<SimulcastStream>& streams)
-      OVERRIDE;
+  // From VideoSendStreamInput.
+  virtual void SwapFrame(I420VideoFrame* frame) OVERRIDE;
 
-  virtual void GetSendCodec(VideoCodec* send_codec) OVERRIDE;
+  // From webrtc::VideoSendStream.
+  virtual VideoSendStreamInput* Input() OVERRIDE;
 
- public:
-  bool DeliverRtcp(const uint8_t* packet, size_t length);
+  typedef std::map<uint32_t, RtpState> RtpStateMap;
+  RtpStateMap GetRtpStates() const;
 
  private:
+  void ConfigureSsrcs();
   TransportAdapter transport_adapter_;
-  VideoSendStream::Config config_;
+  EncodedFrameCallbackAdapter encoded_frame_proxy_;
+  const VideoSendStream::Config config_;
+  const int start_bitrate_bps_;
+  std::map<uint32_t, RtpState> suspended_ssrcs_;
 
   ViEBase* video_engine_base_;
   ViECapture* capture_;
@@ -77,9 +91,10 @@ class VideoSendStream : public webrtc::VideoSendStream,
 
   int channel_;
   int capture_id_;
-  scoped_ptr<ResolutionAdaptor> overuse_observer_;
+
+  SendStatisticsProxy stats_proxy_;
 };
 }  // namespace internal
 }  // namespace webrtc
 
-#endif  // WEBRTC_VIDEO_ENGINE_INTERNAL_VIDEO_SEND_STREAM_H_
+#endif  // WEBRTC_VIDEO_VIDEO_SEND_STREAM_H_