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

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

Issue 2521393004: Don't cache video codec list in VideoEngine2. (Closed)
Patch Set: Remove unnecessary test fixture and minor fixes. Created 4 years 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') | webrtc/pc/channelmanager.cc » ('j') | 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.cc ('k') | webrtc/pc/channelmanager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698