From 885ededbb80257bdf6d5a103275ed3c46fb42b26 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Tue, 10 Jan 2023 10:56:20 +0100 Subject: [PATCH] Add move constructor and assign operator to RtpPacket RtpPacket has CopyOnWriteBuffer and std::vector that can be moved more efficiently than copied, thus move of the RtpPacket is also more efficient Bug: None Change-Id: I5509346e426cd32d0fb0649ef1a6883b7176df1d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290726 Reviewed-by: Per Kjellander Commit-Queue: Per Kjellander Auto-Submit: Danil Chapovalov Commit-Queue: Danil Chapovalov Cr-Commit-Position: refs/heads/main@{#39053} --- modules/rtp_rtcp/source/rtp_packet.cc | 8 +++++--- modules/rtp_rtcp/source/rtp_packet.h | 9 ++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/modules/rtp_rtcp/source/rtp_packet.cc b/modules/rtp_rtcp/source/rtp_packet.cc index 8166de82b2..6c7dff322b 100644 --- a/modules/rtp_rtcp/source/rtp_packet.cc +++ b/modules/rtp_rtcp/source/rtp_packet.cc @@ -60,8 +60,6 @@ RtpPacket::RtpPacket() : RtpPacket(nullptr, kDefaultPacketSize) {} RtpPacket::RtpPacket(const ExtensionManager* extensions) : RtpPacket(extensions, kDefaultPacketSize) {} -RtpPacket::RtpPacket(const RtpPacket&) = default; - RtpPacket::RtpPacket(const ExtensionManager* extensions, size_t capacity) : extensions_(extensions ? *extensions : ExtensionManager()), buffer_(capacity) { @@ -69,7 +67,11 @@ RtpPacket::RtpPacket(const ExtensionManager* extensions, size_t capacity) Clear(); } -RtpPacket::~RtpPacket() {} +RtpPacket::RtpPacket(const RtpPacket&) = default; +RtpPacket::RtpPacket(RtpPacket&&) = default; +RtpPacket& RtpPacket::operator=(const RtpPacket&) = default; +RtpPacket& RtpPacket::operator=(RtpPacket&&) = default; +RtpPacket::~RtpPacket() = default; void RtpPacket::IdentifyExtensions(ExtensionManager extensions) { extensions_ = std::move(extensions); diff --git a/modules/rtp_rtcp/source/rtp_packet.h b/modules/rtp_rtcp/source/rtp_packet.h index 3401a462be..1db4a13017 100644 --- a/modules/rtp_rtcp/source/rtp_packet.h +++ b/modules/rtp_rtcp/source/rtp_packet.h @@ -34,11 +34,14 @@ class RtpPacket { // stored. RtpPacket(); explicit RtpPacket(const ExtensionManager* extensions); - RtpPacket(const RtpPacket&); RtpPacket(const ExtensionManager* extensions, size_t capacity); - ~RtpPacket(); - RtpPacket& operator=(const RtpPacket&) = default; + RtpPacket(const RtpPacket&); + RtpPacket(RtpPacket&&); + RtpPacket& operator=(const RtpPacket&); + RtpPacket& operator=(RtpPacket&&); + + ~RtpPacket(); // Parse and copy given buffer into Packet. // Does not require extension map to be registered (map is only required to