diff --git a/logging/BUILD.gn b/logging/BUILD.gn index 67566ce5e3..d8b4b8493b 100644 --- a/logging/BUILD.gn +++ b/logging/BUILD.gn @@ -449,6 +449,7 @@ if (rtc_enable_protobuf) { "../modules/audio_coding:audio_network_adaptor", "../modules/rtp_rtcp:rtp_rtcp_format", "../rtc_base:checks", + "../rtc_base:copy_on_write_buffer", "../rtc_base:ignore_wundef", "../rtc_base:logging", "../rtc_base:protobuf_utils", diff --git a/logging/rtc_event_log/rtc_event_log_parser.cc b/logging/rtc_event_log/rtc_event_log_parser.cc index b4392e8088..4033a593a1 100644 --- a/logging/rtc_event_log/rtc_event_log_parser.cc +++ b/logging/rtc_event_log/rtc_event_log_parser.cc @@ -38,6 +38,7 @@ #include "modules/rtp_rtcp/source/rtp_header_extensions.h" #include "modules/rtp_rtcp/source/rtp_packet_received.h" #include "rtc_base/checks.h" +#include "rtc_base/copy_on_write_buffer.h" #include "rtc_base/logging.h" #include "rtc_base/numerics/safe_conversions.h" #include "rtc_base/numerics/sequence_number_util.h" @@ -1637,7 +1638,8 @@ ParsedRtcEventLog::ParseStatus ParsedRtcEventLog::StoreParsedLegacyEvent( // Use RtpPacketReceived instead of more generic RtpPacket because former // has a buildin convertion to RTPHeader. RtpPacketReceived rtp_header; - RTC_PARSE_CHECK_OR_RETURN(rtp_header.Parse(rtp_packet.header())); + RTC_PARSE_CHECK_OR_RETURN( + rtp_header.Parse(rtc::CopyOnWriteBuffer(rtp_packet.header()))); if (const RtpHeaderExtensionMap* extension_map = GetRtpHeaderExtensionMap( rtp_packet.incoming(), rtp_header.Ssrc())) { diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn index b4cf481194..33cd57f2e2 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -183,6 +183,7 @@ rtc_library("copy_on_write_buffer") { "../api:scoped_refptr", "system:rtc_export", ] + absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] } rtc_library("event_tracer") { diff --git a/rtc_base/copy_on_write_buffer.cc b/rtc_base/copy_on_write_buffer.cc index f3cc710f85..850327b088 100644 --- a/rtc_base/copy_on_write_buffer.cc +++ b/rtc_base/copy_on_write_buffer.cc @@ -12,6 +12,8 @@ #include +#include "absl/strings/string_view.h" + namespace rtc { CopyOnWriteBuffer::CopyOnWriteBuffer() : offset_(0), size_(0) { @@ -28,7 +30,7 @@ CopyOnWriteBuffer::CopyOnWriteBuffer(CopyOnWriteBuffer&& buf) RTC_DCHECK(IsConsistent()); } -CopyOnWriteBuffer::CopyOnWriteBuffer(const std::string& s) +CopyOnWriteBuffer::CopyOnWriteBuffer(absl::string_view s) : CopyOnWriteBuffer(s.data(), s.length()) {} CopyOnWriteBuffer::CopyOnWriteBuffer(size_t size) diff --git a/rtc_base/copy_on_write_buffer.h b/rtc_base/copy_on_write_buffer.h index 6837f06526..849f5f5df2 100644 --- a/rtc_base/copy_on_write_buffer.h +++ b/rtc_base/copy_on_write_buffer.h @@ -19,6 +19,7 @@ #include #include +#include "absl/strings/string_view.h" #include "api/scoped_refptr.h" #include "rtc_base/buffer.h" #include "rtc_base/checks.h" @@ -38,7 +39,7 @@ class RTC_EXPORT CopyOnWriteBuffer { CopyOnWriteBuffer(CopyOnWriteBuffer&& buf); // Construct a buffer from a string, convenient for unittests. - CopyOnWriteBuffer(const std::string& s); + explicit CopyOnWriteBuffer(absl::string_view s); // Construct a buffer with the specified number of uninitialized bytes. explicit CopyOnWriteBuffer(size_t size);