| OLD | NEW |
| 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 if (cricket::CodecNamesEq(codec.name.c_str(), "rtx") && | 71 if (cricket::CodecNamesEq(codec.name.c_str(), "rtx") && |
| 72 codec.GetParam(cricket::kCodecParamAssociatedPayloadType, | 72 codec.GetParam(cricket::kCodecParamAssociatedPayloadType, |
| 73 &associated_payload_type) && | 73 &associated_payload_type) && |
| 74 associated_payload_type == payload_type) { | 74 associated_payload_type == payload_type) { |
| 75 return true; | 75 return true; |
| 76 } | 76 } |
| 77 } | 77 } |
| 78 return false; | 78 return false; |
| 79 } | 79 } |
| 80 | 80 |
| 81 static rtc::scoped_refptr<webrtc::VideoFrameBuffer> CreateBlackFrameBuffer( | 81 rtc::scoped_refptr<webrtc::VideoFrameBuffer> CreateBlackFrameBuffer( |
| 82 int width, | 82 int width, |
| 83 int height) { | 83 int height) { |
| 84 rtc::scoped_refptr<webrtc::I420Buffer> buffer = | 84 rtc::scoped_refptr<webrtc::I420Buffer> buffer = |
| 85 webrtc::I420Buffer::Create(width, height); | 85 webrtc::I420Buffer::Create(width, height); |
| 86 buffer->SetToBlack(); | 86 buffer->SetToBlack(); |
| 87 return buffer; | 87 return buffer; |
| 88 } | 88 } |
| 89 | 89 |
| 90 void VerifySendStreamHasRtxTypes(const webrtc::VideoSendStream::Config& config, | 90 void VerifySendStreamHasRtxTypes(const webrtc::VideoSendStream::Config& config, |
| 91 const std::map<int, int>& rtx_types) { | 91 const std::map<int, int>& rtx_types) { |
| (...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 742 EXPECT_TRUE(capturer.CaptureFrame()); | 742 EXPECT_TRUE(capturer.CaptureFrame()); |
| 743 | 743 |
| 744 ASSERT_EQ(1u, encoder_factory.encoders().size()); | 744 ASSERT_EQ(1u, encoder_factory.encoders().size()); |
| 745 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; | 745 FakeWebRtcVideoEncoder* encoder = encoder_factory.encoders()[0]; |
| 746 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode()); | 746 ASSERT_TRUE(encoder_factory.encoders()[0]->WaitForInitEncode()); |
| 747 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType); | 747 EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType); |
| 748 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams); | 748 EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams); |
| 749 EXPECT_TRUE(channel->SetVideoSend(ssrcs[0], true, nullptr, nullptr)); | 749 EXPECT_TRUE(channel->SetVideoSend(ssrcs[0], true, nullptr, nullptr)); |
| 750 } | 750 } |
| 751 | 751 |
| 752 // Test that the FlexFEC field trial properly alters the output of |
| 753 // WebRtcVideoEngine2::codecs(), for an existing |engine_| object. |
| 754 // |
| 755 // TODO(brandtr): Remove this test, when the FlexFEC field trial is gone. |
| 756 TEST_F(WebRtcVideoEngine2Test, |
| 757 Flexfec03SupportedAsInternalCodecBehindFieldTrial) { |
| 758 auto is_flexfec = [](const VideoCodec& codec) { |
| 759 if (codec.name == "flexfec-03") |
| 760 return true; |
| 761 return false; |
| 762 }; |
| 763 |
| 764 // FlexFEC is not active without field trial. |
| 765 engine_.Init(); |
| 766 const std::vector<VideoCodec> codecs_before = engine_.codecs(); |
| 767 EXPECT_EQ(codecs_before.end(), std::find_if(codecs_before.begin(), |
| 768 codecs_before.end(), is_flexfec)); |
| 769 |
| 770 // FlexFEC is active with field trial. |
| 771 webrtc::test::ScopedFieldTrials override_field_trials_( |
| 772 "WebRTC-FlexFEC-03/Enabled/"); |
| 773 const std::vector<VideoCodec> codecs_after = engine_.codecs(); |
| 774 EXPECT_NE(codecs_after.end(), |
| 775 std::find_if(codecs_after.begin(), codecs_after.end(), is_flexfec)); |
| 776 } |
| 777 |
| 752 // Test that external codecs are added to the end of the supported codec list. | 778 // Test that external codecs are added to the end of the supported codec list. |
| 753 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) { | 779 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) { |
| 754 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; | 780 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
| 755 encoder_factory.AddSupportedVideoCodecType("FakeExternalCodec"); | 781 encoder_factory.AddSupportedVideoCodecType("FakeExternalCodec"); |
| 756 engine_.SetExternalEncoderFactory(&encoder_factory); | 782 engine_.SetExternalEncoderFactory(&encoder_factory); |
| 757 engine_.Init(); | 783 engine_.Init(); |
| 758 | 784 |
| 759 std::vector<cricket::VideoCodec> codecs(engine_.codecs()); | 785 std::vector<cricket::VideoCodec> codecs(engine_.codecs()); |
| 760 ASSERT_GE(codecs.size(), 2u); | 786 ASSERT_GE(codecs.size(), 2u); |
| 761 cricket::VideoCodec internal_codec = codecs.front(); | 787 cricket::VideoCodec internal_codec = codecs.front(); |
| 762 cricket::VideoCodec external_codec = codecs.back(); | 788 cricket::VideoCodec external_codec = codecs.back(); |
| 763 | 789 |
| 764 // The external codec will appear at last. | 790 // The external codec will appear last in the vector. |
| 765 EXPECT_EQ("VP8", internal_codec.name); | 791 EXPECT_EQ("VP8", internal_codec.name); |
| 766 EXPECT_EQ("FakeExternalCodec", external_codec.name); | 792 EXPECT_EQ("FakeExternalCodec", external_codec.name); |
| 767 } | 793 } |
| 768 | 794 |
| 795 // Test that an external codec that was added after the engine was initialized |
| 796 // does show up in the codec list after it was added. |
| 797 TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecsWithAddedCodec) { |
| 798 // Set up external encoder factory with first codec, and initialize engine. |
| 799 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; |
| 800 encoder_factory.AddSupportedVideoCodecType("FakeExternalCodec1"); |
| 801 engine_.SetExternalEncoderFactory(&encoder_factory); |
| 802 engine_.Init(); |
| 803 |
| 804 // The first external codec will appear last in the vector. |
| 805 std::vector<cricket::VideoCodec> codecs_before(engine_.codecs()); |
| 806 EXPECT_EQ("FakeExternalCodec1", codecs_before.back().name); |
| 807 |
| 808 // Add second codec. |
| 809 encoder_factory.AddSupportedVideoCodecType("FakeExternalCodec2"); |
| 810 std::vector<cricket::VideoCodec> codecs_after(engine_.codecs()); |
| 811 EXPECT_EQ(codecs_before.size() + 1, codecs_after.size()); |
| 812 EXPECT_EQ("FakeExternalCodec2", codecs_after.back().name); |
| 813 } |
| 814 |
| 769 TEST_F(WebRtcVideoEngine2Test, RegisterExternalDecodersIfSupported) { | 815 TEST_F(WebRtcVideoEngine2Test, RegisterExternalDecodersIfSupported) { |
| 770 cricket::FakeWebRtcVideoDecoderFactory decoder_factory; | 816 cricket::FakeWebRtcVideoDecoderFactory decoder_factory; |
| 771 decoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8); | 817 decoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8); |
| 772 cricket::VideoRecvParameters parameters; | 818 cricket::VideoRecvParameters parameters; |
| 773 parameters.codecs.push_back(GetEngineCodec("VP8")); | 819 parameters.codecs.push_back(GetEngineCodec("VP8")); |
| 774 | 820 |
| 775 std::unique_ptr<VideoMediaChannel> channel( | 821 std::unique_ptr<VideoMediaChannel> channel( |
| 776 SetUpForExternalDecoderFactory(&decoder_factory, parameters.codecs)); | 822 SetUpForExternalDecoderFactory(&decoder_factory, parameters.codecs)); |
| 777 | 823 |
| 778 EXPECT_TRUE( | 824 EXPECT_TRUE( |
| (...skipping 3210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3989 | 4035 |
| 3990 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) { | 4036 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) { |
| 3991 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 3); | 4037 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 3); |
| 3992 } | 4038 } |
| 3993 | 4039 |
| 3994 // Test that we normalize send codec format size in simulcast. | 4040 // Test that we normalize send codec format size in simulcast. |
| 3995 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { | 4041 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { |
| 3996 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 541, 271, 2, 2); | 4042 VerifySimulcastSettings(cricket::VideoCodec("VP8"), 541, 271, 2, 2); |
| 3997 } | 4043 } |
| 3998 } // namespace cricket | 4044 } // namespace cricket |
| OLD | NEW |