| Index: webrtc/video/end_to_end_tests.cc
 | 
| diff --git a/webrtc/video/end_to_end_tests.cc b/webrtc/video/end_to_end_tests.cc
 | 
| index 28d371a5af5c72ddbb6dcf096f014828b00ac99f..0deb4a59fdd89805c47d272f3ab01aa9715b01a5 100644
 | 
| --- a/webrtc/video/end_to_end_tests.cc
 | 
| +++ b/webrtc/video/end_to_end_tests.cc
 | 
| @@ -76,7 +76,7 @@ class EndToEndTest : public test::CallTest {
 | 
|      }
 | 
|    };
 | 
|  
 | 
| -  void DecodesRetransmittedFrame(bool use_rtx, bool use_red);
 | 
| +  void DecodesRetransmittedFrame(bool enable_rtx, bool enable_red);
 | 
|    void ReceivesPliAndRecovers(int rtp_history_ms);
 | 
|    void RespectsRtcpMode(RtcpMode rtcp_mode);
 | 
|    void TestXrReceiverReferenceTimeReport(bool enable_rrtr);
 | 
| @@ -701,18 +701,20 @@ TEST_F(EndToEndTest, DISABLED_ReceivedFecPacketsNotNacked) {
 | 
|  
 | 
|  // This test drops second RTP packet with a marker bit set, makes sure it's
 | 
|  // retransmitted and renders. Retransmission SSRCs are also checked.
 | 
| -void EndToEndTest::DecodesRetransmittedFrame(bool use_rtx, bool use_red) {
 | 
| +void EndToEndTest::DecodesRetransmittedFrame(bool enable_rtx, bool enable_red) {
 | 
|    // Must be set high enough to allow the bitrate probing to finish.
 | 
|    static const int kMinProbePackets = 30;
 | 
|    static const int kDroppedFrameNumber = kMinProbePackets + 1;
 | 
|    class RetransmissionObserver : public test::EndToEndTest,
 | 
|                                   public I420FrameCallback {
 | 
|     public:
 | 
| -    explicit RetransmissionObserver(bool use_rtx, bool use_red)
 | 
| +    RetransmissionObserver(bool enable_rtx, bool enable_red)
 | 
|          : EndToEndTest(kDefaultTimeoutMs),
 | 
| -          payload_type_(GetPayloadType(false, use_red)),
 | 
| -          retransmission_ssrc_(use_rtx ? kSendRtxSsrcs[0] : kVideoSendSsrcs[0]),
 | 
| -          retransmission_payload_type_(GetPayloadType(use_rtx, use_red)),
 | 
| +          payload_type_(GetPayloadType(false, enable_red)),
 | 
| +          retransmission_ssrc_(enable_rtx ? kSendRtxSsrcs[0]
 | 
| +                                          : kVideoSendSsrcs[0]),
 | 
| +          retransmission_payload_type_(GetPayloadType(enable_rtx, enable_red)),
 | 
| +          encoder_(VideoEncoder::Create(VideoEncoder::EncoderType::kVp8)),
 | 
|            marker_bits_observed_(0),
 | 
|            num_packets_observed_(0),
 | 
|            retransmitted_timestamp_(0),
 | 
| @@ -790,6 +792,12 @@ void EndToEndTest::DecodesRetransmittedFrame(bool use_rtx, bool use_red) {
 | 
|          (*receive_configs)[0].rtp.rtx[payload_type_].payload_type =
 | 
|              kSendRtxPayloadType;
 | 
|        }
 | 
| +      // Configure encoding and decoding with VP8, since generic packetization
 | 
| +      // doesn't support FEC with NACK.
 | 
| +      RTC_DCHECK_EQ(1u, (*receive_configs)[0].decoders.size());
 | 
| +      send_config->encoder_settings.encoder = encoder_.get();
 | 
| +      send_config->encoder_settings.payload_name = "VP8";
 | 
| +      (*receive_configs)[0].decoders[0].payload_name = "VP8";
 | 
|      }
 | 
|  
 | 
|      void PerformTest() override {
 | 
| @@ -812,11 +820,13 @@ void EndToEndTest::DecodesRetransmittedFrame(bool use_rtx, bool use_red) {
 | 
|      const int payload_type_;
 | 
|      const uint32_t retransmission_ssrc_;
 | 
|      const int retransmission_payload_type_;
 | 
| +    rtc::scoped_ptr<VideoEncoder> encoder_;
 | 
| +    const std::string payload_name_;
 | 
|      int marker_bits_observed_;
 | 
|      int num_packets_observed_;
 | 
|      uint32_t retransmitted_timestamp_ GUARDED_BY(&crit_);
 | 
|      bool frame_retransmitted_;
 | 
| -  } test(use_rtx, use_red);
 | 
| +  } test(enable_rtx, enable_red);
 | 
|  
 | 
|    RunBaseTest(&test);
 | 
|  }
 | 
| @@ -2088,6 +2098,10 @@ void EndToEndTest::VerifyHistogramStats(bool use_rtx,
 | 
|            use_rtx_(use_rtx),
 | 
|            use_red_(use_red),
 | 
|            screenshare_(screenshare),
 | 
| +          // This test uses NACK, so to send FEC we can't use a fake encoder.
 | 
| +          vp8_encoder_(
 | 
| +              use_red ? VideoEncoder::Create(VideoEncoder::EncoderType::kVp8)
 | 
| +                      : nullptr),
 | 
|            sender_call_(nullptr),
 | 
|            receiver_call_(nullptr),
 | 
|            start_runtime_ms_(-1) {}
 | 
| @@ -2127,6 +2141,9 @@ void EndToEndTest::VerifyHistogramStats(bool use_rtx,
 | 
|        if (use_red_) {
 | 
|          send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType;
 | 
|          send_config->rtp.fec.red_payload_type = kRedPayloadType;
 | 
| +        send_config->encoder_settings.encoder = vp8_encoder_.get();
 | 
| +        send_config->encoder_settings.payload_name = "VP8";
 | 
| +        (*receive_configs)[0].decoders[0].payload_name = "VP8";
 | 
|          (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType;
 | 
|          (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType;
 | 
|        }
 | 
| @@ -2156,6 +2173,7 @@ void EndToEndTest::VerifyHistogramStats(bool use_rtx,
 | 
|      const bool use_rtx_;
 | 
|      const bool use_red_;
 | 
|      const bool screenshare_;
 | 
| +    const rtc::scoped_ptr<VideoEncoder> vp8_encoder_;
 | 
|      Call* sender_call_;
 | 
|      Call* receiver_call_;
 | 
|      int64_t start_runtime_ms_;
 | 
| 
 |