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 99e52794240f475ca131c42e70abdc9288529730..6e721b60ee4c53db1a1660b63d67264acdec93ab 100644 |
--- a/webrtc/video/end_to_end_tests.cc |
+++ b/webrtc/video/end_to_end_tests.cc |
@@ -2229,6 +2229,45 @@ TEST_F(EndToEndTest, RembWithSendSideBwe) { |
RunBaseTest(&test); |
} |
+TEST_F(EndToEndTest, StopSendingKeyframeRequestsForInactiveStream) { |
+ class KeyframeRequestObserver : public test::EndToEndTest { |
+ public: |
+ KeyframeRequestObserver() : clock_(Clock::GetRealTimeClock()) {} |
+ |
+ void OnVideoStreamsCreated( |
+ VideoSendStream* send_stream, |
+ const std::vector<VideoReceiveStream*>& receive_streams) override { |
+ RTC_DCHECK_EQ(1, receive_streams.size()); |
+ send_stream_ = send_stream; |
+ receive_stream_ = receive_streams[0]; |
+ } |
+ |
+ void PerformTest() override { |
+ bool frame_decoded = false; |
+ int64_t start_time = clock_->TimeInMilliseconds(); |
+ while (clock_->TimeInMilliseconds() - start_time <= 5000) { |
+ if (receive_stream_->GetStats().frames_decoded > 0) { |
+ frame_decoded = true; |
+ break; |
+ } |
+ SleepMs(100); |
+ } |
+ ASSERT_TRUE(frame_decoded); |
+ send_stream_->Stop(); |
+ SleepMs(10000); |
+ ASSERT_EQ( |
+ 1U, receive_stream_->GetStats().rtcp_packet_type_counts.pli_packets); |
+ } |
+ |
+ private: |
+ Clock* clock_; |
+ VideoSendStream* send_stream_; |
+ VideoReceiveStream* receive_stream_; |
+ } test; |
+ |
+ RunBaseTest(&test); |
+} |
+ |
class ProbingTest : public test::EndToEndTest { |
public: |
explicit ProbingTest(int start_bitrate_bps) |