From 82aa094a970a2c37634378910116bbe1d5abc633 Mon Sep 17 00:00:00 2001 From: memetao Date: Mon, 31 May 2021 21:16:52 +0800 Subject: [PATCH] Fix incorrect SSRC in RtpPacketSendInfo for RTX packets. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:12713 Change-Id: I1b5fb947ffe4ac80e23a6b891ea1a2c2156ba81f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/218000 Reviewed-by: Danil Chapovalov Reviewed-by: Erik Språng Commit-Queue: Erik Språng Cr-Commit-Position: refs/heads/master@{#34177} --- AUTHORS | 1 + modules/rtp_rtcp/source/rtp_sender_egress.cc | 2 +- .../source/rtp_sender_egress_unittest.cc | 21 +++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index 64488bfc62..6e05ced1fb 100644 --- a/AUTHORS +++ b/AUTHORS @@ -96,6 +96,7 @@ Silviu Caragea Stefan Gula Stephan Hartmann Steve Reid +Tao Chen Tarun Chawla Todd Wong Tomas Popela diff --git a/modules/rtp_rtcp/source/rtp_sender_egress.cc b/modules/rtp_rtcp/source/rtp_sender_egress.cc index 55dd9ff075..df50f38a9d 100644 --- a/modules/rtp_rtcp/source/rtp_sender_egress.cc +++ b/modules/rtp_rtcp/source/rtp_sender_egress.cc @@ -409,7 +409,7 @@ void RtpSenderEgress::AddPacketToTransportFeedback( } RtpPacketSendInfo packet_info; - packet_info.ssrc = ssrc_; + packet_info.ssrc = packet.Ssrc(); packet_info.transport_sequence_number = packet_id; packet_info.rtp_sequence_number = packet.SequenceNumber(); packet_info.rtp_timestamp = packet.Timestamp(); diff --git a/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc index 663638fab5..72a98b31e4 100644 --- a/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc +++ b/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc @@ -236,6 +236,27 @@ TEST_P(RtpSenderEgressTest, TransportFeedbackObserverGetsCorrectByteCount) { sender->SendPacket(packet.get(), PacedPacketInfo()); } +TEST_P(RtpSenderEgressTest, TransportFeedbackObserverGetCorrectPacketSsrc) { + const uint16_t kTransportSequenceNumber = 17; + header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, + TransportSequenceNumber::kUri); + std::unique_ptr media_packet = BuildRtpPacket(); + media_packet->SetSsrc(kSsrc); + media_packet->SetExtension(kTransportSequenceNumber); + std::unique_ptr rtx_packet = BuildRtpPacket(); + rtx_packet->SetSsrc(kRtxSsrc); + rtx_packet->SetExtension(kTransportSequenceNumber + + 1); + rtx_packet->set_packet_type(RtpPacketMediaType::kPadding); + std::unique_ptr sender = CreateRtpSenderEgress(); + EXPECT_CALL(feedback_observer_, + OnAddPacket(Field(&RtpPacketSendInfo::ssrc, kSsrc))); + sender->SendPacket(media_packet.get(), PacedPacketInfo()); + EXPECT_CALL(feedback_observer_, + OnAddPacket(Field(&RtpPacketSendInfo::ssrc, kRtxSsrc))); + sender->SendPacket(rtx_packet.get(), PacedPacketInfo()); +} + TEST_P(RtpSenderEgressTest, PacketOptionsIsRetransmitSetByPacketType) { std::unique_ptr sender = CreateRtpSenderEgress();