Chromium Code Reviews| 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 1a7525c18650b54fcc191d567d00f2d26760d02b..7fc17030cbfa63dfecf566caf2bf0f6dad822a37 100644 |
| --- a/webrtc/video/end_to_end_tests.cc |
| +++ b/webrtc/video/end_to_end_tests.cc |
| @@ -195,34 +195,22 @@ TEST_P(EndToEndTest, RendersSingleDelayedFrame) { |
| // This constant is chosen to be higher than the timeout in the video_render |
| // module. This makes sure that frames aren't dropped if there are no other |
| // frames in the queue. |
| - static const int kDelayRenderCallbackMs = 1000; |
| + static const int kRenderDelayMs = 1000; |
| class Renderer : public rtc::VideoSinkInterface<VideoFrame> { |
| public: |
| Renderer() : event_(false, false) {} |
| - void OnFrame(const VideoFrame& video_frame) override { event_.Set(); } |
| + void OnFrame(const VideoFrame& video_frame) override { |
| + SleepMs(kRenderDelayMs); |
| + event_.Set(); |
| + } |
| bool Wait() { return event_.Wait(kDefaultTimeoutMs); } |
| rtc::Event event_; |
| } renderer; |
| - class TestFrameCallback : public I420FrameCallback { |
| - public: |
| - TestFrameCallback() : event_(false, false) {} |
| - |
| - bool Wait() { return event_.Wait(kDefaultTimeoutMs); } |
| - |
| - private: |
| - void FrameCallback(VideoFrame* frame) override { |
| - SleepMs(kDelayRenderCallbackMs); |
| - event_.Set(); |
| - } |
| - |
| - rtc::Event event_; |
| - }; |
| - |
| CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_)); |
| test::DirectTransport sender_transport(sender_call_.get()); |
| @@ -233,8 +221,6 @@ TEST_P(EndToEndTest, RendersSingleDelayedFrame) { |
| CreateSendConfig(1, 0, 0, &sender_transport); |
| CreateMatchingReceiveConfigs(&receiver_transport); |
| - TestFrameCallback pre_render_callback; |
| - video_receive_configs_[0].pre_render_callback = &pre_render_callback; |
| video_receive_configs_[0].renderer = &renderer; |
| CreateVideoStreams(); |
| @@ -249,8 +235,6 @@ TEST_P(EndToEndTest, RendersSingleDelayedFrame) { |
| &frame_forwarder, VideoSendStream::DegradationPreference::kBalanced); |
| frame_forwarder.IncomingCapturedFrame(*frame_generator->NextFrame()); |
| - EXPECT_TRUE(pre_render_callback.Wait()) |
| - << "Timed out while waiting for pre-render callback."; |
| EXPECT_TRUE(renderer.Wait()) |
| << "Timed out while waiting for the frame to render."; |
| @@ -1050,7 +1034,7 @@ TEST_P(EndToEndTest, ReceivedUlpfecPacketsNotNacked) { |
| void EndToEndTest::DecodesRetransmittedFrame(bool enable_rtx, bool enable_red) { |
| static const int kDroppedFrameNumber = 10; |
| class RetransmissionObserver : public test::EndToEndTest, |
| - public I420FrameCallback { |
| + public rtc::VideoSinkInterface<VideoFrame> { |
| public: |
| RetransmissionObserver(bool enable_rtx, bool enable_red) |
| : EndToEndTest(kDefaultTimeoutMs), |
| @@ -1106,11 +1090,12 @@ void EndToEndTest::DecodesRetransmittedFrame(bool enable_rtx, bool enable_red) { |
| return SEND_PACKET; |
| } |
| - void FrameCallback(VideoFrame* frame) override { |
| + void OnFrame(const VideoFrame& frame) override { |
| rtc::CritScope lock(&crit_); |
| - if (frame->timestamp() == retransmitted_timestamp_) |
| + if (frame.timestamp() == retransmitted_timestamp_) |
| observation_complete_.Set(); |
| - rendered_timestamps_.push_back(frame->timestamp()); |
| + rendered_timestamps_.push_back(frame.timestamp()); |
| + orig_renderer_->OnFrame(frame); |
| } |
| void ModifyVideoConfigs( |
| @@ -1118,7 +1103,11 @@ void EndToEndTest::DecodesRetransmittedFrame(bool enable_rtx, bool enable_red) { |
| std::vector<VideoReceiveStream::Config>* receive_configs, |
| VideoEncoderConfig* encoder_config) override { |
| send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| - (*receive_configs)[0].pre_render_callback = this; |
| + |
| + // Insert ourselves into the rendering pipeline. |
| + orig_renderer_ = (*receive_configs)[0].renderer; |
|
tommi
2017/02/07 11:58:20
first DCHECK_EQ(nullptr, orig_renderer_);
after a
nisse-webrtc
2017/02/07 13:30:59
Added DCHECK. DCHECK_NE and DCHECK_EQ doesn't work
|
| + (*receive_configs)[0].renderer = this; |
| + |
| (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| if (payload_type_ == kRedPayloadType) { |
| @@ -1166,6 +1155,7 @@ void EndToEndTest::DecodesRetransmittedFrame(bool enable_rtx, bool enable_red) { |
| } |
| rtc::CriticalSection crit_; |
| + rtc::VideoSinkInterface<VideoFrame>* orig_renderer_; |
|
tommi
2017/02/07 11:58:20
initialize to nullptr
nisse-webrtc
2017/02/07 13:30:58
Done.
|
| const int payload_type_; |
| const uint32_t retransmission_ssrc_; |
| const int retransmission_payload_type_; |