From e19a375f8c3ec85b2059af50f41eb71e65b81fd4 Mon Sep 17 00:00:00 2001 From: Per Kjellander Date: Tue, 3 Dec 2019 14:41:59 +0100 Subject: [PATCH] Propagate RtpPacketReceived::arival_time_ms() when demuxing RTX packets Bug: webrtc:11163 Change-Id: I3bf4a662c84e9b31e0b0fc15660d360413a4aee1 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161224 Reviewed-by: Sebastian Jansson Reviewed-by: Danil Chapovalov Commit-Queue: Per Kjellander Cr-Commit-Position: refs/heads/master@{#29996} --- call/rtx_receive_stream.cc | 1 + call/rtx_receive_stream_unittest.cc | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/call/rtx_receive_stream.cc b/call/rtx_receive_stream.cc index 3c8b53b8fd..9e4a41bc8f 100644 --- a/call/rtx_receive_stream.cc +++ b/call/rtx_receive_stream.cc @@ -64,6 +64,7 @@ void RtxReceiveStream::OnRtpPacket(const RtpPacketReceived& rtx_packet) { media_packet.SetSequenceNumber((payload[0] << 8) + payload[1]); media_packet.SetPayloadType(it->second); media_packet.set_recovered(true); + media_packet.set_arrival_time_ms(rtx_packet.arrival_time_ms()); // Skip the RTX header. rtc::ArrayView rtx_payload = payload.subview(kRtxHeaderSize); diff --git a/call/rtx_receive_stream_unittest.cc b/call/rtx_receive_stream_unittest.cc index 90027bbc48..75086fef9c 100644 --- a/call/rtx_receive_stream_unittest.cc +++ b/call/rtx_receive_stream_unittest.cc @@ -22,6 +22,7 @@ namespace webrtc { namespace { using ::testing::_; +using ::testing::Property; using ::testing::StrictMock; constexpr int kMediaPayloadType = 100; @@ -188,6 +189,17 @@ TEST(RtxReceiveStreamTest, CopiesRtpHeaderExtensions) { rtx_sink.OnRtpPacket(rtx_packet); } +TEST(RtxReceiveStreamTest, PropagatesArrivalTime) { + StrictMock media_sink; + RtxReceiveStream rtx_sink(&media_sink, PayloadTypeMapping(), kMediaSSRC); + RtpPacketReceived rtx_packet(nullptr); + EXPECT_TRUE(rtx_packet.Parse(rtc::ArrayView(kRtxPacket))); + rtx_packet.set_arrival_time_ms(123); + EXPECT_CALL(media_sink, + OnRtpPacket(Property(&RtpPacketReceived::arrival_time_ms, 123))); + rtx_sink.OnRtpPacket(rtx_packet); +} + TEST(RtxReceiveStreamTest, SupportsLargePacket) { StrictMock media_sink; RtxReceiveStream rtx_sink(&media_sink, PayloadTypeMapping(), kMediaSSRC);