diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc b/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc index 07b394a556..0a13be3a30 100644 --- a/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc +++ b/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc @@ -126,7 +126,7 @@ RtpPacketToSend GenerateRtpPacket(const RtpHeaderExtensionMap* extensions, rtp_packet.SetExtension(prng->Rand(0x00ffffff)); rtp_packet.SetExtension(prng->Rand(), prng->Rand(127)); - rtp_packet.SetExtension(prng->Rand()); + rtp_packet.SetExtension(prng->Rand(0x00ffffff)); rtp_packet.SetExtension(prng->Rand(2)); rtp_packet.SetExtension(prng->Rand()); diff --git a/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc b/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc index 3bb9bc5553..2f3feb34cd 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc +++ b/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc @@ -43,8 +43,9 @@ bool AbsoluteSendTime::Parse(rtc::ArrayView data, return true; } -bool AbsoluteSendTime::Write(uint8_t* data, int64_t time_ms) { - ByteWriter::WriteBigEndian(data, MsTo24Bits(time_ms)); +bool AbsoluteSendTime::Write(uint8_t* data, uint32_t time_24bits) { + RTC_DCHECK_LE(time_24bits, 0x00FFFFFF); + ByteWriter::WriteBigEndian(data, time_24bits); return true; } diff --git a/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h b/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h index a1f69dd0f9..d3e72ebd22 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h +++ b/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h @@ -28,8 +28,8 @@ class AbsoluteSendTime { "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"; static bool Parse(rtc::ArrayView data, uint32_t* time_24bits); - static size_t ValueSize(int64_t time_ms) { return kValueSizeBytes; } - static bool Write(uint8_t* data, int64_t time_ms); + static size_t ValueSize(uint32_t time_24bits) { return kValueSizeBytes; } + static bool Write(uint8_t* data, uint32_t time_24bits); static constexpr uint32_t MsTo24Bits(int64_t time_ms) { return static_cast(((time_ms << 18) + 500) / 1000) & 0x00FFFFFF; diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc index 1bdb804e82..00edd18f3f 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc +++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc @@ -559,7 +559,8 @@ size_t RTPSender::SendPadData(size_t bytes, padding_packet.SetExtension( (now_ms - capture_time_ms) * kTimestampTicksPerMs); } - padding_packet.SetExtension(now_ms); + padding_packet.SetExtension( + AbsoluteSendTime::MsTo24Bits(now_ms)); PacketOptions options; bool has_transport_seq_num = UpdateTransportSequenceNumber(&padding_packet, &options.packet_id); @@ -739,7 +740,8 @@ bool RTPSender::PrepareAndSendPacket(std::unique_ptr packet, int64_t diff_ms = now_ms - capture_time_ms; packet_to_send->SetExtension(kTimestampTicksPerMs * diff_ms); - packet_to_send->SetExtension(now_ms); + packet_to_send->SetExtension( + AbsoluteSendTime::MsTo24Bits(now_ms)); PacketOptions options; if (UpdateTransportSequenceNumber(packet_to_send, &options.packet_id)) { @@ -829,7 +831,7 @@ bool RTPSender::SendToNetwork(std::unique_ptr packet, packet->SetExtension( kTimestampTicksPerMs * (now_ms - packet->capture_time_ms())); } - packet->SetExtension(now_ms); + packet->SetExtension(AbsoluteSendTime::MsTo24Bits(now_ms)); if (video_) { BWE_TEST_LOGGING_PLOT_WITH_SSRC(1, "VideoTotBitrate_kbps", now_ms,