Don't set V bit in flexible mode

BUG=webrtc:4914

Review URL: https://codereview.webrtc.org/1291163007

Cr-Commit-Position: refs/heads/master@{#9848}
diff --git a/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc b/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc
index 3e4367f..73beab3 100644
--- a/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc
+++ b/webrtc/modules/video_coding/codecs/vp9/vp9_impl.cc
@@ -485,8 +485,10 @@
   vp9_info->inter_pic_predicted =
       (pkt.data.frame.flags & VPX_FRAME_IS_KEY) ? false : true;
   vp9_info->flexible_mode = codec_.codecSpecific.VP9.flexibleMode;
-  vp9_info->ss_data_available =
-      (pkt.data.frame.flags & VPX_FRAME_IS_KEY) ? true : false;
+  vp9_info->ss_data_available = ((pkt.data.frame.flags & VPX_FRAME_IS_KEY) &&
+                                 !codec_.codecSpecific.VP9.flexibleMode)
+                                    ? true
+                                    : false;
   if (pkt.data.frame.flags & VPX_FRAME_IS_KEY) {
     gof_idx_ = 0;
   }
diff --git a/webrtc/video/video_send_stream_tests.cc b/webrtc/video/video_send_stream_tests.cc
index 4442c2c..65fbd78 100644
--- a/webrtc/video/video_send_stream_tests.cc
+++ b/webrtc/video/video_send_stream_tests.cc
@@ -23,6 +23,7 @@
 #include "webrtc/modules/rtp_rtcp/source/rtcp_sender.h"
 #include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
 #include "webrtc/modules/rtp_rtcp/source/rtp_format_vp9.h"
+#include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h"
 #include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
 #include "webrtc/system_wrappers/interface/event_wrapper.h"
 #include "webrtc/system_wrappers/interface/logging.h"
@@ -1799,9 +1800,11 @@
 
 class VP9HeaderObeserver : public test::SendTest {
  public:
-  VP9HeaderObeserver() : SendTest(VideoSendStreamTest::kDefaultTimeoutMs) {
-    vp9_settings_ = VideoEncoder::GetDefaultVp9Settings();
-  }
+  VP9HeaderObeserver()
+      : SendTest(VideoSendStreamTest::kDefaultTimeoutMs),
+        vp9_encoder_(VP9Encoder::Create()),
+        vp9_settings_(VideoEncoder::GetDefaultVp9Settings()) {}
+
   virtual void ModifyConfigsHook(
       VideoSendStream::Config* send_config,
       std::vector<VideoReceiveStream::Config>* receive_configs,
@@ -1816,6 +1819,7 @@
                      std::vector<VideoReceiveStream::Config>* receive_configs,
                      VideoEncoderConfig* encoder_config) override {
     encoder_config->encoder_specific_settings = &vp9_settings_;
+    send_config->encoder_settings.encoder = vp9_encoder_.get();
     send_config->encoder_settings.payload_name = "VP9";
     send_config->encoder_settings.payload_type = kVp9PayloadType;
     ModifyConfigsHook(send_config, receive_configs, encoder_config);
@@ -1856,7 +1860,8 @@
     return SEND_PACKET;
   }
 
-protected:
+ protected:
+  rtc::scoped_ptr<VP9Encoder> vp9_encoder_;
   VideoCodecVP9 vp9_settings_;
 };
 
@@ -1871,15 +1876,13 @@
   RunBaseTest(&test);
 }
 
-// TODO(philipel): Enable once flexible mode is implemeted.
-TEST_F(VideoSendStreamTest, DISABLED_VP9FlexMode) {
+TEST_F(VideoSendStreamTest, VP9FlexMode) {
   class FlexibleMode : public VP9HeaderObeserver {
     void ModifyConfigsHook(
         VideoSendStream::Config* send_config,
         std::vector<VideoReceiveStream::Config>* receive_configs,
         VideoEncoderConfig* encoder_config) override {
       vp9_settings_.flexibleMode = true;
-      encoder_config->encoder_specific_settings = &vp9_settings_;
     }
 
     void InspectHeader(RTPVideoHeaderVP9* vp9videoHeader) override {