| Index: webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| diff --git a/webrtc/media/engine/webrtcvideoengine2_unittest.cc b/webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| index 7fab75df2943c8fbe95af1d75318dc84b1e7f930..afb38801542483d81aebba0ebe45bf743b19b0fd 100644
|
| --- a/webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| +++ b/webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| @@ -32,13 +32,6 @@ using webrtc::RtpExtension;
|
| namespace {
|
| static const int kDefaultQpMax = 56;
|
|
|
| -static const cricket::VideoCodec kVp8Codec(100, "VP8");
|
| -static const cricket::VideoCodec kVp9Codec(101, "VP9");
|
| -static const cricket::VideoCodec kH264Codec(102, "H264");
|
| -
|
| -static const cricket::VideoCodec kRedCodec(116, "red");
|
| -static const cricket::VideoCodec kUlpfecCodec(117, "ulpfec");
|
| -
|
| static const uint8_t kRedRtxPayloadType = 125;
|
|
|
| static const uint32_t kSsrcs1[] = {1};
|
| @@ -48,6 +41,11 @@ static const uint32_t kIncomingUnsignalledSsrc = 0xC0FFEE;
|
| static const char kUnsupportedExtensionName[] =
|
| "urn:ietf:params:rtp-hdrext:unsupported";
|
|
|
| +cricket::VideoCodec RemoveFeedbackParams(cricket::VideoCodec&& codec) {
|
| + codec.feedback_params = cricket::FeedbackParams();
|
| + return codec;
|
| +}
|
| +
|
| void VerifyCodecHasDefaultFeedbackParams(const cricket::VideoCodec& codec) {
|
| EXPECT_TRUE(codec.HasFeedbackParam(cricket::FeedbackParam(
|
| cricket::kRtcpFbParamNack, cricket::kParamValueEmpty)));
|
| @@ -96,19 +94,15 @@ class WebRtcVideoEngine2Test : public ::testing::Test {
|
| std::vector<VideoCodec> engine_codecs = engine_.codecs();
|
| RTC_DCHECK(!engine_codecs.empty());
|
| bool codec_set = false;
|
| - for (size_t i = 0; i < engine_codecs.size(); ++i) {
|
| - if (engine_codecs[i].name == "red") {
|
| - default_red_codec_ = engine_codecs[i];
|
| - } else if (engine_codecs[i].name == "ulpfec") {
|
| - default_ulpfec_codec_ = engine_codecs[i];
|
| - } else if (engine_codecs[i].name == "rtx") {
|
| + for (const cricket::VideoCodec& codec : engine_codecs) {
|
| + if (codec.name == "rtx") {
|
| int associated_payload_type;
|
| - if (engine_codecs[i].GetParam(kCodecParamAssociatedPayloadType,
|
| - &associated_payload_type)) {
|
| - default_apt_rtx_types_[associated_payload_type] = engine_codecs[i].id;
|
| + if (codec.GetParam(kCodecParamAssociatedPayloadType,
|
| + &associated_payload_type)) {
|
| + default_apt_rtx_types_[associated_payload_type] = codec.id;
|
| }
|
| - } else if (!codec_set) {
|
| - default_codec_ = engine_codecs[i];
|
| + } else if (!codec_set && codec.name != "red" && codec.name != "ulpfec") {
|
| + default_codec_ = codec;
|
| codec_set = true;
|
| }
|
| }
|
| @@ -117,9 +111,12 @@ class WebRtcVideoEngine2Test : public ::testing::Test {
|
| }
|
|
|
| protected:
|
| + // Find the codec in the engine with the given name. The codec must be
|
| + // present.
|
| + cricket::VideoCodec GetEngineCodec(const std::string& name);
|
| +
|
| VideoMediaChannel* SetUpForExternalEncoderFactory(
|
| - cricket::WebRtcVideoEncoderFactory* encoder_factory,
|
| - const std::vector<VideoCodec>& codecs);
|
| + cricket::WebRtcVideoEncoderFactory* encoder_factory);
|
|
|
| VideoMediaChannel* SetUpForExternalDecoderFactory(
|
| cricket::WebRtcVideoDecoderFactory* decoder_factory,
|
| @@ -134,8 +131,6 @@ class WebRtcVideoEngine2Test : public ::testing::Test {
|
| std::unique_ptr<webrtc::Call> call_;
|
| WebRtcVideoEngine2 engine_;
|
| VideoCodec default_codec_;
|
| - VideoCodec default_red_codec_;
|
| - VideoCodec default_ulpfec_codec_;
|
| std::map<int, int> default_apt_rtx_types_;
|
| };
|
|
|
| @@ -223,15 +218,15 @@ TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionBeforeCapturer) {
|
|
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("VP8");
|
| - cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
|
| + SetUpForExternalEncoderFactory(&encoder_factory));
|
| EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
|
|
|
| // Add CVO extension.
|
| const int id = 1;
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| parameters.extensions.push_back(
|
| RtpExtension(RtpExtension::kVideoRotationUri, id));
|
| EXPECT_TRUE(channel->SetSendParameters(parameters));
|
| @@ -255,13 +250,13 @@ TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionBeforeAddSendStream) {
|
|
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("VP8");
|
| - cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
|
| + SetUpForExternalEncoderFactory(&encoder_factory));
|
| // Add CVO extension.
|
| const int id = 1;
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| parameters.extensions.push_back(
|
| RtpExtension(RtpExtension::kVideoRotationUri, id));
|
| EXPECT_TRUE(channel->SetSendParameters(parameters));
|
| @@ -280,12 +275,9 @@ TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionAfterCapturer) {
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("VP8");
|
| encoder_factory.AddSupportedVideoCodecType("VP9");
|
| - cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kVp9Codec);
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
|
| + SetUpForExternalEncoderFactory(&encoder_factory));
|
| EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
|
|
|
| // Set capturer.
|
| @@ -296,6 +288,9 @@ TEST_F(WebRtcVideoEngine2Test, CVOSetHeaderExtensionAfterCapturer) {
|
|
|
| // Add CVO extension.
|
| const int id = 1;
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("VP9"));
|
| parameters.extensions.push_back(
|
| RtpExtension(RtpExtension::kVideoRotationUri, id));
|
| // Also remove the first codec to trigger a codec change as well.
|
| @@ -336,11 +331,9 @@ TEST_F(WebRtcVideoEngine2Test, GetStatsWithoutSendCodecsSetDoesNotCrash) {
|
| TEST_F(WebRtcVideoEngine2Test, UseExternalFactoryForVp8WhenSupported) {
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("VP8");
|
| - cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
|
| + SetUpForExternalEncoderFactory(&encoder_factory));
|
|
|
| EXPECT_TRUE(
|
| channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
| @@ -361,6 +354,8 @@ TEST_F(WebRtcVideoEngine2Test, UseExternalFactoryForVp8WhenSupported) {
|
|
|
| // Setting codecs of the same type should not reallocate any encoders
|
| // (expecting a no-op).
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| EXPECT_TRUE(channel->SetSendParameters(parameters));
|
| EXPECT_EQ(num_created_encoders, encoder_factory.GetNumCreatedEncoders());
|
|
|
| @@ -401,14 +396,11 @@ void WebRtcVideoEngine2Test::TestExtendedEncoderOveruse(
|
| bool use_external_encoder) {
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("VP8");
|
| - cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| std::unique_ptr<VideoMediaChannel> channel;
|
| FakeCall* fake_call = new FakeCall(webrtc::Call::Config(&event_log_));
|
| call_.reset(fake_call);
|
| if (use_external_encoder) {
|
| - channel.reset(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, parameters.codecs));
|
| + channel.reset(SetUpForExternalEncoderFactory(&encoder_factory));
|
| } else {
|
| engine_.Init();
|
| channel.reset(
|
| @@ -416,6 +408,8 @@ void WebRtcVideoEngine2Test::TestExtendedEncoderOveruse(
|
| }
|
| ASSERT_TRUE(
|
| channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| EXPECT_TRUE(channel->SetSendParameters(parameters));
|
| EXPECT_TRUE(channel->SetSend(true));
|
| FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
|
| @@ -438,11 +432,9 @@ TEST_F(WebRtcVideoEngine2Test, DisablesFullEncoderTimeForNonExternalEncoders) {
|
| TEST_F(WebRtcVideoEngine2Test, CanConstructDecoderForVp9EncoderFactory) {
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("VP9");
|
| - std::vector<cricket::VideoCodec> codecs;
|
| - codecs.push_back(kVp9Codec);
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, codecs));
|
| + SetUpForExternalEncoderFactory(&encoder_factory));
|
|
|
| EXPECT_TRUE(
|
| channel->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
| @@ -452,12 +444,10 @@ TEST_F(WebRtcVideoEngine2Test, CanConstructDecoderForVp9EncoderFactory) {
|
| TEST_F(WebRtcVideoEngine2Test, PropagatesInputFrameTimestamp) {
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("VP8");
|
| - std::vector<cricket::VideoCodec> codecs;
|
| - codecs.push_back(kVp8Codec);
|
| FakeCall* fake_call = new FakeCall(webrtc::Call::Config(&event_log_));
|
| call_.reset(fake_call);
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, codecs));
|
| + SetUpForExternalEncoderFactory(&encoder_factory));
|
|
|
| EXPECT_TRUE(
|
| channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
| @@ -507,16 +497,29 @@ TEST_F(WebRtcVideoEngine2Test, PropagatesInputFrameTimestamp) {
|
| EXPECT_TRUE(channel->RemoveSendStream(kSsrc));
|
| }
|
|
|
| +cricket::VideoCodec WebRtcVideoEngine2Test::GetEngineCodec(
|
| + const std::string& name) {
|
| + for (const cricket::VideoCodec& engine_codec : engine_.codecs()) {
|
| + if (CodecNamesEq(name, engine_codec.name))
|
| + return engine_codec;
|
| + }
|
| + // This point should never be reached.
|
| + ADD_FAILURE() << "Unrecognized codec name: " << name;
|
| + return cricket::VideoCodec();
|
| +}
|
| +
|
| VideoMediaChannel* WebRtcVideoEngine2Test::SetUpForExternalEncoderFactory(
|
| - cricket::WebRtcVideoEncoderFactory* encoder_factory,
|
| - const std::vector<VideoCodec>& codecs) {
|
| + cricket::WebRtcVideoEncoderFactory* encoder_factory) {
|
| engine_.SetExternalEncoderFactory(encoder_factory);
|
| engine_.Init();
|
|
|
| VideoMediaChannel* channel =
|
| engine_.CreateChannel(call_.get(), MediaConfig(), VideoOptions());
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs = codecs;
|
| + // We need to look up the codec in the engine to get the correct payload type.
|
| + for (const VideoCodec& codec : encoder_factory->supported_codecs())
|
| + parameters.codecs.push_back(GetEngineCodec(codec.name));
|
| +
|
| EXPECT_TRUE(channel->SetSendParameters(parameters));
|
|
|
| return channel;
|
| @@ -540,11 +543,9 @@ VideoMediaChannel* WebRtcVideoEngine2Test::SetUpForExternalDecoderFactory(
|
| TEST_F(WebRtcVideoEngine2Test, UsesSimulcastAdapterForVp8Factories) {
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("VP8");
|
| - std::vector<cricket::VideoCodec> codecs;
|
| - codecs.push_back(kVp8Codec);
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, codecs));
|
| + SetUpForExternalEncoderFactory(&encoder_factory));
|
|
|
| std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
|
|
|
| @@ -581,18 +582,16 @@ TEST_F(WebRtcVideoEngine2Test, UsesSimulcastAdapterForVp8Factories) {
|
| TEST_F(WebRtcVideoEngine2Test, ChannelWithExternalH264CanChangeToInternalVp8) {
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("H264");
|
| - std::vector<cricket::VideoCodec> codecs;
|
| - codecs.push_back(kH264Codec);
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, codecs));
|
| + SetUpForExternalEncoderFactory(&encoder_factory));
|
|
|
| EXPECT_TRUE(
|
| channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
| ASSERT_EQ(1u, encoder_factory.encoders().size());
|
|
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| EXPECT_TRUE(channel->SetSendParameters(parameters));
|
| ASSERT_EQ(0u, encoder_factory.encoders().size());
|
| }
|
| @@ -601,11 +600,15 @@ TEST_F(WebRtcVideoEngine2Test,
|
| DontUseExternalEncoderFactoryForUnsupportedCodecs) {
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("H264");
|
| - std::vector<cricket::VideoCodec> codecs;
|
| - codecs.push_back(kVp8Codec);
|
| +
|
| + engine_.SetExternalEncoderFactory(&encoder_factory);
|
| + engine_.Init();
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, codecs));
|
| + engine_.CreateChannel(call_.get(), MediaConfig(), VideoOptions()));
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + EXPECT_TRUE(channel->SetSendParameters(parameters));
|
|
|
| EXPECT_TRUE(
|
| channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
| @@ -619,11 +622,14 @@ TEST_F(WebRtcVideoEngine2Test,
|
| encoder_factory.AddSupportedVideoCodecType("VP8");
|
| encoder_factory.AddSupportedVideoCodecType("H264");
|
|
|
| - std::vector<cricket::VideoCodec> codecs;
|
| - codecs.push_back(kVp8Codec);
|
| + engine_.SetExternalEncoderFactory(&encoder_factory);
|
| + engine_.Init();
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, codecs));
|
| + engine_.CreateChannel(call_.get(), MediaConfig(), VideoOptions()));
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + EXPECT_TRUE(channel->SetSendParameters(parameters));
|
|
|
| std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
|
|
|
| @@ -656,11 +662,14 @@ TEST_F(WebRtcVideoEngine2Test,
|
| encoder_factory.AddSupportedVideoCodecType("VP8");
|
| encoder_factory.AddSupportedVideoCodecType("H264");
|
|
|
| - std::vector<cricket::VideoCodec> codecs;
|
| - codecs.push_back(kH264Codec);
|
| + engine_.SetExternalEncoderFactory(&encoder_factory);
|
| + engine_.Init();
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, codecs));
|
| + engine_.CreateChannel(call_.get(), MediaConfig(), VideoOptions()));
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(GetEngineCodec("H264"));
|
| + EXPECT_TRUE(channel->SetSendParameters(parameters));
|
|
|
| EXPECT_TRUE(
|
| channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
| @@ -685,11 +694,9 @@ TEST_F(WebRtcVideoEngine2Test,
|
| TEST_F(WebRtcVideoEngine2Test, SimulcastDisabledForH264) {
|
| cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
|
| encoder_factory.AddSupportedVideoCodecType("H264");
|
| - std::vector<cricket::VideoCodec> codecs;
|
| - codecs.push_back(kH264Codec);
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| - SetUpForExternalEncoderFactory(&encoder_factory, codecs));
|
| + SetUpForExternalEncoderFactory(&encoder_factory));
|
|
|
| const std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
|
| EXPECT_TRUE(
|
| @@ -732,7 +739,7 @@ TEST_F(WebRtcVideoEngine2Test, RegisterExternalDecodersIfSupported) {
|
| cricket::FakeWebRtcVideoDecoderFactory decoder_factory;
|
| decoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8);
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| SetUpForExternalDecoderFactory(&decoder_factory, parameters.codecs));
|
| @@ -762,7 +769,7 @@ TEST_F(WebRtcVideoEngine2Test, RegisterExternalH264DecoderIfSupported) {
|
| cricket::FakeWebRtcVideoDecoderFactory decoder_factory;
|
| decoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecH264);
|
| std::vector<cricket::VideoCodec> codecs;
|
| - codecs.push_back(kH264Codec);
|
| + codecs.push_back(GetEngineCodec("H264"));
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| SetUpForExternalDecoderFactory(&decoder_factory, codecs));
|
| @@ -777,7 +784,17 @@ class WebRtcVideoChannel2BaseTest
|
| protected:
|
| typedef VideoMediaChannelTest<WebRtcVideoEngine2, WebRtcVideoChannel2> Base;
|
|
|
| - cricket::VideoCodec DefaultCodec() override { return kVp8Codec; }
|
| + cricket::VideoCodec GetEngineCodec(const std::string& name) {
|
| + for (const cricket::VideoCodec& engine_codec : engine_.codecs()) {
|
| + if (CodecNamesEq(name, engine_codec.name))
|
| + return engine_codec;
|
| + }
|
| + // This point should never be reached.
|
| + ADD_FAILURE() << "Unrecognized codec name: " << name;
|
| + return cricket::VideoCodec();
|
| + }
|
| +
|
| + cricket::VideoCodec DefaultCodec() override { return GetEngineCodec("VP8"); }
|
| };
|
|
|
| // Verifies that id given in stream params is passed to the decoder factory.
|
| @@ -785,7 +802,7 @@ TEST_F(WebRtcVideoEngine2Test, StreamParamsIdPassedToDecoderFactory) {
|
| cricket::FakeWebRtcVideoDecoderFactory decoder_factory;
|
| decoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8);
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
|
|
| std::unique_ptr<VideoMediaChannel> channel(
|
| SetUpForExternalDecoderFactory(&decoder_factory, parameters.codecs));
|
| @@ -836,15 +853,15 @@ WEBRTC_BASE_TEST(RejectEmptyStreamParams);
|
| WEBRTC_BASE_TEST(MultipleSendStreams);
|
|
|
| TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) {
|
| - SendAndReceive(cricket::VideoCodec(100, "VP8"));
|
| + SendAndReceive(GetEngineCodec("VP8"));
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) {
|
| - SendAndReceive(cricket::VideoCodec(100, "VP8"));
|
| + SendAndReceive(GetEngineCodec("VP8"));
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8SvcQqvga) {
|
| - SendAndReceive(cricket::VideoCodec(100, "VP8"));
|
| + SendAndReceive(GetEngineCodec("VP8"));
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2BaseTest, TwoStreamsSendAndReceive) {
|
| @@ -853,7 +870,7 @@ TEST_F(WebRtcVideoChannel2BaseTest, TwoStreamsSendAndReceive) {
|
| // initially will use QVGA instead of VGA.
|
| // TODO(pbos): Set up the quality scaler so that both senders reliably start
|
| // at QVGA, then verify that instead.
|
| - cricket::VideoCodec codec = kVp8Codec;
|
| + cricket::VideoCodec codec = GetEngineCodec("VP8");
|
| codec.params[kCodecParamStartBitrate] = "1000000";
|
| Base::TwoStreamsSendAndReceive(codec);
|
| }
|
| @@ -913,7 +930,7 @@ class WebRtcVideoChannel2Test : public WebRtcVideoEngine2Test {
|
| int expected_max_bitrate_bps) {
|
| auto& codecs = send_parameters_.codecs;
|
| codecs.clear();
|
| - codecs.push_back(kVp8Codec);
|
| + codecs.push_back(GetEngineCodec("VP8"));
|
| codecs[0].params[kCodecParamMinBitrate] = min_bitrate_kbps;
|
| codecs[0].params[kCodecParamStartBitrate] = start_bitrate_kbps;
|
| codecs[0].params[kCodecParamMaxBitrate] = max_bitrate_kbps;
|
| @@ -1025,8 +1042,8 @@ class WebRtcVideoChannel2Test : public WebRtcVideoEngine2Test {
|
|
|
| void TestCpuAdaptation(bool enable_overuse, bool is_screenshare);
|
| void TestReceiverLocalSsrcConfiguration(bool receiver_first);
|
| - void TestReceiveUnsignalledSsrcPacket(uint8_t payload_type,
|
| - bool expect_created_receive_stream);
|
| + void TestReceiveUnsignaledSsrcPacket(uint8_t payload_type,
|
| + bool expect_created_receive_stream);
|
|
|
| FakeVideoSendStream* SetDenoisingOption(
|
| uint32_t ssrc,
|
| @@ -1400,7 +1417,7 @@ TEST_F(WebRtcVideoChannel2Test, RembCanBeEnabledAndDisabled) {
|
|
|
| // Verify that REMB is turned off when send(!) codecs without REMB are set.
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(RemoveFeedbackParams(GetEngineCodec("VP8")));
|
| EXPECT_TRUE(parameters.codecs[0].feedback_params.params().empty());
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters));
|
| stream = fake_call_->GetVideoReceiveStreams()[0];
|
| @@ -1421,7 +1438,7 @@ TEST_F(WebRtcVideoChannel2Test, TransportCcCanBeEnabledAndDisabled) {
|
| // Verify that transport cc feedback is turned off when send(!) codecs without
|
| // transport cc feedback are set.
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(RemoveFeedbackParams(GetEngineCodec("VP8")));
|
| EXPECT_TRUE(parameters.codecs[0].feedback_params.params().empty());
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters));
|
| stream = fake_call_->GetVideoReceiveStreams()[0];
|
| @@ -1467,7 +1484,7 @@ TEST_F(WebRtcVideoChannel2Test, NackCanBeEnabledAndDisabled) {
|
|
|
| // Verify that NACK is turned off when send(!) codecs without NACK are set.
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(RemoveFeedbackParams(GetEngineCodec("VP8")));
|
| EXPECT_TRUE(parameters.codecs[0].feedback_params.params().empty());
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters));
|
| recv_stream = fake_call_->GetVideoReceiveStreams()[0];
|
| @@ -1492,7 +1509,7 @@ TEST_F(WebRtcVideoChannel2Test, NackCanBeEnabledAndDisabled) {
|
| // earlier.
|
| TEST_F(WebRtcVideoChannel2Test, ReconfiguresEncodersWhenNotSending) {
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
| channel_->SetSend(false);
|
|
|
| @@ -1519,7 +1536,7 @@ TEST_F(WebRtcVideoChannel2Test, ReconfiguresEncodersWhenNotSending) {
|
|
|
| TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) {
|
| static const int kScreenshareMinBitrateKbps = 800;
|
| - cricket::VideoCodec codec = kVp8Codec;
|
| + cricket::VideoCodec codec = GetEngineCodec("VP8");
|
| cricket::VideoSendParameters parameters;
|
| parameters.codecs.push_back(codec);
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters));
|
| @@ -1708,7 +1725,7 @@ TEST_F(WebRtcVideoChannel2Test, Vp8DenoisingEnabledByDefault) {
|
|
|
| TEST_F(WebRtcVideoChannel2Test, VerifyVp8SpecificSettings) {
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
|
|
| // Single-stream settings should apply with RTX as well (verifies that we
|
| @@ -1789,7 +1806,7 @@ TEST_F(WebRtcVideoChannel2Test, SetIdenticalOptionsDoesntReconfigureEncoder) {
|
| EXPECT_EQ(cricket::CS_RUNNING,
|
| capturer.Start(capturer.GetSupportedFormats()->front()));
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
| FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front();
|
|
|
| @@ -1838,7 +1855,7 @@ class Vp9SettingsTest : public WebRtcVideoChannel2Test {
|
|
|
| TEST_F(Vp9SettingsTest, VerifyVp9SpecificSettings) {
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp9Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP9"));
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
|
|
| FakeVideoSendStream* stream = SetUpSimulcast(false, false);
|
| @@ -1898,7 +1915,7 @@ class Vp9SettingsTestWithFieldTrial : public Vp9SettingsTest {
|
| protected:
|
| void VerifySettings(int num_spatial_layers, int num_temporal_layers) {
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp9Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP9"));
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
|
|
| FakeVideoSendStream* stream = SetUpSimulcast(false, false);
|
| @@ -1969,7 +1986,7 @@ TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenScreensharing) {
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruseAndChangeResolution) {
|
| - cricket::VideoCodec codec = kVp8Codec;
|
| + cricket::VideoCodec codec = GetEngineCodec("VP8");
|
| cricket::VideoSendParameters parameters;
|
| parameters.codecs.push_back(codec);
|
|
|
| @@ -2043,7 +2060,7 @@ TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruseAndChangeResolution) {
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, PreviousAdaptationDoesNotApplyToScreenshare) {
|
| - cricket::VideoCodec codec = kVp8Codec;
|
| + cricket::VideoCodec codec = GetEngineCodec("VP8");
|
| cricket::VideoSendParameters parameters;
|
| parameters.codecs.push_back(codec);
|
|
|
| @@ -2107,7 +2124,7 @@ TEST_F(WebRtcVideoChannel2Test, PreviousAdaptationDoesNotApplyToScreenshare) {
|
|
|
| void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse,
|
| bool is_screenshare) {
|
| - cricket::VideoCodec codec = kVp8Codec;
|
| + cricket::VideoCodec codec = GetEngineCodec("VP8");
|
| cricket::VideoSendParameters parameters;
|
| parameters.codecs.push_back(codec);
|
|
|
| @@ -2231,8 +2248,8 @@ TEST_F(WebRtcVideoChannel2Test, SetDefaultSendCodecs) {
|
|
|
| // Make sure NACK and FEC are enabled on the correct payload types.
|
| EXPECT_EQ(1000, config.rtp.nack.rtp_history_ms);
|
| - EXPECT_EQ(default_ulpfec_codec_.id, config.rtp.ulpfec.ulpfec_payload_type);
|
| - EXPECT_EQ(default_red_codec_.id, config.rtp.ulpfec.red_payload_type);
|
| + EXPECT_EQ(GetEngineCodec("ulpfec").id, config.rtp.ulpfec.ulpfec_payload_type);
|
| + EXPECT_EQ(GetEngineCodec("red").id, config.rtp.ulpfec.red_payload_type);
|
|
|
| EXPECT_EQ(1u, config.rtp.rtx.ssrcs.size());
|
| EXPECT_EQ(kRtxSsrcs1[0], config.rtp.rtx.ssrcs[0]);
|
| @@ -2242,7 +2259,7 @@ TEST_F(WebRtcVideoChannel2Test, SetDefaultSendCodecs) {
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithoutFec) {
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
|
|
| FakeVideoSendStream* stream = AddSendStream();
|
| @@ -2254,8 +2271,11 @@ TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithoutFec) {
|
|
|
| TEST_F(WebRtcVideoChannel2Test,
|
| SetSendCodecRejectsRtxWithoutAssociatedPayloadType) {
|
| + const int kUnusedPayloadType = 127;
|
| + EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType));
|
| +
|
| cricket::VideoSendParameters parameters;
|
| - cricket::VideoCodec rtx_codec(96, "rtx");
|
| + cricket::VideoCodec rtx_codec(kUnusedPayloadType, "rtx");
|
| parameters.codecs.push_back(rtx_codec);
|
| EXPECT_FALSE(channel_->SetSendParameters(parameters))
|
| << "RTX codec without associated payload type should be rejected.";
|
| @@ -2263,31 +2283,39 @@ TEST_F(WebRtcVideoChannel2Test,
|
|
|
| TEST_F(WebRtcVideoChannel2Test,
|
| SetSendCodecRejectsRtxWithoutMatchingVideoCodec) {
|
| - cricket::VideoSendParameters parameters;
|
| - cricket::VideoCodec rtx_codec =
|
| - cricket::VideoCodec::CreateRtxCodec(96, kVp8Codec.id);
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(rtx_codec);
|
| - ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
| -
|
| - cricket::VideoCodec rtx_codec2 =
|
| - cricket::VideoCodec::CreateRtxCodec(96, kVp8Codec.id + 1);
|
| - parameters.codecs.pop_back();
|
| - parameters.codecs.push_back(rtx_codec2);
|
| - EXPECT_FALSE(channel_->SetSendParameters(parameters))
|
| - << "RTX without matching video codec should be rejected.";
|
| + const int kUnusedPayloadType1 = 126;
|
| + const int kUnusedPayloadType2 = 127;
|
| + EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType1));
|
| + EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType2));
|
| + {
|
| + cricket::VideoCodec rtx_codec = cricket::VideoCodec::CreateRtxCodec(
|
| + kUnusedPayloadType1, GetEngineCodec("VP8").id);
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(rtx_codec);
|
| + ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
| + }
|
| + {
|
| + cricket::VideoCodec rtx_codec = cricket::VideoCodec::CreateRtxCodec(
|
| + kUnusedPayloadType1, kUnusedPayloadType2);
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(rtx_codec);
|
| + EXPECT_FALSE(channel_->SetSendParameters(parameters))
|
| + << "RTX without matching video codec should be rejected.";
|
| + }
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithoutFecDisablesFec) {
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kUlpfecCodec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("ulpfec"));
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
|
|
| FakeVideoSendStream* stream = AddSendStream();
|
| webrtc::VideoSendStream::Config config = stream->GetConfig().Copy();
|
|
|
| - EXPECT_EQ(kUlpfecCodec.id, config.rtp.ulpfec.ulpfec_payload_type);
|
| + EXPECT_EQ(GetEngineCodec("ulpfec").id, config.rtp.ulpfec.ulpfec_payload_type);
|
|
|
| parameters.codecs.pop_back();
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
| @@ -2432,7 +2460,7 @@ TEST_F(WebRtcVideoChannel2Test, SetMaxSendBandwidthAndAddSendStream) {
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) {
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
| channel_->SetSend(true);
|
|
|
| @@ -2459,7 +2487,7 @@ TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) {
|
| TEST_F(WebRtcVideoChannel2Test,
|
| SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) {
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
| channel_->SetSend(true);
|
|
|
| @@ -2493,7 +2521,7 @@ TEST_F(WebRtcVideoChannel2Test,
|
| TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMaxQuantization) {
|
| static const char* kMaxQuantization = "21";
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization;
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters));
|
| EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)),
|
| @@ -2508,7 +2536,7 @@ TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectBadPayloadTypes) {
|
| // TODO(pbos): Should we only allow the dynamic range?
|
| static const int kIncorrectPayloads[] = {-2, -1, 128, 129};
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| for (size_t i = 0; i < arraysize(kIncorrectPayloads); ++i) {
|
| parameters.codecs[0].id = kIncorrectPayloads[i];
|
| EXPECT_FALSE(channel_->SetSendParameters(parameters))
|
| @@ -2518,8 +2546,7 @@ TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectBadPayloadTypes) {
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetSendCodecsAcceptAllValidPayloadTypes) {
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - // Only the dynamic payload types are valid for video codecs.
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| for (int payload_type = 96; payload_type <= 127; ++payload_type) {
|
| parameters.codecs[0].id = payload_type;
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters))
|
| @@ -2534,42 +2561,47 @@ TEST_F(WebRtcVideoChannel2Test, SetSendCodecsAcceptAllValidPayloadTypes) {
|
| TEST_F(WebRtcVideoChannel2Test,
|
| SetSendCodecsIdenticalFirstCodecDoesntRecreateStream) {
|
| cricket::VideoSendParameters parameters1;
|
| - parameters1.codecs.push_back(kVp8Codec);
|
| - parameters1.codecs.push_back(kVp9Codec);
|
| + parameters1.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters1.codecs.push_back(GetEngineCodec("VP9"));
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters1));
|
|
|
| AddSendStream();
|
| EXPECT_EQ(1, fake_call_->GetNumCreatedSendStreams());
|
|
|
| cricket::VideoSendParameters parameters2;
|
| - parameters2.codecs.push_back(kVp8Codec);
|
| + parameters2.codecs.push_back(GetEngineCodec("VP8"));
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters2));
|
| EXPECT_EQ(1, fake_call_->GetNumCreatedSendStreams());
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsWithOnlyVp8) {
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| }
|
|
|
| // Test that we set our inbound RTX codecs properly.
|
| TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsWithRtx) {
|
| + const int kUnusedPayloadType1 = 126;
|
| + const int kUnusedPayloadType2 = 127;
|
| + EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType1));
|
| + EXPECT_FALSE(FindCodecById(engine_.codecs(), kUnusedPayloadType2));
|
| +
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - cricket::VideoCodec rtx_codec(96, "rtx");
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + cricket::VideoCodec rtx_codec(kUnusedPayloadType1, "rtx");
|
| parameters.codecs.push_back(rtx_codec);
|
| EXPECT_FALSE(channel_->SetRecvParameters(parameters))
|
| << "RTX codec without associated payload should be rejected.";
|
|
|
| - parameters.codecs[1].SetParam("apt", kVp8Codec.id + 1);
|
| + parameters.codecs[1].SetParam("apt", kUnusedPayloadType2);
|
| EXPECT_FALSE(channel_->SetRecvParameters(parameters))
|
| << "RTX codec with invalid associated payload type should be rejected.";
|
|
|
| - parameters.codecs[1].SetParam("apt", kVp8Codec.id);
|
| + parameters.codecs[1].SetParam("apt", GetEngineCodec("VP8").id);
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
|
|
| - cricket::VideoCodec rtx_codec2(97, "rtx");
|
| + cricket::VideoCodec rtx_codec2(kUnusedPayloadType2, "rtx");
|
| rtx_codec2.SetParam("apt", rtx_codec.id);
|
| parameters.codecs.push_back(rtx_codec2);
|
|
|
| @@ -2580,7 +2612,7 @@ TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsWithRtx) {
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsDifferentPayloadType) {
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| parameters.codecs[0].id = 99;
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| }
|
| @@ -2598,7 +2630,7 @@ TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsAcceptDefaultCodecs) {
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsRejectUnsupportedCodec) {
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| parameters.codecs.push_back(VideoCodec(101, "WTF3"));
|
| EXPECT_FALSE(channel_->SetRecvParameters(parameters));
|
| }
|
| @@ -2607,34 +2639,34 @@ TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsRejectUnsupportedCodec) {
|
| TEST_F(WebRtcVideoChannel2Test,
|
| DISABLED_SetRecvCodecsAcceptsMultipleVideoCodecs) {
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kVp9Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("VP9"));
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test,
|
| DISABLED_SetRecvCodecsSetsFecForAllVideoCodecs) {
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kVp9Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("VP9"));
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| FAIL(); // TODO(pbos): Verify that the FEC parameters are set for all codecs.
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsWithoutFecDisablesFec) {
|
| cricket::VideoSendParameters send_parameters;
|
| - send_parameters.codecs.push_back(kVp8Codec);
|
| - send_parameters.codecs.push_back(kRedCodec);
|
| - send_parameters.codecs.push_back(kUlpfecCodec);
|
| + send_parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + send_parameters.codecs.push_back(GetEngineCodec("red"));
|
| + send_parameters.codecs.push_back(GetEngineCodec("ulpfec"));
|
| ASSERT_TRUE(channel_->SetSendParameters(send_parameters));
|
|
|
| FakeVideoReceiveStream* stream = AddRecvStream();
|
|
|
| - EXPECT_EQ(kUlpfecCodec.id,
|
| + EXPECT_EQ(GetEngineCodec("ulpfec").id,
|
| stream->GetConfig().rtp.ulpfec.ulpfec_payload_type);
|
|
|
| cricket::VideoRecvParameters recv_parameters;
|
| - recv_parameters.codecs.push_back(kVp8Codec);
|
| + recv_parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters));
|
| stream = fake_call_->GetVideoReceiveStreams()[0];
|
| ASSERT_TRUE(stream != NULL);
|
| @@ -2644,41 +2676,43 @@ TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsWithoutFecDisablesFec) {
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetSendParamsWithFecEnablesFec) {
|
| FakeVideoReceiveStream* stream = AddRecvStream();
|
| - EXPECT_EQ(kUlpfecCodec.id,
|
| + EXPECT_EQ(GetEngineCodec("ulpfec").id,
|
| stream->GetConfig().rtp.ulpfec.ulpfec_payload_type);
|
|
|
| cricket::VideoRecvParameters recv_parameters;
|
| - recv_parameters.codecs.push_back(kVp8Codec);
|
| - recv_parameters.codecs.push_back(kRedCodec);
|
| - recv_parameters.codecs.push_back(kUlpfecCodec);
|
| + recv_parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + recv_parameters.codecs.push_back(GetEngineCodec("red"));
|
| + recv_parameters.codecs.push_back(GetEngineCodec("ulpfec"));
|
| ASSERT_TRUE(channel_->SetRecvParameters(recv_parameters));
|
| stream = fake_call_->GetVideoReceiveStreams()[0];
|
| ASSERT_TRUE(stream != NULL);
|
| - EXPECT_EQ(kUlpfecCodec.id, stream->GetConfig().rtp.ulpfec.ulpfec_payload_type)
|
| + EXPECT_EQ(GetEngineCodec("ulpfec").id,
|
| + stream->GetConfig().rtp.ulpfec.ulpfec_payload_type)
|
| << "FEC should be enabled on the receive stream.";
|
|
|
| cricket::VideoSendParameters send_parameters;
|
| - send_parameters.codecs.push_back(kVp8Codec);
|
| - send_parameters.codecs.push_back(kRedCodec);
|
| - send_parameters.codecs.push_back(kUlpfecCodec);
|
| + send_parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + send_parameters.codecs.push_back(GetEngineCodec("red"));
|
| + send_parameters.codecs.push_back(GetEngineCodec("ulpfec"));
|
| ASSERT_TRUE(channel_->SetSendParameters(send_parameters));
|
| stream = fake_call_->GetVideoReceiveStreams()[0];
|
| - EXPECT_EQ(kUlpfecCodec.id, stream->GetConfig().rtp.ulpfec.ulpfec_payload_type)
|
| + EXPECT_EQ(GetEngineCodec("ulpfec").id,
|
| + stream->GetConfig().rtp.ulpfec.ulpfec_payload_type)
|
| << "FEC should be enabled on the receive stream.";
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectDuplicateFecPayloads) {
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kRedCodec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("red"));
|
| parameters.codecs[1].id = parameters.codecs[0].id;
|
| EXPECT_FALSE(channel_->SetRecvParameters(parameters));
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsRejectDuplicateCodecPayloads) {
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kVp9Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("VP9"));
|
| parameters.codecs[1].id = parameters.codecs[0].id;
|
| EXPECT_FALSE(channel_->SetRecvParameters(parameters));
|
| }
|
| @@ -2686,8 +2720,8 @@ TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsRejectDuplicateCodecPayloads) {
|
| TEST_F(WebRtcVideoChannel2Test,
|
| SetRecvCodecsAcceptSameCodecOnMultiplePayloadTypes) {
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| parameters.codecs[1].id += 1;
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
| }
|
| @@ -2697,16 +2731,16 @@ TEST_F(WebRtcVideoChannel2Test,
|
| TEST_F(WebRtcVideoChannel2Test,
|
| SetRecvCodecsDifferentOrderDoesntRecreateStream) {
|
| cricket::VideoRecvParameters parameters1;
|
| - parameters1.codecs.push_back(kVp8Codec);
|
| - parameters1.codecs.push_back(kRedCodec);
|
| + parameters1.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters1.codecs.push_back(GetEngineCodec("red"));
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters1));
|
|
|
| AddRecvStream(cricket::StreamParams::CreateLegacy(123));
|
| EXPECT_EQ(1, fake_call_->GetNumCreatedReceiveStreams());
|
|
|
| cricket::VideoRecvParameters parameters2;
|
| - parameters2.codecs.push_back(kRedCodec);
|
| - parameters2.codecs.push_back(kVp8Codec);
|
| + parameters2.codecs.push_back(GetEngineCodec("red"));
|
| + parameters2.codecs.push_back(GetEngineCodec("VP8"));
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters2));
|
| EXPECT_EQ(1, fake_call_->GetNumCreatedReceiveStreams());
|
| }
|
| @@ -2826,14 +2860,14 @@ TEST_F(WebRtcVideoChannel2Test, OnReadyToSendSignalsNetworkState) {
|
|
|
| TEST_F(WebRtcVideoChannel2Test, GetStatsReportsSentCodecName) {
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters));
|
|
|
| AddSendStream();
|
|
|
| cricket::VideoMediaInfo info;
|
| ASSERT_TRUE(channel_->GetStats(&info));
|
| - EXPECT_EQ(kVp8Codec.name, info.senders[0].codec_name);
|
| + EXPECT_EQ("VP8", info.senders[0].codec_name);
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, GetStatsReportsEncoderImplementationName) {
|
| @@ -3246,7 +3280,7 @@ TEST_F(WebRtcVideoChannel2Test, MapsReceivedPayloadTypeToCodecName) {
|
| EXPECT_STREQ("", info.receivers[0].codec_name.c_str());
|
|
|
| // Report VP8 if we're receiving it.
|
| - stats.current_payload_type = kDefaultVp8PlType;
|
| + stats.current_payload_type = GetEngineCodec("VP8").id;
|
| stream->SetStats(stats);
|
| ASSERT_TRUE(channel_->GetStats(&info));
|
| EXPECT_STREQ(kVp8CodecName, info.receivers[0].codec_name.c_str());
|
| @@ -3258,12 +3292,15 @@ TEST_F(WebRtcVideoChannel2Test, MapsReceivedPayloadTypeToCodecName) {
|
| EXPECT_STREQ("", info.receivers[0].codec_name.c_str());
|
| }
|
|
|
| -void WebRtcVideoChannel2Test::TestReceiveUnsignalledSsrcPacket(
|
| +void WebRtcVideoChannel2Test::TestReceiveUnsignaledSsrcPacket(
|
| uint8_t payload_type,
|
| bool expect_created_receive_stream) {
|
| + // kRedRtxPayloadType must currently be unused.
|
| + EXPECT_FALSE(FindCodecById(engine_.codecs(), kRedRtxPayloadType));
|
| +
|
| // Add a RED RTX codec.
|
| VideoCodec red_rtx_codec =
|
| - VideoCodec::CreateRtxCodec(kRedRtxPayloadType, kDefaultRedPlType);
|
| + VideoCodec::CreateRtxCodec(kRedRtxPayloadType, GetEngineCodec("red").id);
|
| recv_parameters_.codecs.push_back(red_rtx_codec);
|
| EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
|
|
|
| @@ -3290,23 +3327,30 @@ void WebRtcVideoChannel2Test::TestReceiveUnsignalledSsrcPacket(
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, Vp8PacketCreatesUnsignalledStream) {
|
| - TestReceiveUnsignalledSsrcPacket(kDefaultVp8PlType, true);
|
| + TestReceiveUnsignaledSsrcPacket(GetEngineCodec("VP8").id,
|
| + true /* expect_created_receive_stream */);
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, Vp9PacketCreatesUnsignalledStream) {
|
| - TestReceiveUnsignalledSsrcPacket(kDefaultVp9PlType, true);
|
| + TestReceiveUnsignaledSsrcPacket(GetEngineCodec("VP9").id,
|
| + true /* expect_created_receive_stream */);
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, RtxPacketDoesntCreateUnsignalledStream) {
|
| - TestReceiveUnsignalledSsrcPacket(kDefaultRtxVp8PlType, false);
|
| + const cricket::VideoCodec vp8 = GetEngineCodec("VP8");
|
| + const int rtx_vp8_payload_type = default_apt_rtx_types_[vp8.id];
|
| + TestReceiveUnsignaledSsrcPacket(rtx_vp8_payload_type,
|
| + false /* expect_created_receive_stream */);
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, UlpfecPacketDoesntCreateUnsignalledStream) {
|
| - TestReceiveUnsignalledSsrcPacket(kDefaultUlpfecType, false);
|
| + TestReceiveUnsignaledSsrcPacket(GetEngineCodec("ulpfec").id,
|
| + false /* expect_created_receive_stream */);
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) {
|
| - TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false);
|
| + TestReceiveUnsignaledSsrcPacket(kRedRtxPayloadType,
|
| + false /* expect_created_receive_stream */);
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) {
|
| @@ -3401,8 +3445,8 @@ TEST_F(WebRtcVideoChannel2Test,
|
| InactiveStreamDoesntStartSendingWhenReconfigured) {
|
| // Set an initial codec list, which will be modified later.
|
| cricket::VideoSendParameters parameters1;
|
| - parameters1.codecs.push_back(kVp8Codec);
|
| - parameters1.codecs.push_back(kVp9Codec);
|
| + parameters1.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters1.codecs.push_back(GetEngineCodec("VP9"));
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters1));
|
|
|
| FakeVideoSendStream* stream = AddSendStream();
|
| @@ -3421,8 +3465,8 @@ TEST_F(WebRtcVideoChannel2Test,
|
|
|
| // Reorder the codec list, causing the stream to be reconfigured.
|
| cricket::VideoSendParameters parameters2;
|
| - parameters2.codecs.push_back(kVp9Codec);
|
| - parameters2.codecs.push_back(kVp8Codec);
|
| + parameters2.codecs.push_back(GetEngineCodec("VP9"));
|
| + parameters2.codecs.push_back(GetEngineCodec("VP8"));
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters2));
|
| auto new_streams = GetFakeSendStreams();
|
| // Assert that a new underlying stream was created due to the codec change.
|
| @@ -3439,23 +3483,25 @@ TEST_F(WebRtcVideoChannel2Test,
|
| TEST_F(WebRtcVideoChannel2Test, GetRtpSendParametersCodecs) {
|
| AddSendStream();
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kVp9Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("VP9"));
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters));
|
|
|
| webrtc::RtpParameters rtp_parameters =
|
| channel_->GetRtpSendParameters(last_ssrc_);
|
| ASSERT_EQ(2u, rtp_parameters.codecs.size());
|
| - EXPECT_EQ(kVp8Codec.ToCodecParameters(), rtp_parameters.codecs[0]);
|
| - EXPECT_EQ(kVp9Codec.ToCodecParameters(), rtp_parameters.codecs[1]);
|
| + EXPECT_EQ(GetEngineCodec("VP8").ToCodecParameters(),
|
| + rtp_parameters.codecs[0]);
|
| + EXPECT_EQ(GetEngineCodec("VP9").ToCodecParameters(),
|
| + rtp_parameters.codecs[1]);
|
| }
|
|
|
| // Test that if we set/get parameters multiple times, we get the same results.
|
| TEST_F(WebRtcVideoChannel2Test, SetAndGetRtpSendParameters) {
|
| AddSendStream();
|
| cricket::VideoSendParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kVp9Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("VP9"));
|
| EXPECT_TRUE(channel_->SetSendParameters(parameters));
|
|
|
| webrtc::RtpParameters initial_params =
|
| @@ -3472,15 +3518,17 @@ TEST_F(WebRtcVideoChannel2Test, SetAndGetRtpSendParameters) {
|
| TEST_F(WebRtcVideoChannel2Test, GetRtpReceiveParametersCodecs) {
|
| AddRecvStream();
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kVp9Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("VP9"));
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
|
|
| webrtc::RtpParameters rtp_parameters =
|
| channel_->GetRtpReceiveParameters(last_ssrc_);
|
| ASSERT_EQ(2u, rtp_parameters.codecs.size());
|
| - EXPECT_EQ(kVp8Codec.ToCodecParameters(), rtp_parameters.codecs[0]);
|
| - EXPECT_EQ(kVp9Codec.ToCodecParameters(), rtp_parameters.codecs[1]);
|
| + EXPECT_EQ(GetEngineCodec("VP8").ToCodecParameters(),
|
| + rtp_parameters.codecs[0]);
|
| + EXPECT_EQ(GetEngineCodec("VP9").ToCodecParameters(),
|
| + rtp_parameters.codecs[1]);
|
| }
|
|
|
| #if defined(WEBRTC_USE_H264)
|
| @@ -3537,8 +3585,8 @@ TEST_F(WebRtcVideoChannel2Test, RtpEncodingParametersSsrcIsSet) {
|
| TEST_F(WebRtcVideoChannel2Test, SetAndGetRtpReceiveParameters) {
|
| AddRecvStream();
|
| cricket::VideoRecvParameters parameters;
|
| - parameters.codecs.push_back(kVp8Codec);
|
| - parameters.codecs.push_back(kVp9Codec);
|
| + parameters.codecs.push_back(GetEngineCodec("VP8"));
|
| + parameters.codecs.push_back(GetEngineCodec("VP9"));
|
| EXPECT_TRUE(channel_->SetRecvParameters(parameters));
|
|
|
| webrtc::RtpParameters initial_params =
|
| @@ -3732,16 +3780,15 @@ class WebRtcVideoChannel2SimulcastTest : public testing::Test {
|
| };
|
|
|
| TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith2SimulcastStreams) {
|
| - VerifySimulcastSettings(kVp8Codec, 640, 360, 2, 2);
|
| + VerifySimulcastSettings(cricket::VideoCodec("VP8"), 640, 360, 2, 2);
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) {
|
| - VerifySimulcastSettings(kVp8Codec, 1280, 720, 3, 3);
|
| + VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 3);
|
| }
|
|
|
| // Test that we normalize send codec format size in simulcast.
|
| TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
|
| - cricket::VideoCodec codec(kVp8Codec);
|
| - VerifySimulcastSettings(codec, 541, 271, 2, 2);
|
| + VerifySimulcastSettings(cricket::VideoCodec("VP8"), 541, 271, 2, 2);
|
| }
|
| } // namespace cricket
|
|
|