| Index: webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| diff --git a/webrtc/media/engine/webrtcvideoengine2_unittest.cc b/webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| index c473a4099f98d9838a0a9de28857997253f87141..ad0b193f59a8ef482dcabe65b89e42cf1755ddcb 100644
|
| --- a/webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| +++ b/webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| @@ -78,7 +78,7 @@ bool HasRtxCodec(const std::vector<cricket::VideoCodec>& codecs,
|
| return false;
|
| }
|
|
|
| -static rtc::scoped_refptr<webrtc::VideoFrameBuffer> CreateBlackFrameBuffer(
|
| +rtc::scoped_refptr<webrtc::VideoFrameBuffer> CreateBlackFrameBuffer(
|
| int width,
|
| int height) {
|
| rtc::scoped_refptr<webrtc::I420Buffer> buffer =
|
| @@ -749,6 +749,32 @@ TEST_F(WebRtcVideoEngine2Test, SimulcastDisabledForH264) {
|
| EXPECT_TRUE(channel->SetVideoSend(ssrcs[0], true, nullptr, nullptr));
|
| }
|
|
|
| +// Test that the FlexFEC field trial properly alters the output of
|
| +// WebRtcVideoEngine2::codecs(), for an existing |engine_| object.
|
| +//
|
| +// TODO(brandtr): Remove this test, when the FlexFEC field trial is gone.
|
| +TEST_F(WebRtcVideoEngine2Test,
|
| + Flexfec03SupportedAsInternalCodecBehindFieldTrial) {
|
| + auto is_flexfec = [](const VideoCodec& codec) {
|
| + if (codec.name == "flexfec-03")
|
| + return true;
|
| + return false;
|
| + };
|
| +
|
| + // FlexFEC is not active without field trial.
|
| + engine_.Init();
|
| + const std::vector<VideoCodec> codecs_before = engine_.codecs();
|
| + EXPECT_EQ(codecs_before.end(), std::find_if(codecs_before.begin(),
|
| + codecs_before.end(), is_flexfec));
|
| +
|
| + // FlexFEC is active with field trial.
|
| + webrtc::test::ScopedFieldTrials override_field_trials_(
|
| + "WebRTC-FlexFEC-03/Enabled/");
|
| + const std::vector<VideoCodec> codecs_after = engine_.codecs();
|
| + EXPECT_NE(codecs_after.end(),
|
| + std::find_if(codecs_after.begin(), codecs_after.end(), is_flexfec));
|
| +}
|
| +
|
| // Test that external codecs are added to the end of the supported codec list.
|
| TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) {
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| @@ -761,11 +787,31 @@ TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecs) {
|
| cricket::VideoCodec internal_codec = codecs.front();
|
| cricket::VideoCodec external_codec = codecs.back();
|
|
|
| - // The external codec will appear at last.
|
| + // The external codec will appear last in the vector.
|
| EXPECT_EQ("VP8", internal_codec.name);
|
| EXPECT_EQ("FakeExternalCodec", external_codec.name);
|
| }
|
|
|
| +// Test that an external codec that was added after the engine was initialized
|
| +// does show up in the codec list after it was added.
|
| +TEST_F(WebRtcVideoEngine2Test, ReportSupportedExternalCodecsWithAddedCodec) {
|
| + // Set up external encoder factory with first codec, and initialize engine.
|
| + cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| + encoder_factory.AddSupportedVideoCodecType("FakeExternalCodec1");
|
| + engine_.SetExternalEncoderFactory(&encoder_factory);
|
| + engine_.Init();
|
| +
|
| + // The first external codec will appear last in the vector.
|
| + std::vector<cricket::VideoCodec> codecs_before(engine_.codecs());
|
| + EXPECT_EQ("FakeExternalCodec1", codecs_before.back().name);
|
| +
|
| + // Add second codec.
|
| + encoder_factory.AddSupportedVideoCodecType("FakeExternalCodec2");
|
| + std::vector<cricket::VideoCodec> codecs_after(engine_.codecs());
|
| + EXPECT_EQ(codecs_before.size() + 1, codecs_after.size());
|
| + EXPECT_EQ("FakeExternalCodec2", codecs_after.back().name);
|
| +}
|
| +
|
| TEST_F(WebRtcVideoEngine2Test, RegisterExternalDecodersIfSupported) {
|
| cricket::FakeWebRtcVideoDecoderFactory decoder_factory;
|
| decoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8);
|
|
|