Remove special-casing of TWCCv2 negotiation
since it can be enabled locally using the RTP header extensions API Bug: webrtc:15057 Change-Id: Id15d26ab858d88769939974f2a7ae4327df925b7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/336720 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Johannes Kron <kron@webrtc.org> Commit-Queue: Philipp Hancke <phancke@microsoft.com> Reviewed-by: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#41650}
This commit is contained in:
parent
27a452da21
commit
657b65fa18
@ -1254,17 +1254,6 @@ void NegotiateRtpHeaderExtensions(const RtpHeaderExtensions& local_extensions,
|
||||
const RtpHeaderExtensions& offered_extensions,
|
||||
webrtc::RtpExtension::Filter filter,
|
||||
RtpHeaderExtensions* negotiated_extensions) {
|
||||
// TransportSequenceNumberV2 is not offered by default. The special logic for
|
||||
// the TransportSequenceNumber extensions works as follows:
|
||||
// Offer Answer
|
||||
// V1 V1 if in local_extensions.
|
||||
// V1 and V2 V2 regardless of local_extensions.
|
||||
// V2 V2 regardless of local_extensions.
|
||||
const webrtc::RtpExtension* transport_sequence_number_v2_offer =
|
||||
FindHeaderExtensionByUriDiscardUnsupported(
|
||||
offered_extensions,
|
||||
webrtc::RtpExtension::kTransportSequenceNumberV2Uri, filter);
|
||||
|
||||
bool frame_descriptor_in_local = false;
|
||||
bool dependency_descriptor_in_local = false;
|
||||
bool abs_capture_time_in_local = false;
|
||||
@ -1276,29 +1265,16 @@ void NegotiateRtpHeaderExtensions(const RtpHeaderExtensions& local_extensions,
|
||||
dependency_descriptor_in_local = true;
|
||||
else if (ours.uri == webrtc::RtpExtension::kAbsoluteCaptureTimeUri)
|
||||
abs_capture_time_in_local = true;
|
||||
|
||||
const webrtc::RtpExtension* theirs =
|
||||
FindHeaderExtensionByUriDiscardUnsupported(offered_extensions, ours.uri,
|
||||
filter);
|
||||
if (theirs) {
|
||||
if (transport_sequence_number_v2_offer &&
|
||||
ours.uri == webrtc::RtpExtension::kTransportSequenceNumberUri) {
|
||||
// Don't respond to
|
||||
// http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
|
||||
// if we get an offer including
|
||||
// http://www.webrtc.org/experiments/rtp-hdrext/transport-wide-cc-02
|
||||
continue;
|
||||
} else {
|
||||
// We respond with their RTP header extension id.
|
||||
negotiated_extensions->push_back(*theirs);
|
||||
}
|
||||
// We respond with their RTP header extension id.
|
||||
negotiated_extensions->push_back(*theirs);
|
||||
}
|
||||
}
|
||||
|
||||
if (transport_sequence_number_v2_offer) {
|
||||
// Respond that we support kTransportSequenceNumberV2Uri.
|
||||
negotiated_extensions->push_back(*transport_sequence_number_v2_offer);
|
||||
}
|
||||
|
||||
// Frame descriptors support. If the extension is not present locally, but is
|
||||
// in the offer, we add it to the list.
|
||||
if (!dependency_descriptor_in_local) {
|
||||
|
||||
@ -1731,30 +1731,72 @@ TEST_F(MediaSessionDescriptionFactoryTest, TestOfferAnswerWithRtpExtensions) {
|
||||
}
|
||||
|
||||
// Create a audio/video offer and answer and ensure that the
|
||||
// TransportSequenceNumber RTP header extensions are handled correctly. 02 is
|
||||
// supported and should take precedence even though not listed among locally
|
||||
// supported extensions.
|
||||
// TransportSequenceNumber RTP v1 and v2 header extensions are handled
|
||||
// correctly.
|
||||
TEST_F(MediaSessionDescriptionFactoryTest,
|
||||
TestOfferAnswerWithTransportSequenceNumberInOffer) {
|
||||
TestOfferAnswerWithTransportSequenceNumberV1LocalAndV1InOffer) {
|
||||
TestTransportSequenceNumberNegotiation(
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01), // Local.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01), // Offer.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01)); // Expected answer.
|
||||
}
|
||||
TEST_F(MediaSessionDescriptionFactoryTest,
|
||||
TestOfferAnswerWithTransportSequenceNumber01And02InOffer) {
|
||||
TestOfferAnswerWithTransportSequenceNumberV1LocalAndV1V2InOffer) {
|
||||
TestTransportSequenceNumberNegotiation(
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01), // Local.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01And02), // Offer.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01)); // Expected answer.
|
||||
}
|
||||
TEST_F(MediaSessionDescriptionFactoryTest,
|
||||
TestOfferAnswerWithTransportSequenceNumberV1LocalAndV2InOffer) {
|
||||
TestTransportSequenceNumberNegotiation(
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01), // Local.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber02), // Offer.
|
||||
{}); // Expected answer.
|
||||
}
|
||||
TEST_F(MediaSessionDescriptionFactoryTest,
|
||||
TestOfferAnswerWithTransportSequenceNumberV2LocalAndV1InOffer) {
|
||||
TestTransportSequenceNumberNegotiation(
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber02), // Local.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01), // Offer.
|
||||
{}); // Expected answer.
|
||||
}
|
||||
TEST_F(MediaSessionDescriptionFactoryTest,
|
||||
TestOfferAnswerWithTransportSequenceNumberV2LocalAndV1V2InOffer) {
|
||||
TestTransportSequenceNumberNegotiation(
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber02), // Local.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01And02), // Offer.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber02)); // Expected answer.
|
||||
}
|
||||
TEST_F(MediaSessionDescriptionFactoryTest,
|
||||
TestOfferAnswerWithTransportSequenceNumber02InOffer) {
|
||||
TestOfferAnswerWithTransportSequenceNumberV2LocalAndV2InOffer) {
|
||||
TestTransportSequenceNumberNegotiation(
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01), // Local.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber02), // Local.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber02), // Offer.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber02)); // Expected answer.
|
||||
}
|
||||
TEST_F(MediaSessionDescriptionFactoryTest,
|
||||
TestOfferAnswerWithTransportSequenceNumberV1V2LocalAndV1InOffer) {
|
||||
TestTransportSequenceNumberNegotiation(
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01And02), // Local.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01), // Offer.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01)); // Expected answer.
|
||||
}
|
||||
TEST_F(MediaSessionDescriptionFactoryTest,
|
||||
TestOfferAnswerWithTransportSequenceNumberV1V2LocalAndV2InOffer) {
|
||||
TestTransportSequenceNumberNegotiation(
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01And02), // Local.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber02), // Offer.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber02)); // Expected answer.
|
||||
}
|
||||
TEST_F(MediaSessionDescriptionFactoryTest,
|
||||
TestOfferAnswerWithTransportSequenceNumberV1V2LocalAndV1V2InOffer) {
|
||||
TestTransportSequenceNumberNegotiation(
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01And02), // Local.
|
||||
MAKE_VECTOR(kRtpExtensionTransportSequenceNumber01And02), // Offer.
|
||||
MAKE_VECTOR(
|
||||
kRtpExtensionTransportSequenceNumber01And02)); // Expected answer.
|
||||
}
|
||||
|
||||
TEST_F(MediaSessionDescriptionFactoryTest,
|
||||
TestNegotiateFrameDescriptorWhenUnexposedLocally) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user