Enable pacing by default and remove the option to disable it from the new API.

BUG=1672
R=mflodman@webrtc.org, pbos@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6416 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/pacing/paced_sender.cc b/webrtc/modules/pacing/paced_sender.cc
index 125d3c0..e9f9bdd 100644
--- a/webrtc/modules/pacing/paced_sender.cc
+++ b/webrtc/modules/pacing/paced_sender.cc
@@ -124,7 +124,7 @@
                          int max_bitrate_kbps,
                          int min_bitrate_kbps)
     : callback_(callback),
-      enabled_(false),
+      enabled_(true),
       paused_(false),
       max_queue_length_ms_(kDefaultMaxQueueLengthMs),
       critsect_(CriticalSectionWrapper::CreateCriticalSection()),
diff --git a/webrtc/modules/pacing/paced_sender_unittest.cc b/webrtc/modules/pacing/paced_sender_unittest.cc
index 435c93c..9763c80 100644
--- a/webrtc/modules/pacing/paced_sender_unittest.cc
+++ b/webrtc/modules/pacing/paced_sender_unittest.cc
@@ -61,7 +61,6 @@
     // Need to initialize PacedSender after we initialize clock.
     send_bucket_.reset(
         new PacedSender(&callback_, kPaceMultiplier * kTargetBitrate, 0));
