Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / video_engine / vie_encoder.h
index 8e22ecf..1e358de 100644 (file)
 #include <list>
 #include <map>
 
+#include "webrtc/base/thread_annotations.h"
 #include "webrtc/common_types.h"
 #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h"
 #include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h"
 #include "webrtc/modules/video_coding/main/interface/video_coding_defines.h"
 #include "webrtc/modules/video_processing/main/interface/video_processing.h"
 #include "webrtc/system_wrappers/interface/scoped_ptr.h"
-#include "webrtc/system_wrappers/interface/thread_annotations.h"
 #include "webrtc/typedefs.h"
 #include "webrtc/frame_callback.h"
 #include "webrtc/video_engine/vie_defines.h"
@@ -96,13 +96,13 @@ class ViEEncoder
   virtual void DeliverFrame(int id,
                             I420VideoFrame* video_frame,
                             int num_csrcs = 0,
-                            const uint32_t CSRC[kRtpCsrcSize] = NULL);
-  virtual void DelayChanged(int id, int frame_delay);
+                            const uint32_t CSRC[kRtpCsrcSize] = NULL) OVERRIDE;
+  virtual void DelayChanged(int id, int frame_delay) OVERRIDE;
   virtual int GetPreferedFrameSettings(int* width,
                                        int* height,
-                                       int* frame_rate);
+                                       int* frame_rate) OVERRIDE;
 
-  virtual void ProviderDestroyed(int id) {
+  virtual void ProviderDestroyed(int id) OVERRIDE {
     return;
   }
 
@@ -111,8 +111,6 @@ class ViEEncoder
                               uint32_t* num_delta_frames);
 
   int PacerQueuingDelayMs() const;
-  int32_t EstimatedSendBandwidth(
-        uint32_t* available_bandwidth) const;
 
   int CodecTargetBitrate(uint32_t* bitrate) const;
   // Loss protection.
@@ -131,7 +129,7 @@ class ViEEncoder
     const uint8_t* payload_data,
     uint32_t payload_size,
     const RTPFragmentationHeader& fragmentation_header,
-    const RTPVideoHeader* rtp_video_hdr);
+    const RTPVideoHeader* rtp_video_hdr) OVERRIDE;
 
   // Implements VideoProtectionCallback.
   virtual int ProtectionRequest(
@@ -139,18 +137,20 @@ class ViEEncoder
       const FecProtectionParams* key_fec_params,
       uint32_t* sent_video_rate_bps,
       uint32_t* sent_nack_rate_bps,
-      uint32_t* sent_fec_rate_bps);
+      uint32_t* sent_fec_rate_bps) OVERRIDE;
 
   // Implements VideoSendStatisticsCallback.
   virtual int32_t SendStatistics(const uint32_t bit_rate,
-                                 const uint32_t frame_rate);
+                                 const uint32_t frame_rate) OVERRIDE;
+
   int32_t RegisterCodecObserver(ViEEncoderObserver* observer);
 
   // Implements RtcpIntraFrameObserver.
-  virtual void OnReceivedIntraFrameRequest(uint32_t ssrc);
-  virtual void OnReceivedSLI(uint32_t ssrc, uint8_t picture_id);
-  virtual void OnReceivedRPSI(uint32_t ssrc, uint64_t picture_id);
-  virtual void OnLocalSsrcChanged(uint32_t old_ssrc, uint32_t new_ssrc);
+  virtual void OnReceivedIntraFrameRequest(uint32_t ssrc) OVERRIDE;
+  virtual void OnReceivedSLI(uint32_t ssrc, uint8_t picture_id) OVERRIDE;
+  virtual void OnReceivedRPSI(uint32_t ssrc, uint64_t picture_id) OVERRIDE;
+  virtual void OnLocalSsrcChanged(uint32_t old_ssrc,
+                                  uint32_t new_ssrc) OVERRIDE;
 
   // Sets SSRCs for all streams.
   bool SetSsrcs(const std::list<unsigned int>& ssrcs);
