Makes it possible to disable frame dropping in the VP8 codec.

BUG=

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@2661 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/src/common_types.h b/src/common_types.h
index e97c34d..122c7ee 100644
--- a/src/common_types.h
+++ b/src/common_types.h
@@ -522,6 +522,7 @@
     bool                 denoisingOn;
     bool                 errorConcealmentOn;
     bool                 automaticResizeOn;
+    bool                 frameDroppingOn;
 };
 
 // Unknown specific
diff --git a/src/modules/video_coding/codecs/vp8/vp8.cc b/src/modules/video_coding/codecs/vp8/vp8.cc
index a3d2e2e..2016559 100644
--- a/src/modules/video_coding/codecs/vp8/vp8.cc
+++ b/src/modules/video_coding/codecs/vp8/vp8.cc
@@ -233,7 +233,8 @@
   }
 
   // rate control settings
-  config_->rc_dropframe_thresh = 30;
+  config_->rc_dropframe_thresh = inst->codecSpecific.VP8.frameDroppingOn ?
+      30 : 0;
   config_->rc_end_usage = VPX_CBR;
   config_->g_pass = VPX_RC_ONE_PASS;
   config_->rc_resize_allowed = inst->codecSpecific.VP8.automaticResizeOn ?
diff --git a/src/modules/video_coding/main/source/codec_database.cc b/src/modules/video_coding/main/source/codec_database.cc
index 05a560c..fbb9836 100644
--- a/src/modules/video_coding/main/source/codec_database.cc
+++ b/src/modules/video_coding/main/source/codec_database.cc
@@ -175,6 +175,7 @@
             settings->codecSpecific.VP8.denoisingOn = true;
             settings->codecSpecific.VP8.errorConcealmentOn = false;
             settings->codecSpecific.VP8.automaticResizeOn = false;
+            settings->codecSpecific.VP8.frameDroppingOn = true;
             break;
         }
 #endif
diff --git a/src/video_engine/test/auto_test/source/vie_autotest_codec.cc b/src/video_engine/test/auto_test/source/vie_autotest_codec.cc
index 570097a..9efa99b 100644
--- a/src/video_engine/test/auto_test/source/vie_autotest_codec.cc
+++ b/src/video_engine/test/auto_test/source/vie_autotest_codec.cc
@@ -463,6 +463,7 @@
     EXPECT_EQ(0, codec->GetCodec(i, video_codec));
     if (video_codec.codecType == webrtc::kVideoCodecVP8) {
       video_codec.codecSpecific.VP8.automaticResizeOn = true;
+      video_codec.codecSpecific.VP8.frameDroppingOn = true;
       EXPECT_EQ(0, codec->SetSendCodec(video_channel, video_codec));
       break;
     }
@@ -471,11 +472,13 @@
   EXPECT_EQ(0, codec->GetSendCodec(video_channel, video_codec));
   EXPECT_EQ(webrtc::kVideoCodecVP8, video_codec.codecType);
   EXPECT_TRUE(video_codec.codecSpecific.VP8.automaticResizeOn);
+  EXPECT_TRUE(video_codec.codecSpecific.VP8.frameDroppingOn);
 
   for (int i = 0; i < number_of_codecs; i++) {
     EXPECT_EQ(0, codec->GetCodec(i, video_codec));
     if (video_codec.codecType == webrtc::kVideoCodecI420) {
       video_codec.codecSpecific.VP8.automaticResizeOn = false;
+      video_codec.codecSpecific.VP8.frameDroppingOn = false;
       EXPECT_EQ(0, codec->SetSendCodec(video_channel, video_codec));
       break;
     }
@@ -484,6 +487,7 @@
   EXPECT_EQ(0, codec->GetSendCodec(video_channel, video_codec));
   EXPECT_EQ(webrtc::kVideoCodecI420, video_codec.codecType);
   EXPECT_FALSE(video_codec.codecSpecific.VP8.automaticResizeOn);
+  EXPECT_FALSE(video_codec.codecSpecific.VP8.frameDroppingOn);
 
   EXPECT_EQ(0, base->DeleteChannel(video_channel));