Update talk to 55906045.

Review URL: https://webrtc-codereview.appspot.com/3159005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5065 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/media/base/mediachannel.h b/talk/media/base/mediachannel.h
index 49b3336..919248f 100644
--- a/talk/media/base/mediachannel.h
+++ b/talk/media/base/mediachannel.h
@@ -183,6 +183,7 @@
     rx_agc_limiter.SetFrom(change.rx_agc_limiter);
     recording_sample_rate.SetFrom(change.recording_sample_rate);
     playout_sample_rate.SetFrom(change.playout_sample_rate);
+    dscp.SetFrom(change.dscp);
   }
 
   bool operator==(const AudioOptions& o) const {
@@ -206,7 +207,8 @@
         rx_agc_digital_compression_gain == o.rx_agc_digital_compression_gain &&
         rx_agc_limiter == o.rx_agc_limiter &&
         recording_sample_rate == o.recording_sample_rate &&
-        playout_sample_rate == o.playout_sample_rate;
+        playout_sample_rate == o.playout_sample_rate &&
+        dscp == o.dscp;
   }
 
   std::string ToString() const {
@@ -235,6 +237,7 @@
     ost << ToStringIfSet("rx_agc_limiter", rx_agc_limiter);
     ost << ToStringIfSet("recording_sample_rate", recording_sample_rate);
     ost << ToStringIfSet("playout_sample_rate", playout_sample_rate);
+    ost << ToStringIfSet("dscp", dscp);
     ost << "}";
     return ost.str();
   }
@@ -269,6 +272,8 @@
   Settable<bool> rx_agc_limiter;
   Settable<uint32> recording_sample_rate;
   Settable<uint32> playout_sample_rate;
+  // Set DSCP value for packet sent from audio channel.
+  Settable<bool> dscp;
 };
 
 // Options that can be applied to a VideoMediaChannel or a VideoMediaEngine.
@@ -307,6 +312,7 @@
         change.system_high_adaptation_threshhold);
     buffered_mode_latency.SetFrom(change.buffered_mode_latency);
     lower_min_bitrate.SetFrom(change.lower_min_bitrate);
+    dscp.SetFrom(change.dscp);
   }
 
   bool operator==(const VideoOptions& o) const {
@@ -331,7 +337,8 @@
         system_high_adaptation_threshhold ==
             o.system_high_adaptation_threshhold &&
         buffered_mode_latency == o.buffered_mode_latency &&
-        lower_min_bitrate == o.lower_min_bitrate;
+        lower_min_bitrate == o.lower_min_bitrate &&
+        dscp == o.dscp;
   }
 
   std::string ToString() const {
@@ -359,6 +366,7 @@
     ost << ToStringIfSet("high", system_high_adaptation_threshhold);
     ost << ToStringIfSet("buffered mode latency", buffered_mode_latency);
     ost << ToStringIfSet("lower min bitrate", lower_min_bitrate);
+    ost << ToStringIfSet("dscp", dscp);
     ost << "}";
     return ost.str();
   }
@@ -405,6 +413,8 @@
   Settable<int> buffered_mode_latency;
   // Make minimum configured send bitrate even lower than usual, at 30kbit.
   Settable<bool> lower_min_bitrate;
+  // Set DSCP value for packet sent from video channel.
+  Settable<bool> dscp;
 };
 
 // A class for playing out soundclips.
@@ -543,6 +553,21 @@
     return network_interface_->SetOption(type, opt, option);
   }
 
+ protected:
+  // This method sets DSCP |value| on both RTP and RTCP channels.
+  int SetDscp(talk_base::DiffServCodePoint value) {
+    int ret;
+    ret = SetOption(NetworkInterface::ST_RTP,
+                    talk_base::Socket::OPT_DSCP,
+                    value);
+    if (ret == 0) {
+      ret = SetOption(NetworkInterface::ST_RTCP,
+                      talk_base::Socket::OPT_DSCP,
+                      value);
+    }
+    return ret;
+  }
+
  private:
   bool DoSendPacket(talk_base::Buffer* packet, bool rtcp) {
     talk_base::CritScope cs(&network_interface_crit_);