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..1fa68df35e0f1d4051c3ff07fe898369bc1e00b6 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 */ |
sprang_webrtc
2017/02/07 09:52:03
nit: // rather than /* */
nisse-webrtc
2017/02/07 10:50:51
Done.
|
+ orig_renderer_ = (*receive_configs)[0].renderer; |
+ (*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_; |
const int payload_type_; |
const uint32_t retransmission_ssrc_; |
const int retransmission_payload_type_; |