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) { | |
å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 Loading... | |
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 |
OLD | NEW |