Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / libjingle / source / talk / media / base / mediachannel.h
index c2ea26f..7c42b70 100644 (file)
@@ -168,6 +168,7 @@ struct AudioOptions {
     adjust_agc_delta.SetFrom(change.adjust_agc_delta);
     experimental_agc.SetFrom(change.experimental_agc);
     experimental_aec.SetFrom(change.experimental_aec);
+    experimental_ns.SetFrom(change.experimental_ns);
     aec_dump.SetFrom(change.aec_dump);
     experimental_acm.SetFrom(change.experimental_acm);
     tx_agc_target_dbov.SetFrom(change.tx_agc_target_dbov);
@@ -195,6 +196,7 @@ struct AudioOptions {
         conference_mode == o.conference_mode &&
         experimental_agc == o.experimental_agc &&
         experimental_aec == o.experimental_aec &&
+        experimental_ns == o.experimental_ns &&
         adjust_agc_delta == o.adjust_agc_delta &&
         aec_dump == o.aec_dump &&
         experimental_acm == o.experimental_acm &&
@@ -224,6 +226,7 @@ struct AudioOptions {
     ost << ToStringIfSet("agc_delta", adjust_agc_delta);
     ost << ToStringIfSet("experimental_agc", experimental_agc);
     ost << ToStringIfSet("experimental_aec", experimental_aec);
+    ost << ToStringIfSet("experimental_ns", experimental_ns);
     ost << ToStringIfSet("aec_dump", aec_dump);
     ost << ToStringIfSet("experimental_acm", experimental_acm);
     ost << ToStringIfSet("tx_agc_target_dbov", tx_agc_target_dbov);
@@ -261,6 +264,7 @@ struct AudioOptions {
   Settable<int> adjust_agc_delta;
   Settable<bool> experimental_agc;
   Settable<bool> experimental_aec;
+  Settable<bool> experimental_ns;
   Settable<bool> aec_dump;
   Settable<bool> experimental_acm;
   // Note that tx_agc_* only applies to non-experimental AGC.
@@ -535,6 +539,10 @@ class MediaChannel : public sigslot::has_slots<> {
       const std::vector<RtpHeaderExtension>& extensions) = 0;
   virtual bool SetSendRtpHeaderExtensions(
       const std::vector<RtpHeaderExtension>& extensions) = 0;
+  // Returns the absoulte sendtime extension id value from media channel.
+  virtual int GetRtpSendTimeExtnId() const {
+    return -1;
+  }
   // Sets the initial bandwidth to use when sending starts.
   virtual bool SetStartSendBandwidth(int bps) = 0;
   // Sets the maximum allowed bandwidth to use when sending data.
@@ -745,7 +753,13 @@ struct VoiceReceiverInfo : public MediaReceiverInfo {
         jitter_buffer_preferred_ms(0),
         delay_estimate_ms(0),
         audio_level(0),
-        expand_rate(0) {
+        expand_rate(0),
+        decoding_calls_to_silence_generator(0),
+        decoding_calls_to_neteq(0),
+        decoding_normal(0),
+        decoding_plc(0),
+        decoding_cng(0),
+        decoding_plc_cng(0) {
   }
 
   int ext_seqnum;
@@ -756,6 +770,12 @@ struct VoiceReceiverInfo : public MediaReceiverInfo {
   int audio_level;
   // fraction of synthesized speech inserted through pre-emptive expansion
   float expand_rate;
+  int decoding_calls_to_silence_generator;
+  int decoding_calls_to_neteq;
+  int decoding_normal;
+  int decoding_plc;
+  int decoding_cng;
+  int decoding_plc_cng;
 };
 
 struct VideoSenderInfo : public MediaSenderInfo {
@@ -763,8 +783,10 @@ struct VideoSenderInfo : public MediaSenderInfo {
       : packets_cached(0),
         firs_rcvd(0),
         nacks_rcvd(0),
-        frame_width(0),
-        frame_height(0),
+        input_frame_width(0),
+        input_frame_height(0),
+        send_frame_width(0),
+        send_frame_height(0),
         framerate_input(0),
         framerate_sent(0),
         nominal_bitrate(0),
@@ -780,8 +802,10 @@ struct VideoSenderInfo : public MediaSenderInfo {
   int packets_cached;
   int firs_rcvd;
   int nacks_rcvd;
-  int frame_width;
-  int frame_height;
+  int input_frame_width;
+  int input_frame_height;
+  int send_frame_width;
+  int send_frame_height;
   int framerate_input;
   int framerate_sent;
   int nominal_bitrate;
@@ -873,7 +897,8 @@ struct BandwidthEstimationInfo {
         actual_enc_bitrate(0),
         retransmit_bitrate(0),
         transmit_bitrate(0),
-        bucket_delay(0) {
+        bucket_delay(0),
+        total_received_propagation_delta_ms(0) {
   }
 
   int available_send_bandwidth;
@@ -883,6 +908,11 @@ struct BandwidthEstimationInfo {
   int retransmit_bitrate;
   int transmit_bitrate;
   int bucket_delay;
+  // The following stats are only valid when
+  // StatsOptions::include_received_propagation_stats is true.
+  int total_received_propagation_delta_ms;
+  std::vector<int> recent_received_propagation_delta_ms;
+  std::vector<int64> recent_received_packet_group_arrival_time_ms;
 };
 
 struct VoiceMediaInfo {
@@ -914,6 +944,12 @@ struct DataMediaInfo {
   std::vector<DataReceiverInfo> receivers;
 };
 
+struct StatsOptions {
+  StatsOptions() : include_received_propagation_stats(false) {}
+
+  bool include_received_propagation_stats;
+};
+
 class VoiceMediaChannel : public MediaChannel {
  public:
   enum Error {
@@ -1032,7 +1068,12 @@ class VideoMediaChannel : public MediaChannel {
   // |capturer|. If |ssrc| is non zero create a new stream with |ssrc| as SSRC.
   virtual bool SetCapturer(uint32 ssrc, VideoCapturer* capturer) = 0;
   // Gets quality stats for the channel.
-  virtual bool GetStats(VideoMediaInfo* info) = 0;
+  virtual bool GetStats(const StatsOptions& options, VideoMediaInfo* info) = 0;
+  // This is needed for MediaMonitor to use the same template for voice, video
+  // and data MediaChannels.
+  bool GetStats(VideoMediaInfo* info) {
+    return GetStats(StatsOptions(), info);
+  }
 
   // Send an intra frame to the receivers.
   virtual bool SendIntraFrame() = 0;