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

Side by Side Diff: talk/media/webrtc/webrtcvideoengine2_unittest.cc

Issue 1569853002: Measure encoding time on encode callbacks. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2004 Google Inc. 3 * Copyright 2004 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 146
147 protected: 147 protected:
148 VideoMediaChannel* SetUpForExternalEncoderFactory( 148 VideoMediaChannel* SetUpForExternalEncoderFactory(
149 cricket::WebRtcVideoEncoderFactory* encoder_factory, 149 cricket::WebRtcVideoEncoderFactory* encoder_factory,
150 const std::vector<VideoCodec>& codecs); 150 const std::vector<VideoCodec>& codecs);
151 151
152 VideoMediaChannel* SetUpForExternalDecoderFactory( 152 VideoMediaChannel* SetUpForExternalDecoderFactory(
153 cricket::WebRtcVideoDecoderFactory* decoder_factory, 153 cricket::WebRtcVideoDecoderFactory* decoder_factory,
154 const std::vector<VideoCodec>& codecs); 154 const std::vector<VideoCodec>& codecs);
155 155
156 void TestExtendedEncoderOveruse(bool use_external_encoder);
157
156 webrtc::test::ScopedFieldTrials override_field_trials_; 158 webrtc::test::ScopedFieldTrials override_field_trials_;
157 // Used in WebRtcVideoEngine2VoiceTest, but defined here so it's properly 159 // Used in WebRtcVideoEngine2VoiceTest, but defined here so it's properly
158 // initialized when the constructor is called. 160 // initialized when the constructor is called.
159 rtc::scoped_ptr<webrtc::Call> call_; 161 rtc::scoped_ptr<webrtc::Call> call_;
160 WebRtcVoiceEngine voice_engine_; 162 WebRtcVoiceEngine voice_engine_;
161 WebRtcVideoEngine2 engine_; 163 WebRtcVideoEngine2 engine_;
162 VideoCodec default_codec_; 164 VideoCodec default_codec_;
163 VideoCodec default_red_codec_; 165 VideoCodec default_red_codec_;
164 VideoCodec default_ulpfec_codec_; 166 VideoCodec default_ulpfec_codec_;
165 std::map<int, int> default_apt_rtx_types_; 167 std::map<int, int> default_apt_rtx_types_;
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 // Setting codecs of the same type should not reallocate any encoders 395 // Setting codecs of the same type should not reallocate any encoders
394 // (expecting a no-op). 396 // (expecting a no-op).
395 EXPECT_TRUE(channel->SetSendParameters(parameters)); 397 EXPECT_TRUE(channel->SetSendParameters(parameters));
396 EXPECT_EQ(num_created_encoders, encoder_factory.GetNumCreatedEncoders()); 398 EXPECT_EQ(num_created_encoders, encoder_factory.GetNumCreatedEncoders());
397 399
398 // Remove stream previously added to free the external encoder instance. 400 // Remove stream previously added to free the external encoder instance.
399 EXPECT_TRUE(channel->RemoveSendStream(kSsrc)); 401 EXPECT_TRUE(channel->RemoveSendStream(kSsrc));
400 EXPECT_EQ(0u, encoder_factory.encoders().size()); 402 EXPECT_EQ(0u, encoder_factory.encoders().size());
401 } 403 }
402 404
405 void WebRtcVideoEngine2Test::TestExtendedEncoderOveruse(
406 bool use_external_encoder) {
407 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
408 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8");
409 cricket::VideoSendParameters parameters;
410 parameters.codecs.push_back(kVp8Codec);
411 rtc::scoped_ptr<VideoMediaChannel> channel;
412 FakeCall* fake_call = new FakeCall(webrtc::Call::Config());
413 call_.reset(fake_call);
414 if (use_external_encoder) {
415 channel.reset(
416 SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
417 } else {
418 engine_.Init();
419 channel.reset(engine_.CreateChannel(call_.get(), cricket::VideoOptions()));
420 }
421 ASSERT_TRUE(
422 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
423 EXPECT_TRUE(channel->SetSendParameters(parameters));
424 EXPECT_TRUE(channel->SetSend(true));
425 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
426
427 EXPECT_EQ(use_external_encoder,
428 stream->GetConfig().encoder_settings.full_overuse_time);
429 // Remove stream previously added to free the external encoder instance.
430 EXPECT_TRUE(channel->RemoveSendStream(kSsrc));
431 }
432
433 TEST_F(WebRtcVideoEngine2Test, EnablesFullEncoderTimeForExternalEncoders) {
434 TestExtendedEncoderOveruse(true);
435 }
436
437 TEST_F(WebRtcVideoEngine2Test, DisablesFullEncoderTimeForExternalEncoders) {
åsapersson 2016/02/04 11:17:55 disabled for non-external encoders?
pbos-webrtc 2016/02/04 12:38:04 Done.
438 TestExtendedEncoderOveruse(false);
439 }
440
403 TEST_F(WebRtcVideoEngine2Test, CanConstructDecoderForVp9EncoderFactory) { 441 TEST_F(WebRtcVideoEngine2Test, CanConstructDecoderForVp9EncoderFactory) {
404 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 442 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
405 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9"); 443 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP9, "VP9");
406 std::vector<cricket::VideoCodec> codecs; 444 std::vector<cricket::VideoCodec> codecs;
407 codecs.push_back(kVp9Codec); 445 codecs.push_back(kVp9Codec);
408 446
409 rtc::scoped_ptr<VideoMediaChannel> channel( 447 rtc::scoped_ptr<VideoMediaChannel> channel(
410 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 448 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
411 449
412 EXPECT_TRUE( 450 EXPECT_TRUE(
(...skipping 2684 matching lines...) Expand 10 before | Expand all | Expand 10 after
3097 // Test that we normalize send codec format size in simulcast. 3135 // Test that we normalize send codec format size in simulcast.
3098 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { 3136 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
3099 cricket::VideoCodec codec(kVp8Codec270p); 3137 cricket::VideoCodec codec(kVp8Codec270p);
3100 codec.width += 1; 3138 codec.width += 1;
3101 codec.height += 1; 3139 codec.height += 1;
3102 VerifySimulcastSettings(codec, 2, 2); 3140 VerifySimulcastSettings(codec, 2, 2);
3103 } 3141 }
3104 } // namespace cricket 3142 } // namespace cricket
3105 3143
3106 #endif // HAVE_WEBRTC_VIDEO 3144 #endif // HAVE_WEBRTC_VIDEO
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698