| 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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 it->second == config.rtp.fec.red_rtx_payload_type); | 103 it->second == config.rtp.fec.red_rtx_payload_type); |
| 104 } | 104 } |
| 105 } | 105 } |
| 106 } // namespace | 106 } // namespace |
| 107 | 107 |
| 108 namespace cricket { | 108 namespace cricket { |
| 109 class WebRtcVideoEngine2Test : public ::testing::Test { | 109 class WebRtcVideoEngine2Test : public ::testing::Test { |
| 110 public: | 110 public: |
| 111 WebRtcVideoEngine2Test() : WebRtcVideoEngine2Test(nullptr) {} | 111 WebRtcVideoEngine2Test() : WebRtcVideoEngine2Test(nullptr) {} |
| 112 WebRtcVideoEngine2Test(WebRtcVoiceEngine* voice_engine) | 112 WebRtcVideoEngine2Test(WebRtcVoiceEngine* voice_engine) |
| 113 : engine_(voice_engine) { | 113 : call_(webrtc::Call::Create(webrtc::Call::Config())), |
| 114 engine_() { |
| 114 std::vector<VideoCodec> engine_codecs = engine_.codecs(); | 115 std::vector<VideoCodec> engine_codecs = engine_.codecs(); |
| 115 DCHECK(!engine_codecs.empty()); | 116 DCHECK(!engine_codecs.empty()); |
| 116 bool codec_set = false; | 117 bool codec_set = false; |
| 117 for (size_t i = 0; i < engine_codecs.size(); ++i) { | 118 for (size_t i = 0; i < engine_codecs.size(); ++i) { |
| 118 if (engine_codecs[i].name == "red") { | 119 if (engine_codecs[i].name == "red") { |
| 119 default_red_codec_ = engine_codecs[i]; | 120 default_red_codec_ = engine_codecs[i]; |
| 120 } else if (engine_codecs[i].name == "ulpfec") { | 121 } else if (engine_codecs[i].name == "ulpfec") { |
| 121 default_ulpfec_codec_ = engine_codecs[i]; | 122 default_ulpfec_codec_ = engine_codecs[i]; |
| 122 } else if (engine_codecs[i].name == "rtx") { | 123 } else if (engine_codecs[i].name == "rtx") { |
| 123 int associated_payload_type; | 124 int associated_payload_type; |
| 124 if (engine_codecs[i].GetParam(kCodecParamAssociatedPayloadType, | 125 if (engine_codecs[i].GetParam(kCodecParamAssociatedPayloadType, |
| 125 &associated_payload_type)) { | 126 &associated_payload_type)) { |
| 126 default_apt_rtx_types_[associated_payload_type] = engine_codecs[i].id; | 127 default_apt_rtx_types_[associated_payload_type] = engine_codecs[i].id; |
| 127 } | 128 } |
| 128 } else if (!codec_set) { | 129 } else if (!codec_set) { |
| 129 default_codec_ = engine_codecs[i]; | 130 default_codec_ = engine_codecs[i]; |
| 130 codec_set = true; | 131 codec_set = true; |
| 131 } | 132 } |
| 132 } | 133 } |
| 133 | 134 |
| 134 DCHECK(codec_set); | 135 DCHECK(codec_set); |
| 135 } | 136 } |
| 136 | 137 |
| 137 protected: | 138 protected: |
| 138 class FakeCallFactory : public WebRtcCallFactory { | |
| 139 public: | |
| 140 FakeCallFactory() : fake_call_(NULL) {} | |
| 141 FakeCall* GetCall() { return fake_call_; } | |
| 142 | |
| 143 private: | |
| 144 webrtc::Call* CreateCall(const webrtc::Call::Config& config) override { | |
| 145 DCHECK(fake_call_ == NULL); | |
| 146 fake_call_ = new FakeCall(config); | |
| 147 return fake_call_; | |
| 148 } | |
| 149 | |
| 150 FakeCall* fake_call_; | |
| 151 }; | |
| 152 | |
| 153 VideoMediaChannel* SetUpForExternalEncoderFactory( | 139 VideoMediaChannel* SetUpForExternalEncoderFactory( |
| 154 cricket::WebRtcVideoEncoderFactory* encoder_factory, | 140 cricket::WebRtcVideoEncoderFactory* encoder_factory, |
| 155 const std::vector<VideoCodec>& codecs); | 141 const std::vector<VideoCodec>& codecs); |
| 156 | 142 |
| 157 VideoMediaChannel* SetUpForExternalDecoderFactory( | 143 VideoMediaChannel* SetUpForExternalDecoderFactory( |
| 158 cricket::WebRtcVideoDecoderFactory* decoder_factory, | 144 cricket::WebRtcVideoDecoderFactory* decoder_factory, |
| 159 const std::vector<VideoCodec>& codecs); | 145 const std::vector<VideoCodec>& codecs); |
| 160 | 146 |
| 161 // Used in WebRtcVideoEngine2VoiceTest, but defined here so it's properly | 147 // Used in WebRtcVideoEngine2VoiceTest, but defined here so it's properly |
| 162 // initialized when the constructor is called. | 148 // initialized when the constructor is called. |
| 149 rtc::scoped_ptr<webrtc::Call> call_; |
| 163 WebRtcVoiceEngine voice_engine_; | 150 WebRtcVoiceEngine voice_engine_; |
| 164 WebRtcVideoEngine2 engine_; | 151 WebRtcVideoEngine2 engine_; |
| 165 VideoCodec default_codec_; | 152 VideoCodec default_codec_; |
| 166 VideoCodec default_red_codec_; | 153 VideoCodec default_red_codec_; |
| 167 VideoCodec default_ulpfec_codec_; | 154 VideoCodec default_ulpfec_codec_; |
| 168 std::map<int, int> default_apt_rtx_types_; | 155 std::map<int, int> default_apt_rtx_types_; |
| 169 }; | 156 }; |
| 170 | 157 |
| 171 TEST_F(WebRtcVideoEngine2Test, FindCodec) { | 158 TEST_F(WebRtcVideoEngine2Test, FindCodec) { |
| 172 const std::vector<cricket::VideoCodec>& c = engine_.codecs(); | 159 const std::vector<cricket::VideoCodec>& c = engine_.codecs(); |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 | 330 |
| 344 // Verify removing header extension turns on applying rotation. | 331 // Verify removing header extension turns on applying rotation. |
| 345 extensions.clear(); | 332 extensions.clear(); |
| 346 EXPECT_TRUE(channel->SetSendRtpHeaderExtensions(extensions)); | 333 EXPECT_TRUE(channel->SetSendRtpHeaderExtensions(extensions)); |
| 347 EXPECT_TRUE(capturer.GetApplyRotation()); | 334 EXPECT_TRUE(capturer.GetApplyRotation()); |
| 348 } | 335 } |
| 349 | 336 |
| 350 TEST_F(WebRtcVideoEngine2Test, SetSendFailsBeforeSettingCodecs) { | 337 TEST_F(WebRtcVideoEngine2Test, SetSendFailsBeforeSettingCodecs) { |
| 351 engine_.Init(); | 338 engine_.Init(); |
| 352 rtc::scoped_ptr<VideoMediaChannel> channel( | 339 rtc::scoped_ptr<VideoMediaChannel> channel( |
| 353 engine_.CreateChannel(cricket::VideoOptions(), NULL)); | 340 engine_.CreateChannel(call_.get(), cricket::VideoOptions())); |
| 354 | 341 |
| 355 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(123))); | 342 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(123))); |
| 356 | 343 |
| 357 EXPECT_FALSE(channel->SetSend(true)) | 344 EXPECT_FALSE(channel->SetSend(true)) |
| 358 << "Channel should not start without codecs."; | 345 << "Channel should not start without codecs."; |
| 359 EXPECT_TRUE(channel->SetSend(false)) | 346 EXPECT_TRUE(channel->SetSend(false)) |
| 360 << "Channel should be stoppable even without set codecs."; | 347 << "Channel should be stoppable even without set codecs."; |
| 361 } | 348 } |
| 362 | 349 |
| 363 TEST_F(WebRtcVideoEngine2Test, GetStatsWithoutSendCodecsSetDoesNotCrash) { | 350 TEST_F(WebRtcVideoEngine2Test, GetStatsWithoutSendCodecsSetDoesNotCrash) { |
| 364 engine_.Init(); | 351 engine_.Init(); |
| 365 rtc::scoped_ptr<VideoMediaChannel> channel( | 352 rtc::scoped_ptr<VideoMediaChannel> channel( |
| 366 engine_.CreateChannel(cricket::VideoOptions(), NULL)); | 353 engine_.CreateChannel(call_.get(), cricket::VideoOptions())); |
| 367 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(123))); | 354 EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(123))); |
| 368 VideoMediaInfo info; | 355 VideoMediaInfo info; |
| 369 channel->GetStats(&info); | 356 channel->GetStats(&info); |
| 370 } | 357 } |
| 371 | 358 |
| 372 TEST_F(WebRtcVideoEngine2Test, UseExternalFactoryForVp8WhenSupported) { | 359 TEST_F(WebRtcVideoEngine2Test, UseExternalFactoryForVp8WhenSupported) { |
| 373 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 360 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
| 374 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); | 361 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); |
| 375 std::vector<cricket::VideoCodec> codecs; | 362 std::vector<cricket::VideoCodec> codecs; |
| 376 codecs.push_back(kVp8Codec); | 363 codecs.push_back(kVp8Codec); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 EXPECT_TRUE( | 405 EXPECT_TRUE( |
| 419 channel->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 406 channel->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
| 420 } | 407 } |
| 421 | 408 |
| 422 TEST_F(WebRtcVideoEngine2Test, PropagatesInputFrameTimestamp) { | 409 TEST_F(WebRtcVideoEngine2Test, PropagatesInputFrameTimestamp) { |
| 423 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 410 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
| 424 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); | 411 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); |
| 425 std::vector<cricket::VideoCodec> codecs; | 412 std::vector<cricket::VideoCodec> codecs; |
| 426 codecs.push_back(kVp8Codec); | 413 codecs.push_back(kVp8Codec); |
| 427 | 414 |
| 428 FakeCallFactory factory; | 415 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); |
| 429 engine_.SetCallFactory(&factory); | 416 call_.reset(fake_call); |
| 430 rtc::scoped_ptr<VideoMediaChannel> channel( | 417 rtc::scoped_ptr<VideoMediaChannel> channel( |
| 431 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 418 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
| 432 | 419 |
| 433 EXPECT_TRUE( | 420 EXPECT_TRUE( |
| 434 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 421 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
| 435 | 422 |
| 436 FakeVideoCapturer capturer; | 423 FakeVideoCapturer capturer; |
| 437 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); | 424 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer)); |
| 438 capturer.Start(cricket::VideoFormat(1280, 720, | 425 capturer.Start(cricket::VideoFormat(1280, 720, |
| 439 cricket::VideoFormat::FpsToInterval(60), | 426 cricket::VideoFormat::FpsToInterval(60), |
| 440 cricket::FOURCC_I420)); | 427 cricket::FOURCC_I420)); |
| 441 channel->SetSend(true); | 428 channel->SetSend(true); |
| 442 | 429 |
| 443 FakeVideoSendStream* stream = factory.GetCall()->GetVideoSendStreams()[0]; | 430 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; |
| 444 | |
| 445 | 431 |
| 446 EXPECT_TRUE(capturer.CaptureFrame()); | 432 EXPECT_TRUE(capturer.CaptureFrame()); |
| 447 int64_t last_timestamp = stream->GetLastTimestamp(); | 433 int64_t last_timestamp = stream->GetLastTimestamp(); |
| 448 for (int i = 0; i < 10; i++) { | 434 for (int i = 0; i < 10; i++) { |
| 449 EXPECT_TRUE(capturer.CaptureFrame()); | 435 EXPECT_TRUE(capturer.CaptureFrame()); |
| 450 int64_t timestamp = stream->GetLastTimestamp(); | 436 int64_t timestamp = stream->GetLastTimestamp(); |
| 451 int64_t interval = timestamp - last_timestamp; | 437 int64_t interval = timestamp - last_timestamp; |
| 452 | 438 |
| 453 // Precision changes from nanosecond to millisecond. | 439 // Precision changes from nanosecond to millisecond. |
| 454 // Allow error to be no more than 1. | 440 // Allow error to be no more than 1. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 479 EXPECT_TRUE(channel->RemoveSendStream(kSsrc)); | 465 EXPECT_TRUE(channel->RemoveSendStream(kSsrc)); |
| 480 } | 466 } |
| 481 | 467 |
| 482 TEST_F(WebRtcVideoEngine2Test, | 468 TEST_F(WebRtcVideoEngine2Test, |
| 483 ProducesIncreasingTimestampsWithResetInputSources) { | 469 ProducesIncreasingTimestampsWithResetInputSources) { |
| 484 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 470 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
| 485 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); | 471 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); |
| 486 std::vector<cricket::VideoCodec> codecs; | 472 std::vector<cricket::VideoCodec> codecs; |
| 487 codecs.push_back(kVp8Codec); | 473 codecs.push_back(kVp8Codec); |
| 488 | 474 |
| 489 FakeCallFactory factory; | 475 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); |
| 490 engine_.SetCallFactory(&factory); | 476 call_.reset(fake_call); |
| 491 rtc::scoped_ptr<VideoMediaChannel> channel( | 477 rtc::scoped_ptr<VideoMediaChannel> channel( |
| 492 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); | 478 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); |
| 493 | 479 |
| 494 EXPECT_TRUE( | 480 EXPECT_TRUE( |
| 495 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); | 481 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); |
| 496 channel->SetSend(true); | 482 channel->SetSend(true); |
| 497 FakeVideoSendStream* stream = factory.GetCall()->GetVideoSendStreams()[0]; | 483 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; |
| 498 | 484 |
| 499 FakeVideoCapturer capturer1; | 485 FakeVideoCapturer capturer1; |
| 500 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1)); | 486 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1)); |
| 501 | 487 |
| 502 cricket::CapturedFrame frame; | 488 cricket::CapturedFrame frame; |
| 503 frame.width = 1280; | 489 frame.width = 1280; |
| 504 frame.height = 720; | 490 frame.height = 720; |
| 505 frame.fourcc = cricket::FOURCC_I420; | 491 frame.fourcc = cricket::FOURCC_I420; |
| 506 frame.data_size = static_cast<uint32>( | 492 frame.data_size = static_cast<uint32>( |
| 507 cricket::VideoFrame::SizeOf(frame.width, frame.height)); | 493 cricket::VideoFrame::SizeOf(frame.width, frame.height)); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 537 EXPECT_TRUE(channel->RemoveSendStream(kSsrc)); | 523 EXPECT_TRUE(channel->RemoveSendStream(kSsrc)); |
| 538 } | 524 } |
| 539 | 525 |
| 540 VideoMediaChannel* WebRtcVideoEngine2Test::SetUpForExternalEncoderFactory( | 526 VideoMediaChannel* WebRtcVideoEngine2Test::SetUpForExternalEncoderFactory( |
| 541 cricket::WebRtcVideoEncoderFactory* encoder_factory, | 527 cricket::WebRtcVideoEncoderFactory* encoder_factory, |
| 542 const std::vector<VideoCodec>& codecs) { | 528 const std::vector<VideoCodec>& codecs) { |
| 543 engine_.SetExternalEncoderFactory(encoder_factory); | 529 engine_.SetExternalEncoderFactory(encoder_factory); |
| 544 engine_.Init(); | 530 engine_.Init(); |
| 545 | 531 |
| 546 VideoMediaChannel* channel = | 532 VideoMediaChannel* channel = |
| 547 engine_.CreateChannel(cricket::VideoOptions(), NULL); | 533 engine_.CreateChannel(call_.get(), cricket::VideoOptions()); |
| 548 EXPECT_TRUE(channel->SetSendCodecs(codecs)); | 534 EXPECT_TRUE(channel->SetSendCodecs(codecs)); |
| 549 | 535 |
| 550 return channel; | 536 return channel; |
| 551 } | 537 } |
| 552 | 538 |
| 553 VideoMediaChannel* WebRtcVideoEngine2Test::SetUpForExternalDecoderFactory( | 539 VideoMediaChannel* WebRtcVideoEngine2Test::SetUpForExternalDecoderFactory( |
| 554 cricket::WebRtcVideoDecoderFactory* decoder_factory, | 540 cricket::WebRtcVideoDecoderFactory* decoder_factory, |
| 555 const std::vector<VideoCodec>& codecs) { | 541 const std::vector<VideoCodec>& codecs) { |
| 556 engine_.SetExternalDecoderFactory(decoder_factory); | 542 engine_.SetExternalDecoderFactory(decoder_factory); |
| 557 engine_.Init(); | 543 engine_.Init(); |
| 558 | 544 |
| 559 VideoMediaChannel* channel = | 545 VideoMediaChannel* channel = |
| 560 engine_.CreateChannel(cricket::VideoOptions(), NULL); | 546 engine_.CreateChannel(call_.get(), cricket::VideoOptions()); |
| 561 EXPECT_TRUE(channel->SetRecvCodecs(codecs)); | 547 EXPECT_TRUE(channel->SetRecvCodecs(codecs)); |
| 562 | 548 |
| 563 return channel; | 549 return channel; |
| 564 } | 550 } |
| 565 | 551 |
| 566 TEST_F(WebRtcVideoEngine2Test, UsesSimulcastAdapterForVp8Factories) { | 552 TEST_F(WebRtcVideoEngine2Test, UsesSimulcastAdapterForVp8Factories) { |
| 567 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 553 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
| 568 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); | 554 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); |
| 569 std::vector<cricket::VideoCodec> codecs; | 555 std::vector<cricket::VideoCodec> codecs; |
| 570 codecs.push_back(kVp8Codec); | 556 codecs.push_back(kVp8Codec); |
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 901 EXPECT_TRUE(SetOneCodec(codec)); | 887 EXPECT_TRUE(SetOneCodec(codec)); |
| 902 codec.width /= 2; | 888 codec.width /= 2; |
| 903 codec.height /= 2; | 889 codec.height /= 2; |
| 904 EXPECT_TRUE(SetSend(true)); | 890 EXPECT_TRUE(SetSend(true)); |
| 905 EXPECT_TRUE(channel_->SetRender(true)); | 891 EXPECT_TRUE(channel_->SetRender(true)); |
| 906 EXPECT_EQ(0, renderer_.num_rendered_frames()); | 892 EXPECT_EQ(0, renderer_.num_rendered_frames()); |
| 907 EXPECT_TRUE(SendFrame()); | 893 EXPECT_TRUE(SendFrame()); |
| 908 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); | 894 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); |
| 909 } | 895 } |
| 910 | 896 |
| 911 class WebRtcVideoChannel2Test : public WebRtcVideoEngine2Test, | 897 class WebRtcVideoChannel2Test : public WebRtcVideoEngine2Test { |
| 912 public WebRtcCallFactory { | |
| 913 public: | 898 public: |
| 914 WebRtcVideoChannel2Test() : fake_call_(NULL), last_ssrc_(0) {} | 899 WebRtcVideoChannel2Test() : last_ssrc_(0) {} |
| 915 void SetUp() override { | 900 void SetUp() override { |
| 916 engine_.SetCallFactory(this); | 901 fake_call_.reset(new FakeCall(webrtc::Call::Config())); |
| 917 engine_.Init(); | 902 engine_.Init(); |
| 918 channel_.reset(engine_.CreateChannel(cricket::VideoOptions(), NULL)); | 903 channel_.reset( |
| 919 ASSERT_TRUE(fake_call_ != NULL) << "Call not created through factory."; | 904 engine_.CreateChannel(fake_call_.get(), cricket::VideoOptions())); |
| 920 last_ssrc_ = 123; | 905 last_ssrc_ = 123; |
| 921 ASSERT_TRUE(channel_->SetSendCodecs(engine_.codecs())); | 906 ASSERT_TRUE(channel_->SetSendCodecs(engine_.codecs())); |
| 922 } | 907 } |
| 923 | 908 |
| 924 protected: | 909 protected: |
| 925 virtual std::vector<cricket::VideoCodec> GetCodecs() { | 910 virtual std::vector<cricket::VideoCodec> GetCodecs() { |
| 926 return engine_.codecs(); | 911 return engine_.codecs(); |
| 927 } | 912 } |
| 928 | 913 |
| 929 webrtc::Call* CreateCall(const webrtc::Call::Config& config) override { | |
| 930 DCHECK(fake_call_ == NULL); | |
| 931 fake_call_ = new FakeCall(config); | |
| 932 return fake_call_; | |
| 933 } | |
| 934 | |
| 935 FakeVideoSendStream* AddSendStream() { | 914 FakeVideoSendStream* AddSendStream() { |
| 936 return AddSendStream(StreamParams::CreateLegacy(++last_ssrc_)); | 915 return AddSendStream(StreamParams::CreateLegacy(++last_ssrc_)); |
| 937 } | 916 } |
| 938 | 917 |
| 939 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { | 918 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { |
| 940 size_t num_streams = fake_call_->GetVideoSendStreams().size(); | 919 size_t num_streams = fake_call_->GetVideoSendStreams().size(); |
| 941 EXPECT_TRUE(channel_->AddSendStream(sp)); | 920 EXPECT_TRUE(channel_->AddSendStream(sp)); |
| 942 std::vector<FakeVideoSendStream*> streams = | 921 std::vector<FakeVideoSendStream*> streams = |
| 943 fake_call_->GetVideoSendStreams(); | 922 fake_call_->GetVideoSendStreams(); |
| 944 EXPECT_EQ(num_streams + 1, streams.size()); | 923 EXPECT_EQ(num_streams + 1, streams.size()); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 978 EXPECT_EQ(expected_min_bitrate_bps, | 957 EXPECT_EQ(expected_min_bitrate_bps, |
| 979 fake_call_->GetConfig().bitrate_config.min_bitrate_bps); | 958 fake_call_->GetConfig().bitrate_config.min_bitrate_bps); |
| 980 EXPECT_EQ(expected_start_bitrate_bps, | 959 EXPECT_EQ(expected_start_bitrate_bps, |
| 981 fake_call_->GetConfig().bitrate_config.start_bitrate_bps); | 960 fake_call_->GetConfig().bitrate_config.start_bitrate_bps); |
| 982 EXPECT_EQ(expected_max_bitrate_bps, | 961 EXPECT_EQ(expected_max_bitrate_bps, |
| 983 fake_call_->GetConfig().bitrate_config.max_bitrate_bps); | 962 fake_call_->GetConfig().bitrate_config.max_bitrate_bps); |
| 984 } | 963 } |
| 985 | 964 |
| 986 void TestSetSendRtpHeaderExtensions(const std::string& cricket_ext, | 965 void TestSetSendRtpHeaderExtensions(const std::string& cricket_ext, |
| 987 const std::string& webrtc_ext) { | 966 const std::string& webrtc_ext) { |
| 988 FakeCall* call = fake_call_; | |
| 989 // Enable extension. | 967 // Enable extension. |
| 990 const int id = 1; | 968 const int id = 1; |
| 991 std::vector<cricket::RtpHeaderExtension> extensions; | 969 std::vector<cricket::RtpHeaderExtension> extensions; |
| 992 extensions.push_back(cricket::RtpHeaderExtension(cricket_ext, id)); | 970 extensions.push_back(cricket::RtpHeaderExtension(cricket_ext, id)); |
| 993 EXPECT_TRUE(channel_->SetSendRtpHeaderExtensions(extensions)); | 971 EXPECT_TRUE(channel_->SetSendRtpHeaderExtensions(extensions)); |
| 994 | 972 |
| 995 FakeVideoSendStream* send_stream = | 973 FakeVideoSendStream* send_stream = |
| 996 AddSendStream(cricket::StreamParams::CreateLegacy(123)); | 974 AddSendStream(cricket::StreamParams::CreateLegacy(123)); |
| 997 | 975 |
| 998 // Verify the send extension id. | 976 // Verify the send extension id. |
| 999 ASSERT_EQ(1u, send_stream->GetConfig().rtp.extensions.size()); | 977 ASSERT_EQ(1u, send_stream->GetConfig().rtp.extensions.size()); |
| 1000 EXPECT_EQ(id, send_stream->GetConfig().rtp.extensions[0].id); | 978 EXPECT_EQ(id, send_stream->GetConfig().rtp.extensions[0].id); |
| 1001 EXPECT_EQ(webrtc_ext, send_stream->GetConfig().rtp.extensions[0].name); | 979 EXPECT_EQ(webrtc_ext, send_stream->GetConfig().rtp.extensions[0].name); |
| 1002 // Verify call with same set of extensions returns true. | 980 // Verify call with same set of extensions returns true. |
| 1003 EXPECT_TRUE(channel_->SetSendRtpHeaderExtensions(extensions)); | 981 EXPECT_TRUE(channel_->SetSendRtpHeaderExtensions(extensions)); |
| 1004 // Verify that SetSendRtpHeaderExtensions doesn't implicitly add them for | 982 // Verify that SetSendRtpHeaderExtensions doesn't implicitly add them for |
| 1005 // receivers. | 983 // receivers. |
| 1006 EXPECT_TRUE(AddRecvStream(cricket::StreamParams::CreateLegacy(123)) | 984 EXPECT_TRUE(AddRecvStream(cricket::StreamParams::CreateLegacy(123)) |
| 1007 ->GetConfig() | 985 ->GetConfig() |
| 1008 .rtp.extensions.empty()); | 986 .rtp.extensions.empty()); |
| 1009 | 987 |
| 1010 // Verify that existing RTP header extensions can be removed. | 988 // Verify that existing RTP header extensions can be removed. |
| 1011 std::vector<cricket::RtpHeaderExtension> empty_extensions; | 989 std::vector<cricket::RtpHeaderExtension> empty_extensions; |
| 1012 EXPECT_TRUE(channel_->SetSendRtpHeaderExtensions(empty_extensions)); | 990 EXPECT_TRUE(channel_->SetSendRtpHeaderExtensions(empty_extensions)); |
| 1013 ASSERT_EQ(1u, call->GetVideoSendStreams().size()); | 991 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
| 1014 send_stream = call->GetVideoSendStreams()[0]; | 992 send_stream = fake_call_->GetVideoSendStreams()[0]; |
| 1015 EXPECT_TRUE(send_stream->GetConfig().rtp.extensions.empty()); | 993 EXPECT_TRUE(send_stream->GetConfig().rtp.extensions.empty()); |
| 1016 | 994 |
| 1017 // Verify that adding receive RTP header extensions adds them for existing | 995 // Verify that adding receive RTP header extensions adds them for existing |
| 1018 // streams. | 996 // streams. |
| 1019 EXPECT_TRUE(channel_->SetSendRtpHeaderExtensions(extensions)); | 997 EXPECT_TRUE(channel_->SetSendRtpHeaderExtensions(extensions)); |
| 1020 send_stream = call->GetVideoSendStreams()[0]; | 998 send_stream = fake_call_->GetVideoSendStreams()[0]; |
| 1021 ASSERT_EQ(1u, send_stream->GetConfig().rtp.extensions.size()); | 999 ASSERT_EQ(1u, send_stream->GetConfig().rtp.extensions.size()); |
| 1022 EXPECT_EQ(id, send_stream->GetConfig().rtp.extensions[0].id); | 1000 EXPECT_EQ(id, send_stream->GetConfig().rtp.extensions[0].id); |
| 1023 EXPECT_EQ(webrtc_ext, send_stream->GetConfig().rtp.extensions[0].name); | 1001 EXPECT_EQ(webrtc_ext, send_stream->GetConfig().rtp.extensions[0].name); |
| 1024 } | 1002 } |
| 1025 | 1003 |
| 1026 void TestSetRecvRtpHeaderExtensions(const std::string& cricket_ext, | 1004 void TestSetRecvRtpHeaderExtensions(const std::string& cricket_ext, |
| 1027 const std::string& webrtc_ext) { | 1005 const std::string& webrtc_ext) { |
| 1028 FakeCall* call = fake_call_; | |
| 1029 // Enable extension. | 1006 // Enable extension. |
| 1030 const int id = 1; | 1007 const int id = 1; |
| 1031 std::vector<cricket::RtpHeaderExtension> extensions; | 1008 std::vector<cricket::RtpHeaderExtension> extensions; |
| 1032 extensions.push_back(cricket::RtpHeaderExtension(cricket_ext, id)); | 1009 extensions.push_back(cricket::RtpHeaderExtension(cricket_ext, id)); |
| 1033 EXPECT_TRUE(channel_->SetRecvRtpHeaderExtensions(extensions)); | 1010 EXPECT_TRUE(channel_->SetRecvRtpHeaderExtensions(extensions)); |
| 1034 | 1011 |
| 1035 FakeVideoReceiveStream* recv_stream = | 1012 FakeVideoReceiveStream* recv_stream = |
| 1036 AddRecvStream(cricket::StreamParams::CreateLegacy(123)); | 1013 AddRecvStream(cricket::StreamParams::CreateLegacy(123)); |
| 1037 | 1014 |
| 1038 // Verify the recv extension id. | 1015 // Verify the recv extension id. |
| 1039 ASSERT_EQ(1u, recv_stream->GetConfig().rtp.extensions.size()); | 1016 ASSERT_EQ(1u, recv_stream->GetConfig().rtp.extensions.size()); |
| 1040 EXPECT_EQ(id, recv_stream->GetConfig().rtp.extensions[0].id); | 1017 EXPECT_EQ(id, recv_stream->GetConfig().rtp.extensions[0].id); |
| 1041 EXPECT_EQ(webrtc_ext, recv_stream->GetConfig().rtp.extensions[0].name); | 1018 EXPECT_EQ(webrtc_ext, recv_stream->GetConfig().rtp.extensions[0].name); |
| 1042 // Verify call with same set of extensions returns true. | 1019 // Verify call with same set of extensions returns true. |
| 1043 EXPECT_TRUE(channel_->SetRecvRtpHeaderExtensions(extensions)); | 1020 EXPECT_TRUE(channel_->SetRecvRtpHeaderExtensions(extensions)); |
| 1044 | 1021 |
| 1045 // Verify that SetRecvRtpHeaderExtensions doesn't implicitly add them for | 1022 // Verify that SetRecvRtpHeaderExtensions doesn't implicitly add them for |
| 1046 // senders. | 1023 // senders. |
| 1047 EXPECT_TRUE(AddSendStream(cricket::StreamParams::CreateLegacy(123)) | 1024 EXPECT_TRUE(AddSendStream(cricket::StreamParams::CreateLegacy(123)) |
| 1048 ->GetConfig() | 1025 ->GetConfig() |
| 1049 .rtp.extensions.empty()); | 1026 .rtp.extensions.empty()); |
| 1050 | 1027 |
| 1051 // Verify that existing RTP header extensions can be removed. | 1028 // Verify that existing RTP header extensions can be removed. |
| 1052 std::vector<cricket::RtpHeaderExtension> empty_extensions; | 1029 std::vector<cricket::RtpHeaderExtension> empty_extensions; |
| 1053 EXPECT_TRUE(channel_->SetRecvRtpHeaderExtensions(empty_extensions)); | 1030 EXPECT_TRUE(channel_->SetRecvRtpHeaderExtensions(empty_extensions)); |
| 1054 ASSERT_EQ(1u, call->GetVideoReceiveStreams().size()); | 1031 ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size()); |
| 1055 recv_stream = call->GetVideoReceiveStreams()[0]; | 1032 recv_stream = fake_call_->GetVideoReceiveStreams()[0]; |
| 1056 EXPECT_TRUE(recv_stream->GetConfig().rtp.extensions.empty()); | 1033 EXPECT_TRUE(recv_stream->GetConfig().rtp.extensions.empty()); |
| 1057 | 1034 |
| 1058 // Verify that adding receive RTP header extensions adds them for existing | 1035 // Verify that adding receive RTP header extensions adds them for existing |
| 1059 // streams. | 1036 // streams. |
| 1060 EXPECT_TRUE(channel_->SetRecvRtpHeaderExtensions(extensions)); | 1037 EXPECT_TRUE(channel_->SetRecvRtpHeaderExtensions(extensions)); |
| 1061 recv_stream = call->GetVideoReceiveStreams()[0]; | 1038 recv_stream = fake_call_->GetVideoReceiveStreams()[0]; |
| 1062 ASSERT_EQ(1u, recv_stream->GetConfig().rtp.extensions.size()); | 1039 ASSERT_EQ(1u, recv_stream->GetConfig().rtp.extensions.size()); |
| 1063 EXPECT_EQ(id, recv_stream->GetConfig().rtp.extensions[0].id); | 1040 EXPECT_EQ(id, recv_stream->GetConfig().rtp.extensions[0].id); |
| 1064 EXPECT_EQ(webrtc_ext, recv_stream->GetConfig().rtp.extensions[0].name); | 1041 EXPECT_EQ(webrtc_ext, recv_stream->GetConfig().rtp.extensions[0].name); |
| 1065 } | 1042 } |
| 1066 | 1043 |
| 1067 void TestCpuAdaptation(bool enable_overuse, bool is_screenshare); | 1044 void TestCpuAdaptation(bool enable_overuse, bool is_screenshare); |
| 1068 void TestReceiverLocalSsrcConfiguration(bool receiver_first); | 1045 void TestReceiverLocalSsrcConfiguration(bool receiver_first); |
| 1069 void TestReceiveUnsignalledSsrcPacket(uint8_t payload_type, | 1046 void TestReceiveUnsignalledSsrcPacket(uint8_t payload_type, |
| 1070 bool expect_created_receive_stream); | 1047 bool expect_created_receive_stream); |
| 1071 | 1048 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1089 rtx_ssrcs.push_back(ssrc + kRtxSsrcOffset); | 1066 rtx_ssrcs.push_back(ssrc + kRtxSsrcOffset); |
| 1090 } | 1067 } |
| 1091 } | 1068 } |
| 1092 if (with_rtx) { | 1069 if (with_rtx) { |
| 1093 return AddSendStream( | 1070 return AddSendStream( |
| 1094 cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs)); | 1071 cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs)); |
| 1095 } | 1072 } |
| 1096 return AddSendStream(CreateSimStreamParams("cname", ssrcs)); | 1073 return AddSendStream(CreateSimStreamParams("cname", ssrcs)); |
| 1097 } | 1074 } |
| 1098 | 1075 |
| 1099 FakeCall* fake_call_; | 1076 rtc::scoped_ptr<FakeCall> fake_call_; |
| 1100 rtc::scoped_ptr<VideoMediaChannel> channel_; | 1077 rtc::scoped_ptr<VideoMediaChannel> channel_; |
| 1101 uint32 last_ssrc_; | 1078 uint32 last_ssrc_; |
| 1102 }; | 1079 }; |
| 1103 | 1080 |
| 1104 TEST_F(WebRtcVideoChannel2Test, SetsSyncGroupFromSyncLabel) { | 1081 TEST_F(WebRtcVideoChannel2Test, SetsSyncGroupFromSyncLabel) { |
| 1105 const uint32 kVideoSsrc = 123; | 1082 const uint32 kVideoSsrc = 123; |
| 1106 const std::string kSyncLabel = "AvSyncLabel"; | 1083 const std::string kSyncLabel = "AvSyncLabel"; |
| 1107 | 1084 |
| 1108 cricket::StreamParams sp = cricket::StreamParams::CreateLegacy(kVideoSsrc); | 1085 cricket::StreamParams sp = cricket::StreamParams::CreateLegacy(kVideoSsrc); |
| 1109 sp.sync_label = kSyncLabel; | 1086 sp.sync_label = kSyncLabel; |
| (...skipping 1716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2826 } | 2803 } |
| 2827 | 2804 |
| 2828 TEST_F(WebRtcVideoChannel2Test, ConfiguresLocalSsrc) { | 2805 TEST_F(WebRtcVideoChannel2Test, ConfiguresLocalSsrc) { |
| 2829 TestReceiverLocalSsrcConfiguration(false); | 2806 TestReceiverLocalSsrcConfiguration(false); |
| 2830 } | 2807 } |
| 2831 | 2808 |
| 2832 TEST_F(WebRtcVideoChannel2Test, ConfiguresLocalSsrcOnExistingReceivers) { | 2809 TEST_F(WebRtcVideoChannel2Test, ConfiguresLocalSsrcOnExistingReceivers) { |
| 2833 TestReceiverLocalSsrcConfiguration(true); | 2810 TestReceiverLocalSsrcConfiguration(true); |
| 2834 } | 2811 } |
| 2835 | 2812 |
| 2836 class WebRtcVideoEngine2SimulcastTest : public testing::Test { | 2813 class WebRtcVideoEngine2SimulcastTest : public testing::Test {}; |
| 2837 public: | |
| 2838 WebRtcVideoEngine2SimulcastTest() : engine_(nullptr) {} | |
| 2839 | |
| 2840 protected: | |
| 2841 WebRtcVideoEngine2 engine_; | |
| 2842 }; | |
| 2843 | 2814 |
| 2844 // Test that if we add a stream with RTX SSRC's, SSRC's get set correctly. | 2815 // Test that if we add a stream with RTX SSRC's, SSRC's get set correctly. |
| 2845 TEST_F(WebRtcVideoEngine2SimulcastTest, DISABLED_TestStreamWithRtx) { | 2816 TEST_F(WebRtcVideoEngine2SimulcastTest, DISABLED_TestStreamWithRtx) { |
| 2846 // TODO(pbos): Implement. | 2817 // TODO(pbos): Implement. |
| 2847 FAIL() << "Not implemented."; | 2818 FAIL() << "Not implemented."; |
| 2848 } | 2819 } |
| 2849 | 2820 |
| 2850 // Test that if we get too few ssrcs are given in AddSendStream(), | 2821 // Test that if we get too few ssrcs are given in AddSendStream(), |
| 2851 // only supported sub-streams will be added. | 2822 // only supported sub-streams will be added. |
| 2852 TEST_F(WebRtcVideoEngine2SimulcastTest, DISABLED_TooFewSimulcastSsrcs) { | 2823 TEST_F(WebRtcVideoEngine2SimulcastTest, DISABLED_TooFewSimulcastSsrcs) { |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2979 // TODO(pbos): Implement. | 2950 // TODO(pbos): Implement. |
| 2980 FAIL() << "Not implemented."; | 2951 FAIL() << "Not implemented."; |
| 2981 } | 2952 } |
| 2982 | 2953 |
| 2983 TEST_F(WebRtcVideoEngine2SimulcastTest, | 2954 TEST_F(WebRtcVideoEngine2SimulcastTest, |
| 2984 DISABLED_DontUseSimulcastAdapterOnNonVp8Factory) { | 2955 DISABLED_DontUseSimulcastAdapterOnNonVp8Factory) { |
| 2985 // TODO(pbos): Implement. | 2956 // TODO(pbos): Implement. |
| 2986 FAIL() << "Not implemented."; | 2957 FAIL() << "Not implemented."; |
| 2987 } | 2958 } |
| 2988 | 2959 |
| 2989 class WebRtcVideoChannel2SimulcastTest : public WebRtcVideoEngine2SimulcastTest, | 2960 class WebRtcVideoChannel2SimulcastTest : public testing::Test { |
| 2990 public WebRtcCallFactory { | |
| 2991 public: | 2961 public: |
| 2992 WebRtcVideoChannel2SimulcastTest() : fake_call_(NULL) {} | 2962 WebRtcVideoChannel2SimulcastTest() : fake_call_(webrtc::Call::Config()) {} |
| 2993 | 2963 |
| 2994 void SetUp() override { | 2964 void SetUp() override { |
| 2995 engine_.SetCallFactory(this); | |
| 2996 engine_.Init(); | 2965 engine_.Init(); |
| 2997 channel_.reset(engine_.CreateChannel(VideoOptions(), NULL)); | 2966 channel_.reset(engine_.CreateChannel(&fake_call_, VideoOptions())); |
| 2998 ASSERT_TRUE(fake_call_ != NULL) << "Call not created through factory."; | |
| 2999 last_ssrc_ = 123; | 2967 last_ssrc_ = 123; |
| 3000 } | 2968 } |
| 3001 | 2969 |
| 3002 protected: | 2970 protected: |
| 3003 webrtc::Call* CreateCall(const webrtc::Call::Config& config) override { | |
| 3004 DCHECK(fake_call_ == NULL); | |
| 3005 fake_call_ = new FakeCall(config); | |
| 3006 return fake_call_; | |
| 3007 } | |
| 3008 | |
| 3009 void VerifySimulcastSettings(const VideoCodec& codec, | 2971 void VerifySimulcastSettings(const VideoCodec& codec, |
| 3010 VideoOptions::HighestBitrate bitrate_mode, | 2972 VideoOptions::HighestBitrate bitrate_mode, |
| 3011 size_t num_configured_streams, | 2973 size_t num_configured_streams, |
| 3012 size_t expected_num_streams, | 2974 size_t expected_num_streams, |
| 3013 SimulcastBitrateMode simulcast_bitrate_mode) { | 2975 SimulcastBitrateMode simulcast_bitrate_mode) { |
| 3014 cricket::VideoOptions options; | 2976 cricket::VideoOptions options; |
| 3015 options.video_highest_bitrate.Set(bitrate_mode); | 2977 options.video_highest_bitrate.Set(bitrate_mode); |
| 3016 EXPECT_TRUE(channel_->SetOptions(options)); | 2978 EXPECT_TRUE(channel_->SetOptions(options)); |
| 3017 | 2979 |
| 3018 std::vector<VideoCodec> codecs; | 2980 std::vector<VideoCodec> codecs; |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3092 | 3054 |
| 3093 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), NULL)); | 3055 EXPECT_TRUE(channel_->SetCapturer(ssrcs.front(), NULL)); |
| 3094 } | 3056 } |
| 3095 | 3057 |
| 3096 FakeVideoSendStream* AddSendStream() { | 3058 FakeVideoSendStream* AddSendStream() { |
| 3097 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); | 3059 return AddSendStream(StreamParams::CreateLegacy(last_ssrc_++)); |
| 3098 } | 3060 } |
| 3099 | 3061 |
| 3100 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { | 3062 FakeVideoSendStream* AddSendStream(const StreamParams& sp) { |
| 3101 size_t num_streams = | 3063 size_t num_streams = |
| 3102 fake_call_->GetVideoSendStreams().size(); | 3064 fake_call_.GetVideoSendStreams().size(); |
| 3103 EXPECT_TRUE(channel_->AddSendStream(sp)); | 3065 EXPECT_TRUE(channel_->AddSendStream(sp)); |
| 3104 std::vector<FakeVideoSendStream*> streams = | 3066 std::vector<FakeVideoSendStream*> streams = |
| 3105 fake_call_->GetVideoSendStreams(); | 3067 fake_call_.GetVideoSendStreams(); |
| 3106 EXPECT_EQ(num_streams + 1, streams.size()); | 3068 EXPECT_EQ(num_streams + 1, streams.size()); |
| 3107 return streams[streams.size() - 1]; | 3069 return streams[streams.size() - 1]; |
| 3108 } | 3070 } |
| 3109 | 3071 |
| 3110 std::vector<FakeVideoSendStream*> GetFakeSendStreams() { | 3072 std::vector<FakeVideoSendStream*> GetFakeSendStreams() { |
| 3111 return fake_call_->GetVideoSendStreams(); | 3073 return fake_call_.GetVideoSendStreams(); |
| 3112 } | 3074 } |
| 3113 | 3075 |
| 3114 FakeVideoReceiveStream* AddRecvStream() { | 3076 FakeVideoReceiveStream* AddRecvStream() { |
| 3115 return AddRecvStream(StreamParams::CreateLegacy(last_ssrc_++)); | 3077 return AddRecvStream(StreamParams::CreateLegacy(last_ssrc_++)); |
| 3116 } | 3078 } |
| 3117 | 3079 |
| 3118 FakeVideoReceiveStream* AddRecvStream(const StreamParams& sp) { | 3080 FakeVideoReceiveStream* AddRecvStream(const StreamParams& sp) { |
| 3119 size_t num_streams = | 3081 size_t num_streams = |
| 3120 fake_call_->GetVideoReceiveStreams().size(); | 3082 fake_call_.GetVideoReceiveStreams().size(); |
| 3121 EXPECT_TRUE(channel_->AddRecvStream(sp)); | 3083 EXPECT_TRUE(channel_->AddRecvStream(sp)); |
| 3122 std::vector<FakeVideoReceiveStream*> streams = | 3084 std::vector<FakeVideoReceiveStream*> streams = |
| 3123 fake_call_->GetVideoReceiveStreams(); | 3085 fake_call_.GetVideoReceiveStreams(); |
| 3124 EXPECT_EQ(num_streams + 1, streams.size()); | 3086 EXPECT_EQ(num_streams + 1, streams.size()); |
| 3125 return streams[streams.size() - 1]; | 3087 return streams[streams.size() - 1]; |
| 3126 } | 3088 } |
| 3127 | 3089 |
| 3128 FakeCall* fake_call_; | 3090 FakeCall fake_call_; |
| 3091 WebRtcVideoEngine2 engine_; |
| 3129 rtc::scoped_ptr<VideoMediaChannel> channel_; | 3092 rtc::scoped_ptr<VideoMediaChannel> channel_; |
| 3130 uint32 last_ssrc_; | 3093 uint32 last_ssrc_; |
| 3131 }; | 3094 }; |
| 3132 | 3095 |
| 3133 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith2SimulcastStreams) { | 3096 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith2SimulcastStreams) { |
| 3134 VerifySimulcastSettings(kVp8Codec, VideoOptions::NORMAL, 2, 2, SBM_NORMAL); | 3097 VerifySimulcastSettings(kVp8Codec, VideoOptions::NORMAL, 2, 2, SBM_NORMAL); |
| 3135 } | 3098 } |
| 3136 | 3099 |
| 3137 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) { | 3100 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) { |
| 3138 VerifySimulcastSettings( | 3101 VerifySimulcastSettings( |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3244 // Ensures that the correct settings are applied to the codec when two temporal | 3207 // Ensures that the correct settings are applied to the codec when two temporal |
| 3245 // layer screencasting is enabled, and that the correct simulcast settings are | 3208 // layer screencasting is enabled, and that the correct simulcast settings are |
| 3246 // reapplied when disabling screencasting. | 3209 // reapplied when disabling screencasting. |
| 3247 TEST_F(WebRtcVideoChannel2SimulcastTest, | 3210 TEST_F(WebRtcVideoChannel2SimulcastTest, |
| 3248 DISABLED_TwoTemporalLayerScreencastSettings) { | 3211 DISABLED_TwoTemporalLayerScreencastSettings) { |
| 3249 // TODO(pbos): Implement. | 3212 // TODO(pbos): Implement. |
| 3250 FAIL() << "Not implemented."; | 3213 FAIL() << "Not implemented."; |
| 3251 } | 3214 } |
| 3252 | 3215 |
| 3253 } // namespace cricket | 3216 } // namespace cricket |
| OLD | NEW |