From 62c7b39c7121ae3268bcf747c725e9ef5eb6767b Mon Sep 17 00:00:00 2001 From: Sebastian Jansson Date: Fri, 8 Mar 2019 13:45:29 +0100 Subject: [PATCH] Allow suppression of padding check in RtpHeaderParser. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: None Change-Id: I39574cade2c8c9df539f778fd97cb7a62827e169 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/125521 Reviewed-by: Björn Terelius Reviewed-by: Åsa Persson Commit-Queue: Sebastian Jansson Cr-Commit-Position: refs/heads/master@{#27039} --- logging/rtc_event_log/rtc_event_log_parser.cc | 4 ++-- modules/rtp_rtcp/source/rtp_utility.cc | 10 +++++----- modules/rtp_rtcp/source/rtp_utility.h | 3 ++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/logging/rtc_event_log/rtc_event_log_parser.cc b/logging/rtc_event_log/rtc_event_log_parser.cc index 33b90789e7..5b7c00de40 100644 --- a/logging/rtc_event_log/rtc_event_log_parser.cc +++ b/logging/rtc_event_log/rtc_event_log_parser.cc @@ -1310,7 +1310,7 @@ void ParsedRtcEventLog::StoreParsedLegacyEvent(const rtclog::Event& event) { RTPHeader parsed_header; if (extension_map != nullptr) { - rtp_parser.Parse(&parsed_header, extension_map); + rtp_parser.Parse(&parsed_header, extension_map, true); } else { // Use the default extension map. // TODO(terelius): This should be removed. GetRtpHeader will return the @@ -1318,7 +1318,7 @@ void ParsedRtcEventLog::StoreParsedLegacyEvent(const rtclog::Event& event) { // TODO(ivoc): Once configuration of audio streams is stored in the // event log, this can be removed. // Tracking bug: webrtc:6399 - rtp_parser.Parse(&parsed_header, &default_extension_map_); + rtp_parser.Parse(&parsed_header, &default_extension_map_, true); } // Since we give the parser only a header, there is no way for it to know diff --git a/modules/rtp_rtcp/source/rtp_utility.cc b/modules/rtp_rtcp/source/rtp_utility.cc index 8811bf1d21..a1a3e35eb6 100644 --- a/modules/rtp_rtcp/source/rtp_utility.cc +++ b/modules/rtp_rtcp/source/rtp_utility.cc @@ -156,9 +156,9 @@ bool RtpHeaderParser::ParseRtcp(RTPHeader* header) const { return true; } -bool RtpHeaderParser::Parse( - RTPHeader* header, - const RtpHeaderExtensionMap* ptrExtensionMap) const { +bool RtpHeaderParser::Parse(RTPHeader* header, + const RtpHeaderExtensionMap* ptrExtensionMap, + bool header_only) const { const ptrdiff_t length = _ptrRTPDataEnd - _ptrRTPDataBegin; if (length < kRtpMinParseLength) { return false; @@ -202,7 +202,7 @@ bool RtpHeaderParser::Parse( header->timestamp = RTPTimestamp; header->ssrc = SSRC; header->numCSRCs = CC; - if (!P) { + if (!P || header_only) { header->paddingLength = 0; } @@ -286,7 +286,7 @@ bool RtpHeaderParser::Parse( if (header->headerLength > static_cast(length)) return false; - if (P) { + if (P && !header_only) { // Packet has padding. if (header->headerLength != static_cast(length)) { // Packet is not header only. We can parse padding length now. diff --git a/modules/rtp_rtcp/source/rtp_utility.h b/modules/rtp_rtcp/source/rtp_utility.h index bbfb886eaa..92e02ef58f 100644 --- a/modules/rtp_rtcp/source/rtp_utility.h +++ b/modules/rtp_rtcp/source/rtp_utility.h @@ -37,7 +37,8 @@ class RtpHeaderParser { bool RTCP() const; bool ParseRtcp(RTPHeader* header) const; bool Parse(RTPHeader* parsedPacket, - const RtpHeaderExtensionMap* ptrExtensionMap = nullptr) const; + const RtpHeaderExtensionMap* ptrExtensionMap = nullptr, + bool header_only = false) const; private: void ParseOneByteExtensionHeader(RTPHeader* parsedPacket,