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}
This commit is contained in:
Per Kjellander 2019-12-03 14:41:59 +01:00 committed by Commit Bot
parent 934afc6ba1
commit e19a375f8c
2 changed files with 13 additions and 0 deletions

View File

@ -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<const uint8_t> rtx_payload = payload.subview(kRtxHeaderSize);

View File

@ -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<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);