-    send_bucket_->SetStatus(true);
   }
 
   void SendAndExpectPacket(PacedSender::Priority priority,
@@ -276,7 +275,6 @@
   PacedSenderPadding callback;
   send_bucket_.reset(
       new PacedSender(&callback, kPaceMultiplier * kTargetBitrate, 0));
-  send_bucket_->SetStatus(true);
   send_bucket_->UpdateBitrate(kPaceMultiplier * kTargetBitrate, kTargetBitrate);
   int64_t start_time = TickTime::MillisecondTimestamp();
   int media_bytes = 0;
diff --git a/webrtc/video/call_perf_tests.cc b/webrtc/video/call_perf_tests.cc
index f9e44ae..fa3f238 100644
--- a/webrtc/video/call_perf_tests.cc
+++ b/webrtc/video/call_perf_tests.cc
@@ -642,7 +642,6 @@
 
   observer.SetReceivers(receiver_call->Receiver(), sender_call->Receiver());
 
-  send_config_.pacing = true;
   if (pad_to_min_bitrate) {
     send_config_.rtp.min_transmit_bitrate_bps = kMinTransmitBitrateBps;
   } else {
diff --git a/webrtc/video/rampup_tests.cc b/webrtc/video/rampup_tests.cc
index d8eb6c7..86950ce 100644
--- a/webrtc/video/rampup_tests.cc
+++ b/webrtc/video/rampup_tests.cc
@@ -407,7 +407,7 @@
   virtual void SetUp() { reserved_ssrcs_.clear(); }
 
  protected:
-  void RunRampUpTest(bool pacing, bool rtx, size_t num_streams) {
+  void RunRampUpTest(bool rtx, size_t num_streams) {
     std::vector<uint32_t> ssrcs(GenerateSsrcs(num_streams, 100));
     std::vector<uint32_t> rtx_ssrcs(GenerateSsrcs(num_streams, 200));
     StreamObserver::SsrcMap rtx_ssrc_map;
@@ -438,7 +438,6 @@
       video_streams[0].max_bitrate_bps = 2000000;
     }
 
-    send_config.pacing = pacing;
     send_config.rtp.nack.rtp_history_ms = 1000;
     send_config.rtp.ssrcs = ssrcs;
     if (rtx) {
@@ -516,7 +515,6 @@
         RtpExtension(RtpExtension::kTOffset,
                      kTransmissionTimeOffsetExtensionId));
     send_config.suspend_below_min_bitrate = true;
-    send_config.pacing = true;
 
     VideoSendStream* send_stream =
         call->CreateVideoSendStream(send_config, video_streams, NULL);
@@ -565,24 +563,16 @@
   std::map<uint32_t, bool> reserved_ssrcs_;
 };
 
-TEST_F(RampUpTest, SingleStreamWithoutPacing) {
-  RunRampUpTest(false, false, 1);
+TEST_F(RampUpTest, SingleStream) {
+  RunRampUpTest(false, 1);
 }
 
-TEST_F(RampUpTest, SingleStreamWithPacing) {
-  RunRampUpTest(true, false, 1);
+TEST_F(RampUpTest, Simulcast) {
+  RunRampUpTest(false, 3);
 }
 
-TEST_F(RampUpTest, SimulcastWithoutPacing) {
-  RunRampUpTest(false, false, 3);
-}
-
-TEST_F(RampUpTest, SimulcastWithPacing) {
-  RunRampUpTest(true, false, 3);
-}
-
-TEST_F(RampUpTest, SimulcastWithPacingAndRtx) {
-  RunRampUpTest(true, true, 3);
+TEST_F(RampUpTest, SimulcastWithRtx) {
+  RunRampUpTest(true, 3);
 }
 
 TEST_F(RampUpTest, UpDownUpOneStream) { RunRampUpDownUpTest(1, false); }
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc
index fa13c99..170badc 100644
--- a/webrtc/video/video_send_stream.cc
+++ b/webrtc/video/video_send_stream.cc
@@ -101,8 +101,6 @@
   }
   if (target_delay_ms > 0)
     ss << ", target_delay_ms: " << target_delay_ms;
-  if (pacing)
-    ss << ", pacing: on";
   if (suspend_below_min_bitrate)
     ss << ", suspend_below_min_bitrate: on";
   ss << '}';
@@ -131,9 +129,6 @@
   assert(rtp_rtcp_ != NULL);
 
   assert(config_.rtp.ssrcs.size() > 0);
-  if (config_.suspend_below_min_bitrate)
-    assert(config_.pacing);
-  rtp_rtcp_->SetTransmissionSmoothingStatus(channel_, config_.pacing);
 
   assert(config_.rtp.min_transmit_bitrate_bps >= 0);
   rtp_rtcp_->SetMinTransmitBitrate(channel_,
diff --git a/webrtc/video/video_send_stream_tests.cc b/webrtc/video/video_send_stream_tests.cc
index db71f54..dcbcfe1 100644
--- a/webrtc/video/video_send_stream_tests.cc
+++ b/webrtc/video/video_send_stream_tests.cc
@@ -75,8 +75,7 @@
   }
 
   void TestNackRetransmission(uint32_t retransmit_ssrc,
-                              uint8_t retransmit_payload_type,
-                              bool enable_pacing);
+                              uint8_t retransmit_payload_type);
 
   void TestPacketFragmentationSize(VideoFormat format, bool with_fec);
 
@@ -504,8 +503,7 @@
 
 void VideoSendStreamTest::TestNackRetransmission(
     uint32_t retransmit_ssrc,
-    uint8_t retransmit_payload_type,
-    bool enable_pacing) {
+    uint8_t retransmit_payload_type) {
   class NackObserver : public test::RtpRtcpObserver {
    public:
     explicit NackObserver(uint32_t retransmit_ssrc,
@@ -574,7 +572,6 @@
   CreateTestConfig(call.get(), 1);
   send_config_.rtp.nack.rtp_history_ms = 1000;
   send_config_.rtp.rtx.payload_type = retransmit_payload_type;
-  send_config_.pacing = enable_pacing;
   if (retransmit_ssrc != kSendSsrc)
     send_config_.rtp.rtx.ssrcs.push_back(retransmit_ssrc);
 
@@ -583,17 +580,12 @@
 
 TEST_F(VideoSendStreamTest, RetransmitsNack) {
   // Normal NACKs should use the send SSRC.
-  TestNackRetransmission(kSendSsrc, kFakeSendPayloadType, false);
+  TestNackRetransmission(kSendSsrc, kFakeSendPayloadType);
 }
 
 TEST_F(VideoSendStreamTest, RetransmitsNackOverRtx) {
   // NACKs over RTX should use a separate SSRC.
-  TestNackRetransmission(kSendRtxSsrc, kSendRtxPayloadType, false);
-}
-
-TEST_F(VideoSendStreamTest, RetransmitsNackOverRtxWithPacing) {
-  // NACKs over RTX should use a separate SSRC.
-  TestNackRetransmission(kSendRtxSsrc, kSendRtxPayloadType, true);
+  TestNackRetransmission(kSendRtxSsrc, kSendRtxPayloadType);
 }
 
 void VideoSendStreamTest::TestPacketFragmentationSize(VideoFormat format,
@@ -774,7 +766,6 @@
   if (format == kVP8)
     send_config_.encoder_settings.payload_name = "VP8";
 
-  send_config_.pacing = false;
   send_config_.encoder_settings.encoder = &encoder;
   send_config_.rtp.max_packet_size = kMaxPacketSize;
   send_config_.post_encode_callback = &observer;
@@ -955,7 +946,6 @@
   send_config_.rtp.nack.rtp_history_ms = 1000;
   send_config_.pre_encode_callback = &observer;
   send_config_.suspend_below_min_bitrate = true;
-  send_config_.pacing = true;
   int min_bitrate_bps = video_streams_[0].min_bitrate_bps;
   observer.set_low_remb_bps(min_bitrate_bps - 10000);
   int threshold_window = std::max(min_bitrate_bps / 10, 10000);
@@ -1114,7 +1104,6 @@
 
   CreateTestConfig(call.get(), 1);
   send_config_.rtp.c_name = kCName;
-  send_config_.pacing = true;
   observer.SetConfig(send_config_);
 
   send_stream_ =
diff --git a/webrtc/video_engine/test/auto_test/primitives/base_primitives.cc b/webrtc/video_engine/test/auto_test/primitives/base_primitives.cc
index 4b46450..32f4b21 100644
--- a/webrtc/video_engine/test/auto_test/primitives/base_primitives.cc
+++ b/webrtc/video_engine/test/auto_test/primitives/base_primitives.cc
@@ -43,10 +43,13 @@
                        webrtc::VideoEngine* video_engine,
                        webrtc::ViEBase* base_interface,
                        webrtc::ViENetwork* network_interface,
+                       webrtc::ViERTP_RTCP* rtp_rtcp_interface,
                        int video_channel,
                        const char* device_name) {
   webrtc::VideoCodec video_codec;
   memset(&video_codec, 0, sizeof(webrtc::VideoCodec));
+  EXPECT_EQ(0, rtp_rtcp_interface->SetTransmissionSmoothingStatus(video_channel,
+                                                                  false));
 
   ConfigureCodecsToI420(video_channel, video_codec, codec_interface);
 
diff --git a/webrtc/video_engine/test/auto_test/primitives/base_primitives.h b/webrtc/video_engine/test/auto_test/primitives/base_primitives.h
index 13f7928..9568717 100644
--- a/webrtc/video_engine/test/auto_test/primitives/base_primitives.h
+++ b/webrtc/video_engine/test/auto_test/primitives/base_primitives.h
@@ -16,6 +16,7 @@
 class ViEBase;
 class ViECodec;
 class ViENetwork;
+class ViERTP_RTCP;
 }
 
 // Tests a I420-to-I420 call. This test exercises the most basic WebRTC
@@ -26,6 +27,7 @@
                        webrtc::VideoEngine* video_engine,
                        webrtc::ViEBase* base_interface,
                        webrtc::ViENetwork* network_interface,
+                       webrtc::ViERTP_RTCP* rtp_rtcp_interface,
                        int video_channel,
                        const char* device_name);
 
diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_base.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_base.cc
index 84da222..4d032ef 100644
--- a/webrtc/video_engine/test/auto_test/source/vie_autotest_base.cc
+++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_base.cc
@@ -67,8 +67,8 @@
   ViETest::Log("You should shortly see a local preview from camera %s"
                " in window 1 and the remote video in window 2.", device_name);
   ::TestI420CallSetup(interfaces.codec, interfaces.video_engine,
-                      base_interface, interfaces.network, video_channel,
-                      device_name);
+                      base_interface, interfaces.network, interfaces.rtp_rtcp,
+                      video_channel, device_name);
 
   // ***************************************************************
   // Testing finished. Tear down Video Engine
diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc
index 05540bc..671e727 100644
--- a/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc
+++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_rtp_rtcp.cc
@@ -179,8 +179,6 @@
     myTransport.ClearStats();
 
     EXPECT_EQ(0, ViE.rtp_rtcp->SetNACKStatus(tbChannel.videoChannel, true));
-    EXPECT_EQ(0, ViE.rtp_rtcp->SetTransmissionSmoothingStatus(
-        tbChannel.videoChannel, true));
     EXPECT_EQ(0, ViE.base->StartReceive(tbChannel.videoChannel));
     EXPECT_EQ(0, ViE.base->StartSend(tbChannel.videoChannel));
 
@@ -220,6 +218,7 @@
     myTransport.ClearStats();
 
     const uint8_t kRtxPayloadType = 96;
+    // Temporarily disable pacing.
     EXPECT_EQ(0, ViE.rtp_rtcp->SetTransmissionSmoothingStatus(
         tbChannel.videoChannel, false));
     EXPECT_EQ(0, ViE.rtp_rtcp->SetNACKStatus(tbChannel.videoChannel, true));
@@ -523,6 +522,7 @@
     ViETest::Log("Testing Network Down...\n");
 
     EXPECT_EQ(0, ViE.rtp_rtcp->SetNACKStatus(tbChannel.videoChannel, true));
+    // Reenable pacing.
     EXPECT_EQ(0, ViE.rtp_rtcp->SetTransmissionSmoothingStatus(
         tbChannel.videoChannel, true));
 
diff --git a/webrtc/video_engine/test/auto_test/source/vie_file_based_comparison_tests.cc b/webrtc/video_engine/test/auto_test/source/vie_file_based_comparison_tests.cc
index f6c1000..4f3a90a 100644
--- a/webrtc/video_engine/test/auto_test/source/vie_file_based_comparison_tests.cc
+++ b/webrtc/video_engine/test/auto_test/source/vie_file_based_comparison_tests.cc
@@ -66,8 +66,8 @@
   const char* device_name = "Fake Capture Device";
 
   ::TestI420CallSetup(interfaces.codec, interfaces.video_engine,
-                      interfaces.base, interfaces.network, video_channel,
-                      device_name);
+                      interfaces.base, interfaces.network, interfaces.rtp_rtcp,
+                      video_channel, device_name);
 
   EXPECT_EQ(0, render_interface->StopRender(video_channel));
   EXPECT_EQ(0, render_interface->RemoveRenderer(video_channel));
diff --git a/webrtc/video_send_stream.h b/webrtc/video_send_stream.h
index f8af797..a1bc178 100644
--- a/webrtc/video_send_stream.h
+++ b/webrtc/video_send_stream.h
@@ -61,7 +61,6 @@
           local_renderer(NULL),
           render_delay_ms(0),
           target_delay_ms(0),
-          pacing(false),
           suspend_below_min_bitrate(false) {}
     std::string ToString() const;
 
@@ -144,14 +143,9 @@
     // used for streaming instead of a real-time call.
     int target_delay_ms;
 
-    // True if network a send-side packet buffer should be used to pace out
-    // packets onto the network.
-    bool pacing;
-
     // True if the stream should be suspended when the available bitrate fall
     // below the minimum configured bitrate. If this variable is false, the
     // stream may send at a rate higher than the estimated available bitrate.
-    // |suspend_below_min_bitrate| requires |pacing| to be enabled as well.
     bool suspend_below_min_bitrate;
   };