Delete VideoStreamEncoder::OnReceivedIntraFrameRequest.
Duplicates SendKeyFrame, since current simulcast encoders always produces key frames for all simulcast layers. Bug: webrtc:8830 Change-Id: Iec0e46d52de9d85e59fb5b99761416ce027ea876 Reviewed-on: https://webrtc-review.googlesource.com/54300 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22057}
This commit is contained in:
@ -60,7 +60,8 @@ void EncoderRtcpFeedback::OnReceivedIntraFrameRequest(uint32_t ssrc) {
|
|||||||
time_last_intra_request_ms_[index] = now_ms;
|
time_last_intra_request_ms_[index] = now_ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
video_stream_encoder_->OnReceivedIntraFrameRequest(index);
|
// Always produce key frame for all streams.
|
||||||
|
video_stream_encoder_->SendKeyFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
@ -33,7 +33,7 @@ class MockVideoStreamEncoder : public VideoStreamEncoder {
|
|||||||
CpuOveruseOptions(), nullptr)) {}
|
CpuOveruseOptions(), nullptr)) {}
|
||||||
~MockVideoStreamEncoder() { Stop(); }
|
~MockVideoStreamEncoder() { Stop(); }
|
||||||
|
|
||||||
MOCK_METHOD1(OnReceivedIntraFrameRequest, void(size_t));
|
MOCK_METHOD0(SendKeyFrame, void());
|
||||||
};
|
};
|
||||||
|
|
||||||
class VieKeyRequestTest : public ::testing::Test {
|
class VieKeyRequestTest : public ::testing::Test {
|
||||||
@ -59,18 +59,18 @@ class VieKeyRequestTest : public ::testing::Test {
|
|||||||
};
|
};
|
||||||
|
|
||||||
TEST_F(VieKeyRequestTest, CreateAndTriggerRequests) {
|
TEST_F(VieKeyRequestTest, CreateAndTriggerRequests) {
|
||||||
EXPECT_CALL(encoder_, OnReceivedIntraFrameRequest(0)).Times(1);
|
EXPECT_CALL(encoder_, SendKeyFrame()).Times(1);
|
||||||
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(VieKeyRequestTest, TooManyOnReceivedIntraFrameRequest) {
|
TEST_F(VieKeyRequestTest, TooManyOnReceivedIntraFrameRequest) {
|
||||||
EXPECT_CALL(encoder_, OnReceivedIntraFrameRequest(0)).Times(1);
|
EXPECT_CALL(encoder_, SendKeyFrame()).Times(1);
|
||||||
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
||||||
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
||||||
simulated_clock_.AdvanceTimeMilliseconds(10);
|
simulated_clock_.AdvanceTimeMilliseconds(10);
|
||||||
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
||||||
|
|
||||||
EXPECT_CALL(encoder_, OnReceivedIntraFrameRequest(0)).Times(1);
|
EXPECT_CALL(encoder_, SendKeyFrame()).Times(1);
|
||||||
simulated_clock_.AdvanceTimeMilliseconds(300);
|
simulated_clock_.AdvanceTimeMilliseconds(300);
|
||||||
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
||||||
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
encoder_rtcp_feedback_.OnReceivedIntraFrameRequest(kSsrc);
|
||||||
|
@ -815,6 +815,7 @@ void VideoStreamEncoder::SendKeyFrame() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RTC_DCHECK_RUN_ON(&encoder_queue_);
|
RTC_DCHECK_RUN_ON(&encoder_queue_);
|
||||||
|
TRACE_EVENT0("webrtc", "OnKeyFrameRequest");
|
||||||
video_sender_.IntraFrameRequest(0);
|
video_sender_.IntraFrameRequest(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -873,18 +874,6 @@ void VideoStreamEncoder::OnDroppedFrame(DropReason reason) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VideoStreamEncoder::OnReceivedIntraFrameRequest(size_t stream_index) {
|
|
||||||
if (!encoder_queue_.IsCurrent()) {
|
|
||||||
encoder_queue_.PostTask(
|
|
||||||
[this, stream_index] { OnReceivedIntraFrameRequest(stream_index); });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
RTC_DCHECK_RUN_ON(&encoder_queue_);
|
|
||||||
// Key frame request from remote side, signal to VCM.
|
|
||||||
TRACE_EVENT0("webrtc", "OnKeyFrameRequest");
|
|
||||||
video_sender_.IntraFrameRequest(stream_index);
|
|
||||||
}
|
|
||||||
|
|
||||||
void VideoStreamEncoder::OnBitrateUpdated(uint32_t bitrate_bps,
|
void VideoStreamEncoder::OnBitrateUpdated(uint32_t bitrate_bps,
|
||||||
uint8_t fraction_lost,
|
uint8_t fraction_lost,
|
||||||
int64_t round_trip_time_ms) {
|
int64_t round_trip_time_ms) {
|
||||||
|
@ -99,10 +99,8 @@ class VideoStreamEncoder : public rtc::VideoSinkInterface<VideoFrame>,
|
|||||||
// guaranteed that no encoded frames will be delivered to the sink.
|
// guaranteed that no encoded frames will be delivered to the sink.
|
||||||
void Stop();
|
void Stop();
|
||||||
|
|
||||||
void SendKeyFrame();
|
// virtual to test EncoderRtcpFeedback with mocks.
|
||||||
|
virtual void SendKeyFrame();
|
||||||
// virtual to test EncoderStateFeedback with mocks.
|
|
||||||
virtual void OnReceivedIntraFrameRequest(size_t stream_index);
|
|
||||||
|
|
||||||
void OnBitrateUpdated(uint32_t bitrate_bps,
|
void OnBitrateUpdated(uint32_t bitrate_bps,
|
||||||
uint8_t fraction_lost,
|
uint8_t fraction_lost,
|
||||||
|
Reference in New Issue
Block a user