Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Unified Diff: webrtc/video/end_to_end_tests.cc

Issue 1891733002: Change pre_encode_callback to get a const frame. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Do per-frame delay by calling SleepMs. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/video/DEPS ('k') | webrtc/video/video_send_stream_tests.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 5c536a6182e14a6caeb5ae9cf3f0e1ea9f38dffe..178e32613585faa2dfeb0bd921f5f35d8ed882c7 100644
--- a/webrtc/video/end_to_end_tests.cc
+++ b/webrtc/video/end_to_end_tests.cc
@@ -864,107 +864,6 @@ TEST_F(EndToEndTest, DecodesRetransmittedFrameByRedOverRtx) {
DecodesRetransmittedFrame(true, true);
}
-TEST_F(EndToEndTest, UsesFrameCallbacks) {
- static const int kWidth = 320;
- static const int kHeight = 240;
-
- class Renderer : public rtc::VideoSinkInterface<VideoFrame> {
- public:
- Renderer() : event_(false, false) {}
-
- void OnFrame(const VideoFrame& video_frame) override {
- EXPECT_EQ(0, *video_frame.buffer(kYPlane))
- << "Rendered frame should have zero luma which is applied by the "
- "pre-render callback.";
- event_.Set();
- }
-
- bool Wait() { return event_.Wait(kDefaultTimeoutMs); }
- rtc::Event event_;
- } renderer;
-
- class TestFrameCallback : public I420FrameCallback {
- public:
- TestFrameCallback(int expected_luma_byte, int next_luma_byte)
- : event_(false, false),
- expected_luma_byte_(expected_luma_byte),
- next_luma_byte_(next_luma_byte) {}
-
- bool Wait() { return event_.Wait(kDefaultTimeoutMs); }
-
- private:
- virtual void FrameCallback(VideoFrame* frame) {
- EXPECT_EQ(kWidth, frame->width())
- << "Width not as expected, callback done before resize?";
- EXPECT_EQ(kHeight, frame->height())
- << "Height not as expected, callback done before resize?";
-
- // Previous luma specified, observed luma should be fairly close.
- if (expected_luma_byte_ != -1) {
- EXPECT_NEAR(expected_luma_byte_, *frame->buffer(kYPlane), 10);
- }
-
- memset(frame->buffer(kYPlane),
- next_luma_byte_,
- frame->allocated_size(kYPlane));
-
- event_.Set();
- }
-
- rtc::Event event_;
- int expected_luma_byte_;
- int next_luma_byte_;
- };
-
- TestFrameCallback pre_encode_callback(-1, 255); // Changes luma to 255.
- TestFrameCallback pre_render_callback(255, 0); // Changes luma from 255 to 0.
-
- CreateCalls(Call::Config(), Call::Config());
-
- test::DirectTransport sender_transport(sender_call_.get());
- test::DirectTransport receiver_transport(receiver_call_.get());
- sender_transport.SetReceiver(receiver_call_->Receiver());
- receiver_transport.SetReceiver(sender_call_->Receiver());
-
- CreateSendConfig(1, 0, &sender_transport);
- std::unique_ptr<VideoEncoder> encoder(
- VideoEncoder::Create(VideoEncoder::kVp8));
- video_send_config_.encoder_settings.encoder = encoder.get();
- video_send_config_.encoder_settings.payload_name = "VP8";
- ASSERT_EQ(1u, video_encoder_config_.streams.size()) << "Test setup error.";
- video_encoder_config_.streams[0].width = kWidth;
- video_encoder_config_.streams[0].height = kHeight;
- video_send_config_.pre_encode_callback = &pre_encode_callback;
-
- CreateMatchingReceiveConfigs(&receiver_transport);
- video_receive_configs_[0].pre_render_callback = &pre_render_callback;
- video_receive_configs_[0].renderer = &renderer;
-
- CreateVideoStreams();
- Start();
-
- // Create frames that are smaller than the send width/height, this is done to
- // check that the callbacks are done after processing video.
- std::unique_ptr<test::FrameGenerator> frame_generator(
- test::FrameGenerator::CreateChromaGenerator(kWidth / 2, kHeight / 2));
- video_send_stream_->Input()->IncomingCapturedFrame(
- *frame_generator->NextFrame());
-
- EXPECT_TRUE(pre_encode_callback.Wait())
- << "Timed out while waiting for pre-encode callback.";
- 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.";
-
- Stop();
-
- sender_transport.StopSending();
- receiver_transport.StopSending();
-
- DestroyStreams();
-}
-
void EndToEndTest::ReceivesPliAndRecovers(int rtp_history_ms) {
static const int kPacketsToDrop = 1;
@@ -2573,7 +2472,8 @@ TEST_F(EndToEndTest, ReportsSetEncoderRates) {
TEST_F(EndToEndTest, GetStats) {
static const int kStartBitrateBps = 3000000;
static const int kExpectedRenderDelayMs = 20;
- class StatsObserver : public test::EndToEndTest, public I420FrameCallback {
+ class StatsObserver : public test::EndToEndTest,
+ public rtc::VideoSinkInterface<VideoFrame> {
public:
StatsObserver()
: EndToEndTest(kLongTimeoutMs),
@@ -2603,11 +2503,9 @@ TEST_F(EndToEndTest, GetStats) {
return SEND_PACKET;
}
- void FrameCallback(VideoFrame* video_frame) override {
+ void OnFrame(const VideoFrame& video_frame) override {
// Ensure that we have at least 5ms send side delay.
- int64_t render_time = video_frame->render_time_ms();
- if (render_time > 0)
- video_frame->set_render_time_ms(render_time - 5);
+ SleepMs(5);
}
bool CheckReceiveStats() {
« no previous file with comments | « webrtc/video/DEPS ('k') | webrtc/video/video_send_stream_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698