OLD | NEW |
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 Loading... |
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 Loading... |
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) { |
| 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 2999 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3412 // reapplied when disabling screencasting. | 3450 // reapplied when disabling screencasting. |
3413 TEST_F(WebRtcVideoChannel2SimulcastTest, | 3451 TEST_F(WebRtcVideoChannel2SimulcastTest, |
3414 DISABLED_TwoTemporalLayerScreencastSettings) { | 3452 DISABLED_TwoTemporalLayerScreencastSettings) { |
3415 // TODO(pbos): Implement. | 3453 // TODO(pbos): Implement. |
3416 FAIL() << "Not implemented."; | 3454 FAIL() << "Not implemented."; |
3417 } | 3455 } |
3418 | 3456 |
3419 } // namespace cricket | 3457 } // namespace cricket |
3420 | 3458 |
3421 #endif // HAVE_WEBRTC_VIDEO | 3459 #endif // HAVE_WEBRTC_VIDEO |
OLD | NEW |