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

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

Issue 2882433003: Reduce VideoSendStream recreations due to FlexFEC. (Closed)
Patch Set: Rebase. Created 3 years, 7 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
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 2412 matching lines...) Expand 10 before | Expand all | Expand 10 after
2423 EXPECT_EQ(1000, config.rtp.nack.rtp_history_ms); 2423 EXPECT_EQ(1000, config.rtp.nack.rtp_history_ms);
2424 EXPECT_EQ(GetEngineCodec("ulpfec").id, config.rtp.ulpfec.ulpfec_payload_type); 2424 EXPECT_EQ(GetEngineCodec("ulpfec").id, config.rtp.ulpfec.ulpfec_payload_type);
2425 EXPECT_EQ(GetEngineCodec("red").id, config.rtp.ulpfec.red_payload_type); 2425 EXPECT_EQ(GetEngineCodec("red").id, config.rtp.ulpfec.red_payload_type);
2426 2426
2427 EXPECT_EQ(1u, config.rtp.rtx.ssrcs.size()); 2427 EXPECT_EQ(1u, config.rtp.rtx.ssrcs.size());
2428 EXPECT_EQ(kRtxSsrcs1[0], config.rtp.rtx.ssrcs[0]); 2428 EXPECT_EQ(kRtxSsrcs1[0], config.rtp.rtx.ssrcs[0]);
2429 VerifySendStreamHasRtxTypes(config, default_apt_rtx_types_); 2429 VerifySendStreamHasRtxTypes(config, default_apt_rtx_types_);
2430 // TODO(juberti): Check RTCP, PLI, TMMBR. 2430 // TODO(juberti): Check RTCP, PLI, TMMBR.
2431 } 2431 }
2432 2432
2433 // TODO(brandtr): Remove when FlexFEC _is_ exposed by default. 2433 // The following four tests ensures that FlexFEC is not activated by default
2434 TEST_F(WebRtcVideoChannel2Test, FlexfecCodecWithoutSsrcNotExposedByDefault) { 2434 // when the field trials are not enabled.
2435 // TODO(brandtr): Remove or update these tests when FlexFEC _is_ enabled by
2436 // default.
2437 TEST_F(WebRtcVideoChannel2Test,
2438 FlexfecSendCodecWithoutSsrcNotExposedByDefault) {
2435 FakeVideoSendStream* stream = AddSendStream(); 2439 FakeVideoSendStream* stream = AddSendStream();
2436 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); 2440 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
2437 2441
2438 EXPECT_EQ(-1, config.rtp.flexfec.payload_type); 2442 EXPECT_EQ(-1, config.rtp.flexfec.payload_type);
2443 EXPECT_EQ(0U, config.rtp.flexfec.ssrc);
2444 EXPECT_TRUE(config.rtp.flexfec.protected_media_ssrcs.empty());
2439 } 2445 }
2440 2446
2441 // TODO(brandtr): Remove when FlexFEC _is_ exposed by default. 2447 TEST_F(WebRtcVideoChannel2Test, FlexfecSendCodecWithSsrcNotExposedByDefault) {
2442 TEST_F(WebRtcVideoChannel2Test, FlexfecCodecWithSsrcNotExposedByDefault) {
2443 FakeVideoSendStream* stream = AddSendStream( 2448 FakeVideoSendStream* stream = AddSendStream(
2444 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); 2449 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc));
2445 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); 2450 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
2446 2451
2447 EXPECT_EQ(-1, config.rtp.flexfec.payload_type); 2452 EXPECT_EQ(-1, config.rtp.flexfec.payload_type);
2453 EXPECT_EQ(0U, config.rtp.flexfec.ssrc);
2454 EXPECT_TRUE(config.rtp.flexfec.protected_media_ssrcs.empty());
2455 }
2456
2457 TEST_F(WebRtcVideoChannel2Test,
2458 FlexfecRecvCodecWithoutSsrcNotExposedByDefault) {
2459 AddRecvStream();
2460
2461 const std::vector<FakeFlexfecReceiveStream*>& streams =
2462 fake_call_->GetFlexfecReceiveStreams();
2463 EXPECT_TRUE(streams.empty());
2464 }
2465
2466 TEST_F(WebRtcVideoChannel2Test, FlexfecRecvCodecWithSsrcNotExposedByDefault) {
2467 AddRecvStream(
2468 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc));
2469
2470 const std::vector<FakeFlexfecReceiveStream*>& streams =
2471 fake_call_->GetFlexfecReceiveStreams();
2472 EXPECT_TRUE(streams.empty());
2448 } 2473 }
2449 2474
2450 // TODO(brandtr): When FlexFEC is no longer behind a field trial, merge all 2475 // TODO(brandtr): When FlexFEC is no longer behind a field trial, merge all
2451 // tests that use this test fixture into the corresponding "non-field trial" 2476 // tests that use this test fixture into the corresponding "non-field trial"
2452 // tests. 2477 // tests.
2453 class WebRtcVideoChannel2FlexfecTest : public WebRtcVideoChannel2Test { 2478 class WebRtcVideoChannel2FlexfecRecvTest : public WebRtcVideoChannel2Test {
2454 public: 2479 public:
2455 WebRtcVideoChannel2FlexfecTest() 2480 WebRtcVideoChannel2FlexfecRecvTest()
2481 : WebRtcVideoChannel2Test("WebRTC-FlexFEC-03-Advertised/Enabled/") {}
2482 };
2483
2484 TEST_F(WebRtcVideoChannel2FlexfecRecvTest,
2485 DefaultFlexfecCodecHasTransportCcAndRembFeedbackParam) {
2486 EXPECT_TRUE(cricket::HasTransportCc(GetEngineCodec("flexfec-03")));
2487 EXPECT_TRUE(cricket::HasRemb(GetEngineCodec("flexfec-03")));
2488 }
2489
2490 TEST_F(WebRtcVideoChannel2FlexfecRecvTest, SetDefaultRecvCodecsWithoutSsrc) {
2491 AddRecvStream();
2492
2493 const std::vector<FakeFlexfecReceiveStream*>& streams =
2494 fake_call_->GetFlexfecReceiveStreams();
2495 EXPECT_TRUE(streams.empty());
2496 }
2497
2498 TEST_F(WebRtcVideoChannel2FlexfecRecvTest, SetDefaultRecvCodecsWithSsrc) {
2499 AddRecvStream(
2500 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc));
2501
2502 const std::vector<FakeFlexfecReceiveStream*>& streams =
2503 fake_call_->GetFlexfecReceiveStreams();
2504 ASSERT_EQ(1U, streams.size());
2505 const FakeFlexfecReceiveStream* stream = streams.front();
2506 const webrtc::FlexfecReceiveStream::Config& config = stream->GetConfig();
2507 EXPECT_EQ(GetEngineCodec("flexfec-03").id, config.payload_type);
2508 EXPECT_EQ(kFlexfecSsrc, config.remote_ssrc);
2509 ASSERT_EQ(1U, config.protected_media_ssrcs.size());
2510 EXPECT_EQ(kSsrcs1[0], config.protected_media_ssrcs[0]);
2511 }
2512
2513 // TODO(brandtr): When FlexFEC is no longer behind a field trial, merge all
2514 // tests that use this test fixture into the corresponding "non-field trial"
2515 // tests.
2516 class WebRtcVideoChannel2FlexfecSendRecvTest : public WebRtcVideoChannel2Test {
2517 public:
2518 WebRtcVideoChannel2FlexfecSendRecvTest()
2456 : WebRtcVideoChannel2Test( 2519 : WebRtcVideoChannel2Test(
2457 "WebRTC-FlexFEC-03-Advertised/Enabled/WebRTC-FlexFEC-03/Enabled/") { 2520 "WebRTC-FlexFEC-03-Advertised/Enabled/WebRTC-FlexFEC-03/Enabled/") {
2458 } 2521 }
2459 }; 2522 };
2460 2523
2461 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled 2524 TEST_F(WebRtcVideoChannel2FlexfecSendRecvTest,
2462 // by default. 2525 SetDefaultSendCodecsWithoutSsrc) {
2463 TEST_F(WebRtcVideoChannel2FlexfecTest,
2464 DefaultFlexfecCodecHasTransportCcAndRembFeedbackParam) {
2465 EXPECT_TRUE(cricket::HasTransportCc(GetEngineCodec("flexfec-03")));
2466 EXPECT_TRUE(cricket::HasRemb(GetEngineCodec("flexfec-03")));
2467 }
2468
2469 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled
2470 // by default.
2471 TEST_F(WebRtcVideoChannel2FlexfecTest, SetDefaultSendCodecsWithoutSsrc) {
2472 FakeVideoSendStream* stream = AddSendStream(); 2526 FakeVideoSendStream* stream = AddSendStream();
2473 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); 2527 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
2474 2528
2475 EXPECT_EQ(GetEngineCodec("flexfec-03").id, config.rtp.flexfec.payload_type); 2529 EXPECT_EQ(GetEngineCodec("flexfec-03").id, config.rtp.flexfec.payload_type);
2476 EXPECT_EQ(0U, config.rtp.flexfec.ssrc); 2530 EXPECT_EQ(0U, config.rtp.flexfec.ssrc);
2477 EXPECT_TRUE(config.rtp.flexfec.protected_media_ssrcs.empty()); 2531 EXPECT_TRUE(config.rtp.flexfec.protected_media_ssrcs.empty());
2478 } 2532 }
2479 2533
2480 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled 2534 TEST_F(WebRtcVideoChannel2FlexfecSendRecvTest, SetDefaultSendCodecsWithSsrc) {
2481 // by default.
2482 TEST_F(WebRtcVideoChannel2FlexfecTest, SetDefaultSendCodecsWithSsrc) {
2483 FakeVideoSendStream* stream = AddSendStream( 2535 FakeVideoSendStream* stream = AddSendStream(
2484 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); 2536 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc));
2485 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); 2537 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
2486 2538
2487 EXPECT_EQ(GetEngineCodec("flexfec-03").id, config.rtp.flexfec.payload_type); 2539 EXPECT_EQ(GetEngineCodec("flexfec-03").id, config.rtp.flexfec.payload_type);
2488 EXPECT_EQ(kFlexfecSsrc, config.rtp.flexfec.ssrc); 2540 EXPECT_EQ(kFlexfecSsrc, config.rtp.flexfec.ssrc);
2489 ASSERT_EQ(1U, config.rtp.flexfec.protected_media_ssrcs.size()); 2541 ASSERT_EQ(1U, config.rtp.flexfec.protected_media_ssrcs.size());
2490 EXPECT_EQ(kSsrcs1[0], config.rtp.flexfec.protected_media_ssrcs[0]); 2542 EXPECT_EQ(kSsrcs1[0], config.rtp.flexfec.protected_media_ssrcs[0]);
2491 } 2543 }
2492 2544
2493 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithoutFec) { 2545 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithoutFec) {
2494 cricket::VideoSendParameters parameters; 2546 cricket::VideoSendParameters parameters;
2495 parameters.codecs.push_back(GetEngineCodec("VP8")); 2547 parameters.codecs.push_back(GetEngineCodec("VP8"));
2496 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2548 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2497 2549
2498 FakeVideoSendStream* stream = AddSendStream(); 2550 FakeVideoSendStream* stream = AddSendStream();
2499 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); 2551 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
2500 2552
2501 EXPECT_EQ(-1, config.rtp.ulpfec.ulpfec_payload_type); 2553 EXPECT_EQ(-1, config.rtp.ulpfec.ulpfec_payload_type);
2502 EXPECT_EQ(-1, config.rtp.ulpfec.red_payload_type); 2554 EXPECT_EQ(-1, config.rtp.ulpfec.red_payload_type);
2503 } 2555 }
2504 2556
2505 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled 2557 TEST_F(WebRtcVideoChannel2FlexfecSendRecvTest, SetSendCodecsWithoutFec) {
2506 // by default.
2507 TEST_F(WebRtcVideoChannel2FlexfecTest, SetSendCodecsWithoutFec) {
2508 cricket::VideoSendParameters parameters; 2558 cricket::VideoSendParameters parameters;
2509 parameters.codecs.push_back(GetEngineCodec("VP8")); 2559 parameters.codecs.push_back(GetEngineCodec("VP8"));
2510 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2560 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2511 2561
2512 FakeVideoSendStream* stream = AddSendStream(); 2562 FakeVideoSendStream* stream = AddSendStream();
2513 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); 2563 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
2514 2564
2515 EXPECT_EQ(-1, config.rtp.flexfec.payload_type); 2565 EXPECT_EQ(-1, config.rtp.flexfec.payload_type);
2516 } 2566 }
2517 2567
2518 TEST_F(WebRtcVideoChannel2FlexfecTest, SetRecvCodecsWithFec) { 2568 TEST_F(WebRtcVideoChannel2FlexfecRecvTest, SetRecvCodecsWithFec) {
2519 AddRecvStream( 2569 AddRecvStream(
2520 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); 2570 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc));
2521 2571
2522 cricket::VideoRecvParameters recv_parameters; 2572 cricket::VideoRecvParameters recv_parameters;
2523 recv_parameters.codecs.push_back(GetEngineCodec("VP8")); 2573 recv_parameters.codecs.push_back(GetEngineCodec("VP8"));
2524 recv_parameters.codecs.push_back(GetEngineCodec("flexfec-03")); 2574 recv_parameters.codecs.push_back(GetEngineCodec("flexfec-03"));
2525 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters)); 2575 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters));
2526 2576
2527 const std::vector<FakeFlexfecReceiveStream*>& flexfec_streams = 2577 const std::vector<FakeFlexfecReceiveStream*>& flexfec_streams =
2528 fake_call_->GetFlexfecReceiveStreams(); 2578 fake_call_->GetFlexfecReceiveStreams();
(...skipping 18 matching lines...) Expand all
2547 flexfec_stream_config.rtcp_send_transport); 2597 flexfec_stream_config.rtcp_send_transport);
2548 // TODO(brandtr): Update this EXPECT when we set |transport_cc| in a 2598 // TODO(brandtr): Update this EXPECT when we set |transport_cc| in a
2549 // spec-compliant way. 2599 // spec-compliant way.
2550 EXPECT_EQ(video_stream_config.rtp.transport_cc, 2600 EXPECT_EQ(video_stream_config.rtp.transport_cc,
2551 flexfec_stream_config.transport_cc); 2601 flexfec_stream_config.transport_cc);
2552 EXPECT_EQ(video_stream_config.rtp.rtcp_mode, flexfec_stream_config.rtcp_mode); 2602 EXPECT_EQ(video_stream_config.rtp.rtcp_mode, flexfec_stream_config.rtcp_mode);
2553 EXPECT_EQ(video_stream_config.rtp.extensions, 2603 EXPECT_EQ(video_stream_config.rtp.extensions,
2554 flexfec_stream_config.rtp_header_extensions); 2604 flexfec_stream_config.rtp_header_extensions);
2555 } 2605 }
2556 2606
2607 // We should not send FlexFEC, even if we advertise it, unless the right
2608 // field trial is set.
2609 // TODO(brandtr): Remove when FlexFEC is enabled by default.
2610 TEST_F(WebRtcVideoChannel2FlexfecRecvTest,
2611 SetSendCodecsWithoutSsrcWithFecDoesNotEnableFec) {
2612 cricket::VideoSendParameters parameters;
2613 parameters.codecs.push_back(GetEngineCodec("VP8"));
2614 parameters.codecs.push_back(GetEngineCodec("flexfec-03"));
2615 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2616
2617 FakeVideoSendStream* stream = AddSendStream();
2618 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
2619
2620 EXPECT_EQ(-1, config.rtp.flexfec.payload_type);
2621 EXPECT_EQ(0, config.rtp.flexfec.ssrc);
2622 EXPECT_TRUE(config.rtp.flexfec.protected_media_ssrcs.empty());
2623 }
2624
2625 TEST_F(WebRtcVideoChannel2FlexfecRecvTest,
2626 SetSendCodecsWithSsrcWithFecDoesNotEnableFec) {
2627 cricket::VideoSendParameters parameters;
2628 parameters.codecs.push_back(GetEngineCodec("VP8"));
2629 parameters.codecs.push_back(GetEngineCodec("flexfec-03"));
2630 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2631
2632 FakeVideoSendStream* stream = AddSendStream(
2633 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc));
2634 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
2635
2636 EXPECT_EQ(-1, config.rtp.flexfec.payload_type);
2637 EXPECT_EQ(0, config.rtp.flexfec.ssrc);
2638 EXPECT_TRUE(config.rtp.flexfec.protected_media_ssrcs.empty());
2639 }
2640
2557 TEST_F(WebRtcVideoChannel2Test, 2641 TEST_F(WebRtcVideoChannel2Test,
2558 SetSendCodecRejectsRtxWithoutAssociatedPayloadType) { 2642 SetSendCodecRejectsRtxWithoutAssociatedPayloadType) {
2559 const int kUnusedPayloadType = 127; 2643 const int kUnusedPayloadType = 127;
2560 EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType)); 2644 EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType));
2561 2645
2562 cricket::VideoSendParameters parameters; 2646 cricket::VideoSendParameters parameters;
2563 cricket::VideoCodec rtx_codec(kUnusedPayloadType, "rtx"); 2647 cricket::VideoCodec rtx_codec(kUnusedPayloadType, "rtx");
2564 parameters.codecs.push_back(rtx_codec); 2648 parameters.codecs.push_back(rtx_codec);
2565 EXPECT_FALSE(channel_->SetSendParameters(parameters)) 2649 EXPECT_FALSE(channel_->SetSendParameters(parameters))
2566 << "RTX codec without associated payload type should be rejected."; 2650 << "RTX codec without associated payload type should be rejected.";
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
2641 2725
2642 parameters.codecs.pop_back(); 2726 parameters.codecs.pop_back();
2643 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2727 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2644 stream = fake_call_->GetVideoSendStreams()[0]; 2728 stream = fake_call_->GetVideoSendStreams()[0];
2645 ASSERT_TRUE(stream != nullptr); 2729 ASSERT_TRUE(stream != nullptr);
2646 config = stream->GetConfig().Copy(); 2730 config = stream->GetConfig().Copy();
2647 EXPECT_EQ(-1, config.rtp.ulpfec.ulpfec_payload_type) 2731 EXPECT_EQ(-1, config.rtp.ulpfec.ulpfec_payload_type)
2648 << "SetSendCodec without ULPFEC should disable current ULPFEC."; 2732 << "SetSendCodec without ULPFEC should disable current ULPFEC.";
2649 } 2733 }
2650 2734
2651 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled 2735 TEST_F(WebRtcVideoChannel2FlexfecSendRecvTest,
2652 // by default. 2736 SetSendCodecsWithoutFecDisablesFec) {
2653 TEST_F(WebRtcVideoChannel2FlexfecTest, SetSendCodecsWithoutFecDisablesFec) {
2654 cricket::VideoSendParameters parameters; 2737 cricket::VideoSendParameters parameters;
2655 parameters.codecs.push_back(GetEngineCodec("VP8")); 2738 parameters.codecs.push_back(GetEngineCodec("VP8"));
2656 parameters.codecs.push_back(GetEngineCodec("flexfec-03")); 2739 parameters.codecs.push_back(GetEngineCodec("flexfec-03"));
2657 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2740 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2658 2741
2659 FakeVideoSendStream* stream = AddSendStream( 2742 FakeVideoSendStream* stream = AddSendStream(
2660 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); 2743 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc));
2661 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); 2744 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
2662 2745
2663 EXPECT_EQ(GetEngineCodec("flexfec-03").id, config.rtp.flexfec.payload_type); 2746 EXPECT_EQ(GetEngineCodec("flexfec-03").id, config.rtp.flexfec.payload_type);
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
3047 3130
3048 cricket::VideoRecvParameters recv_parameters; 3131 cricket::VideoRecvParameters recv_parameters;
3049 recv_parameters.codecs.push_back(GetEngineCodec("VP8")); 3132 recv_parameters.codecs.push_back(GetEngineCodec("VP8"));
3050 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters)); 3133 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters));
3051 stream = fake_call_->GetVideoReceiveStreams()[0]; 3134 stream = fake_call_->GetVideoReceiveStreams()[0];
3052 ASSERT_TRUE(stream != nullptr); 3135 ASSERT_TRUE(stream != nullptr);
3053 EXPECT_EQ(-1, stream->GetConfig().rtp.ulpfec.ulpfec_payload_type) 3136 EXPECT_EQ(-1, stream->GetConfig().rtp.ulpfec.ulpfec_payload_type)
3054 << "SetSendCodec without ULPFEC should disable current ULPFEC."; 3137 << "SetSendCodec without ULPFEC should disable current ULPFEC.";
3055 } 3138 }
3056 3139
3057 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled 3140 TEST_F(WebRtcVideoChannel2FlexfecRecvTest, SetRecvParamsWithoutFecDisablesFec) {
3058 // by default.
3059 TEST_F(WebRtcVideoChannel2FlexfecTest, SetRecvParamsWithoutFecDisablesFec) {
3060 cricket::VideoSendParameters send_parameters;
3061 send_parameters.codecs.push_back(GetEngineCodec("VP8"));
3062 send_parameters.codecs.push_back(GetEngineCodec("flexfec-03"));
3063 ASSERT_TRUE(channel_->SetSendParameters(send_parameters));
3064
3065 AddRecvStream( 3141 AddRecvStream(
3066 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); 3142 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc));
3067 const std::vector<FakeFlexfecReceiveStream*>& streams = 3143 const std::vector<FakeFlexfecReceiveStream*>& streams =
3068 fake_call_->GetFlexfecReceiveStreams(); 3144 fake_call_->GetFlexfecReceiveStreams();
3069 3145
3070 ASSERT_EQ(1U, streams.size()); 3146 ASSERT_EQ(1U, streams.size());
3071 const FakeFlexfecReceiveStream* stream = streams.front(); 3147 const FakeFlexfecReceiveStream* stream = streams.front();
3072 EXPECT_EQ(GetEngineCodec("flexfec-03").id, stream->GetConfig().payload_type); 3148 EXPECT_EQ(GetEngineCodec("flexfec-03").id, stream->GetConfig().payload_type);
3073 EXPECT_EQ(kFlexfecSsrc, stream->GetConfig().remote_ssrc); 3149 EXPECT_EQ(kFlexfecSsrc, stream->GetConfig().remote_ssrc);
3074 ASSERT_EQ(1U, stream->GetConfig().protected_media_ssrcs.size()); 3150 ASSERT_EQ(1U, stream->GetConfig().protected_media_ssrcs.size());
(...skipping 26 matching lines...) Expand all
3101 send_parameters.codecs.push_back(GetEngineCodec("VP8")); 3177 send_parameters.codecs.push_back(GetEngineCodec("VP8"));
3102 send_parameters.codecs.push_back(GetEngineCodec("red")); 3178 send_parameters.codecs.push_back(GetEngineCodec("red"));
3103 send_parameters.codecs.push_back(GetEngineCodec("ulpfec")); 3179 send_parameters.codecs.push_back(GetEngineCodec("ulpfec"));
3104 ASSERT_TRUE(channel_->SetSendParameters(send_parameters)); 3180 ASSERT_TRUE(channel_->SetSendParameters(send_parameters));
3105 stream = fake_call_->GetVideoReceiveStreams()[0]; 3181 stream = fake_call_->GetVideoReceiveStreams()[0];
3106 EXPECT_EQ(GetEngineCodec("ulpfec").id, 3182 EXPECT_EQ(GetEngineCodec("ulpfec").id,
3107 stream->GetConfig().rtp.ulpfec.ulpfec_payload_type) 3183 stream->GetConfig().rtp.ulpfec.ulpfec_payload_type)
3108 << "ULPFEC should be enabled on the receive stream."; 3184 << "ULPFEC should be enabled on the receive stream.";
3109 } 3185 }
3110 3186
3111 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled 3187 TEST_F(WebRtcVideoChannel2FlexfecSendRecvTest,
3112 // by default. 3188 SetSendRecvParamsWithFecEnablesFec) {
3113 TEST_F(WebRtcVideoChannel2FlexfecTest, SetSendParamsWithFecEnablesFec) {
3114 AddRecvStream( 3189 AddRecvStream(
3115 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc)); 3190 CreatePrimaryWithFecFrStreamParams("cname", kSsrcs1[0], kFlexfecSsrc));
3116 const std::vector<FakeFlexfecReceiveStream*>& streams = 3191 const std::vector<FakeFlexfecReceiveStream*>& streams =
3117 fake_call_->GetFlexfecReceiveStreams(); 3192 fake_call_->GetFlexfecReceiveStreams();
3118 3193
3119 cricket::VideoRecvParameters recv_parameters; 3194 cricket::VideoRecvParameters recv_parameters;
3120 recv_parameters.codecs.push_back(GetEngineCodec("VP8")); 3195 recv_parameters.codecs.push_back(GetEngineCodec("VP8"));
3121 recv_parameters.codecs.push_back(GetEngineCodec("flexfec-03")); 3196 recv_parameters.codecs.push_back(GetEngineCodec("flexfec-03"));
3122 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters)); 3197 ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters));
3123 ASSERT_EQ(1U, streams.size()); 3198 ASSERT_EQ(1U, streams.size());
(...skipping 14 matching lines...) Expand all
3138 const FakeFlexfecReceiveStream* stream_with_send_params = streams.front(); 3213 const FakeFlexfecReceiveStream* stream_with_send_params = streams.front();
3139 EXPECT_EQ(GetEngineCodec("flexfec-03").id, 3214 EXPECT_EQ(GetEngineCodec("flexfec-03").id,
3140 stream_with_send_params->GetConfig().payload_type); 3215 stream_with_send_params->GetConfig().payload_type);
3141 EXPECT_EQ(kFlexfecSsrc, stream_with_send_params->GetConfig().remote_ssrc); 3216 EXPECT_EQ(kFlexfecSsrc, stream_with_send_params->GetConfig().remote_ssrc);
3142 EXPECT_EQ(1U, 3217 EXPECT_EQ(1U,
3143 stream_with_send_params->GetConfig().protected_media_ssrcs.size()); 3218 stream_with_send_params->GetConfig().protected_media_ssrcs.size());
3144 EXPECT_EQ(kSsrcs1[0], 3219 EXPECT_EQ(kSsrcs1[0],
3145 stream_with_send_params->GetConfig().protected_media_ssrcs[0]); 3220 stream_with_send_params->GetConfig().protected_media_ssrcs[0]);
3146 } 3221 }
3147 3222
3148 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectDuplicateFecPayloads) { 3223 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsRejectDuplicateFecPayloads) {
3149 cricket::VideoRecvParameters parameters; 3224 cricket::VideoRecvParameters parameters;
3150 parameters.codecs.push_back(GetEngineCodec("VP8")); 3225 parameters.codecs.push_back(GetEngineCodec("VP8"));
3151 parameters.codecs.push_back(GetEngineCodec("red")); 3226 parameters.codecs.push_back(GetEngineCodec("red"));
3152 parameters.codecs[1].id = parameters.codecs[0].id; 3227 parameters.codecs[1].id = parameters.codecs[0].id;
3153 EXPECT_FALSE(channel_->SetRecvParameters(parameters)); 3228 EXPECT_FALSE(channel_->SetRecvParameters(parameters));
3154 } 3229 }
3155 3230
3156 // TODO(brandtr): Merge into "non-field trial" test when FlexFEC is enabled 3231 TEST_F(WebRtcVideoChannel2FlexfecRecvTest,
3157 // by default. 3232 SetRecvCodecsRejectDuplicateFecPayloads) {
3158 TEST_F(WebRtcVideoChannel2FlexfecTest,
3159 SetSendCodecsRejectDuplicateFecPayloads) {
3160 cricket::VideoRecvParameters parameters; 3233 cricket::VideoRecvParameters parameters;
3161 parameters.codecs.push_back(GetEngineCodec("VP8")); 3234 parameters.codecs.push_back(GetEngineCodec("VP8"));
3162 parameters.codecs.push_back(GetEngineCodec("flexfec-03")); 3235 parameters.codecs.push_back(GetEngineCodec("flexfec-03"));
3163 parameters.codecs[1].id = parameters.codecs[0].id; 3236 parameters.codecs[1].id = parameters.codecs[0].id;
3164 EXPECT_FALSE(channel_->SetRecvParameters(parameters)); 3237 EXPECT_FALSE(channel_->SetRecvParameters(parameters));
3165 } 3238 }
3166 3239
3167 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsRejectDuplicateCodecPayloads) { 3240 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsRejectDuplicateCodecPayloads) {
3168 cricket::VideoRecvParameters parameters; 3241 cricket::VideoRecvParameters parameters;
3169 parameters.codecs.push_back(GetEngineCodec("VP8")); 3242 parameters.codecs.push_back(GetEngineCodec("VP8"));
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
3802 const int rtx_vp8_payload_type = default_apt_rtx_types_[vp8.id]; 3875 const int rtx_vp8_payload_type = default_apt_rtx_types_[vp8.id];
3803 TestReceiveUnsignaledSsrcPacket(rtx_vp8_payload_type, 3876 TestReceiveUnsignaledSsrcPacket(rtx_vp8_payload_type,
3804 false /* expect_created_receive_stream */); 3877 false /* expect_created_receive_stream */);
3805 } 3878 }
3806 3879
3807 TEST_F(WebRtcVideoChannel2Test, UlpfecPacketDoesntCreateUnsignalledStream) { 3880 TEST_F(WebRtcVideoChannel2Test, UlpfecPacketDoesntCreateUnsignalledStream) {
3808 TestReceiveUnsignaledSsrcPacket(GetEngineCodec("ulpfec").id, 3881 TestReceiveUnsignaledSsrcPacket(GetEngineCodec("ulpfec").id,
3809 false /* expect_created_receive_stream */); 3882 false /* expect_created_receive_stream */);
3810 } 3883 }
3811 3884
3812 // TODO(brandtr): Change to "non-field trial" test when FlexFEC is enabled 3885 TEST_F(WebRtcVideoChannel2FlexfecRecvTest,
3813 // by default.
3814 TEST_F(WebRtcVideoChannel2FlexfecTest,
3815 FlexfecPacketDoesntCreateUnsignalledStream) { 3886 FlexfecPacketDoesntCreateUnsignalledStream) {
3816 TestReceiveUnsignaledSsrcPacket(GetEngineCodec("flexfec-03").id, 3887 TestReceiveUnsignaledSsrcPacket(GetEngineCodec("flexfec-03").id,
3817 false /* expect_created_receive_stream */); 3888 false /* expect_created_receive_stream */);
3818 } 3889 }
3819 3890
3820 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { 3891 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) {
3821 TestReceiveUnsignaledSsrcPacket(kRedRtxPayloadType, 3892 TestReceiveUnsignaledSsrcPacket(kRedRtxPayloadType,
3822 false /* expect_created_receive_stream */); 3893 false /* expect_created_receive_stream */);
3823 } 3894 }
3824 3895
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
4457 4528
4458 TEST_F(WebRtcVideoChannel2SimulcastTest, 4529 TEST_F(WebRtcVideoChannel2SimulcastTest,
4459 NoSimulcastScreenshareWithoutConference) { 4530 NoSimulcastScreenshareWithoutConference) {
4460 webrtc::test::ScopedFieldTrials override_field_trials_( 4531 webrtc::test::ScopedFieldTrials override_field_trials_(
4461 "WebRTC-SimulcastScreenshare/Enabled/"); 4532 "WebRTC-SimulcastScreenshare/Enabled/");
4462 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 1, true, 4533 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 1, true,
4463 false); 4534 false);
4464 } 4535 }
4465 4536
4466 } // namespace cricket 4537 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698