mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-16 15:20:42 +01:00
Avoid copying of vectors in RtpPacketInfos.
Bug: chromium:982260 Change-Id: Ia4dab497b662e825f80c16530cdf615b62f0a5c9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148523 Commit-Queue: Minyue Li <minyue@webrtc.org> Reviewed-by: Per Kjellander <perkj@webrtc.org> Reviewed-by: Chen Xing <chxg@google.com> Cr-Commit-Position: refs/heads/master@{#28859}
This commit is contained in:
parent
c14b2335d9
commit
c759f832e9
2 changed files with 19 additions and 5 deletions
|
@ -12,6 +12,7 @@
|
|||
#define API_RTP_PACKET_INFOS_H_
|
||||
|
||||
#include <cstdint>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "api/ref_counted_base.h"
|
||||
|
@ -46,7 +47,11 @@ class RtpPacketInfos {
|
|||
using reverse_iterator = const_reverse_iterator;
|
||||
|
||||
RtpPacketInfos() {}
|
||||
explicit RtpPacketInfos(vector_type entries) : data_(Data::Create(entries)) {}
|
||||
explicit RtpPacketInfos(const vector_type& entries)
|
||||
: data_(Data::Create(entries)) {}
|
||||
|
||||
explicit RtpPacketInfos(vector_type&& entries)
|
||||
: data_(Data::Create(std::move(entries))) {}
|
||||
|
||||
RtpPacketInfos(const RtpPacketInfos& other) = default;
|
||||
RtpPacketInfos(RtpPacketInfos&& other) = default;
|
||||
|
@ -75,7 +80,7 @@ class RtpPacketInfos {
|
|||
private:
|
||||
class Data : public rtc::RefCountedBase {
|
||||
public:
|
||||
static rtc::scoped_refptr<Data> Create(vector_type entries) {
|
||||
static rtc::scoped_refptr<Data> Create(const vector_type& entries) {
|
||||
// Performance optimization for the empty case.
|
||||
if (entries.empty()) {
|
||||
return nullptr;
|
||||
|
@ -84,10 +89,20 @@ class RtpPacketInfos {
|
|||
return new Data(entries);
|
||||
}
|
||||
|
||||
static rtc::scoped_refptr<Data> Create(vector_type&& entries) {
|
||||
// Performance optimization for the empty case.
|
||||
if (entries.empty()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return new Data(std::move(entries));
|
||||
}
|
||||
|
||||
const vector_type& entries() const { return entries_; }
|
||||
|
||||
private:
|
||||
explicit Data(vector_type entries) : entries_(entries) {}
|
||||
explicit Data(const vector_type& entries) : entries_(entries) {}
|
||||
explicit Data(vector_type&& entries) : entries_(std::move(entries)) {}
|
||||
~Data() override {}
|
||||
|
||||
const vector_type entries_;
|
||||
|
|
|
@ -898,8 +898,7 @@ int NetEqImpl::GetAudioInternal(AudioFrame* audio_frame,
|
|||
|
||||
// We treat it as if all packets referenced to by |last_decoded_packet_infos_|
|
||||
// were mashed together when creating the samples in |algorithm_buffer_|.
|
||||
RtpPacketInfos packet_infos(std::move(last_decoded_packet_infos_));
|
||||
last_decoded_packet_infos_.clear();
|
||||
RtpPacketInfos packet_infos(last_decoded_packet_infos_);
|
||||
|
||||
// Copy samples from |algorithm_buffer_| to |sync_buffer_|.
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue