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 <srte@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29996}
diff --git a/call/rtx_receive_stream.cc b/call/rtx_receive_stream.cc
index 3c8b53b..9e4a41b 100644
--- a/call/rtx_receive_stream.cc
+++ b/call/rtx_receive_stream.cc
@@ -64,6 +64,7 @@
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<const uint8_t> rtx_payload = payload.subview(kRtxHeaderSize);
diff --git a/call/rtx_receive_stream_unittest.cc b/call/rtx_receive_stream_unittest.cc
index 90027bb..75086fe 100644
--- a/call/rtx_receive_stream_unittest.cc
+++ b/call/rtx_receive_stream_unittest.cc
@@ -22,6 +22,7 @@
namespace {
using ::testing::_;
+using ::testing::Property;
using ::testing::StrictMock;
constexpr int kMediaPayloadType = 100;
@@ -188,6 +189,17 @@
rtx_sink.OnRtpPacket(rtx_packet);
}
+TEST(RtxReceiveStreamTest, PropagatesArrivalTime) {
+ StrictMock<MockRtpPacketSink> media_sink;
+ RtxReceiveStream rtx_sink(&media_sink, PayloadTypeMapping(), kMediaSSRC);
+ RtpPacketReceived rtx_packet(nullptr);
+ EXPECT_TRUE(rtx_packet.Parse(rtc::ArrayView<const uint8_t>(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<MockRtpPacketSink> media_sink;
RtxReceiveStream rtx_sink(&media_sink, PayloadTypeMapping(), kMediaSSRC);