@@ -161,15 +161,15 @@ class ViEEncoder
   int32_t RegisterEffectFilter(ViEEffectFilter* effect_filter);
 
   // Enables recording of debugging information.
-  virtual int StartDebugRecording(const char* fileNameUTF8);
+  int StartDebugRecording(const char* fileNameUTF8);
 
   // Disables recording of debugging information.
-  virtual int StopDebugRecording();
+  int StopDebugRecording();
 
   // Lets the sender suspend video when the rate drops below
   // |threshold_bps|, and turns back on when the rate goes back up above
   // |threshold_bps| + |window_bps|.
-  virtual void SuspendBelowMinBitrate();
+  void SuspendBelowMinBitrate();
 
   // New-style callbacks, used by VideoSendStream.
   void RegisterPreEncodeCallback(I420FrameCallback* pre_encode_callback);
@@ -191,7 +191,11 @@ class ViEEncoder
                         int64_t capture_time_ms, bool retransmission);
   int TimeToSendPadding(int bytes);
  private:
-  bool EncoderPaused() const;
+  bool EncoderPaused() const EXCLUSIVE_LOCKS_REQUIRED(data_cs_);
+  void TraceFrameDropStart() EXCLUSIVE_LOCKS_REQUIRED(data_cs_);
+  void TraceFrameDropEnd() EXCLUSIVE_LOCKS_REQUIRED(data_cs_);
+
+  void UpdateHistograms();
 
   int32_t engine_id_;
   const int channel_id_;
@@ -208,32 +212,34 @@ class ViEEncoder
 
   BitrateController* bitrate_controller_;
 
-  int64_t time_of_last_incoming_frame_ms_;
-  bool send_padding_;
+  int64_t time_of_last_incoming_frame_ms_ GUARDED_BY(data_cs_);
+  bool send_padding_ GUARDED_BY(data_cs_);
   int min_transmit_bitrate_kbps_ GUARDED_BY(data_cs_);
-  int target_delay_ms_;
-  bool network_is_transmitting_;
-  bool encoder_paused_;
-  bool encoder_paused_and_dropped_frame_;
-  std::map<unsigned int, int64_t> time_last_intra_request_ms_;
+  int target_delay_ms_ GUARDED_BY(data_cs_);
+  bool network_is_transmitting_ GUARDED_BY(data_cs_);
+  bool encoder_paused_ GUARDED_BY(data_cs_);
+  bool encoder_paused_and_dropped_frame_ GUARDED_BY(data_cs_);
+  std::map<unsigned int, int64_t> time_last_intra_request_ms_
+      GUARDED_BY(data_cs_);
 
   bool fec_enabled_;
   bool nack_enabled_;
 
   ViEEncoderObserver* codec_observer_ GUARDED_BY(callback_cs_);
-  ViEEffectFilter* effect_filter_;
+  ViEEffectFilter* effect_filter_ GUARDED_BY(callback_cs_);
   ProcessThread& module_process_thread_;
 
-  bool has_received_sli_;
-  uint8_t picture_id_sli_;
-  bool has_received_rpsi_;
-  uint64_t picture_id_rpsi_;
-  std::map<unsigned int, int> ssrc_streams_;
+  bool has_received_sli_ GUARDED_BY(data_cs_);
+  uint8_t picture_id_sli_ GUARDED_BY(data_cs_);
+  bool has_received_rpsi_ GUARDED_BY(data_cs_);
+  uint64_t picture_id_rpsi_ GUARDED_BY(data_cs_);
+  std::map<unsigned int, int> ssrc_streams_ GUARDED_BY(data_cs_);
 
   // Quality modes callback
   QMVideoSettingsCallback* qm_callback_;
-  bool video_suspended_;
-  I420FrameCallback* pre_encode_callback_;
+  bool video_suspended_ GUARDED_BY(data_cs_);
+  I420FrameCallback* pre_encode_callback_ GUARDED_BY(callback_cs_);
+  const int64_t start_ms_;
 };
 
 }  // namespace webrtc