Store PacketBuffer by value instead of as reference counted object

Bug: None
Change-Id: I5a594972e8a8dad731c927a1a374301e549f5d71
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153887
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29267}
This commit is contained in:
Danil Chapovalov
2019-09-20 17:57:15 +02:00
committed by Commit Bot
parent 3c5f91b748
commit f7457e55fe
9 changed files with 120 additions and 155 deletions

View File

@ -49,7 +49,6 @@ class TestRtpFrameReferenceFinder : public ::testing::Test,
protected:
TestRtpFrameReferenceFinder()
: rand_(0x8739211),
ref_packet_buffer_(new FakePacketBuffer()),
reference_finder_(new RtpFrameReferenceFinder(this)),
frames_from_callback_(FrameComp()) {}
@ -78,15 +77,15 @@ class TestRtpFrameReferenceFinder : public ::testing::Test,
packet.video_header.frame_type = keyframe
? VideoFrameType::kVideoFrameKey
: VideoFrameType::kVideoFrameDelta;
ref_packet_buffer_->InsertPacket(&packet);
packet_buffer_.InsertPacket(&packet);
packet.seqNum = seq_num_end;
packet.video_header.is_last_packet_in_frame = true;
ref_packet_buffer_->InsertPacket(&packet);
packet_buffer_.InsertPacket(&packet);
std::unique_ptr<RtpFrameObject> frame(
new RtpFrameObject(ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0,
0, {}, EncodedImageBuffer::Create(/*size=*/0)));
auto frame = std::make_unique<RtpFrameObject>(
&packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0, RtpPacketInfos(),
EncodedImageBuffer::Create(/*size=*/0));
reference_finder_->ManageFrame(std::move(frame));
}
@ -111,17 +110,17 @@ class TestRtpFrameReferenceFinder : public ::testing::Test,
vp8_header.temporalIdx = tid;
vp8_header.tl0PicIdx = tl0;
vp8_header.layerSync = sync;
ref_packet_buffer_->InsertPacket(&packet);
packet_buffer_.InsertPacket(&packet);
if (seq_num_start != seq_num_end) {
packet.seqNum = seq_num_end;
packet.video_header.is_last_packet_in_frame = true;
ref_packet_buffer_->InsertPacket(&packet);
packet_buffer_.InsertPacket(&packet);
}
std::unique_ptr<RtpFrameObject> frame(
new RtpFrameObject(ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0,
0, {}, EncodedImageBuffer::Create(/*size=*/0)));
auto frame = std::make_unique<RtpFrameObject>(
&packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0, RtpPacketInfos(),
EncodedImageBuffer::Create(/*size=*/0));
reference_finder_->ManageFrame(std::move(frame));
}
@ -157,18 +156,18 @@ class TestRtpFrameReferenceFinder : public ::testing::Test,
vp9_header.ss_data_available = true;
vp9_header.gof = *ss;
}
ref_packet_buffer_->InsertPacket(&packet);
packet_buffer_.InsertPacket(&packet);
if (seq_num_start != seq_num_end) {
packet.video_header.is_last_packet_in_frame = true;
vp9_header.ss_data_available = false;
packet.seqNum = seq_num_end;
ref_packet_buffer_->InsertPacket(&packet);
packet_buffer_.InsertPacket(&packet);
}
std::unique_ptr<RtpFrameObject> frame(
new RtpFrameObject(ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0,
0, {}, EncodedImageBuffer::Create(/*size=*/0)));
auto frame = std::make_unique<RtpFrameObject>(
&packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0, RtpPacketInfos(),
EncodedImageBuffer::Create(/*size=*/0));
reference_finder_->ManageFrame(std::move(frame));
}
@ -200,17 +199,17 @@ class TestRtpFrameReferenceFinder : public ::testing::Test,
vp9_header.num_ref_pics = refs.size();
for (size_t i = 0; i < refs.size(); ++i)
vp9_header.pid_diff[i] = refs[i];
ref_packet_buffer_->InsertPacket(&packet);
packet_buffer_.InsertPacket(&packet);
if (seq_num_start != seq_num_end) {
packet.seqNum = seq_num_end;
packet.video_header.is_last_packet_in_frame = true;
ref_packet_buffer_->InsertPacket(&packet);
packet_buffer_.InsertPacket(&packet);
}
std::unique_ptr<RtpFrameObject> frame(
new RtpFrameObject(ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0,
0, {}, EncodedImageBuffer::Create(/*size=*/0)));
auto frame = std::make_unique<RtpFrameObject>(
&packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0, RtpPacketInfos(),
EncodedImageBuffer::Create(/*size=*/0));
reference_finder_->ManageFrame(std::move(frame));
}
@ -231,17 +230,17 @@ class TestRtpFrameReferenceFinder : public ::testing::Test,
packet.video_header.frame_marking.temporal_id = tid;
packet.video_header.frame_marking.tl0_pic_idx = tl0;
packet.video_header.frame_marking.base_layer_sync = sync;
ref_packet_buffer_->InsertPacket(&packet);
packet_buffer_.InsertPacket(&packet);
if (seq_num_start != seq_num_end) {
packet.seqNum = seq_num_end;
packet.video_header.is_last_packet_in_frame = true;
ref_packet_buffer_->InsertPacket(&packet);
packet_buffer_.InsertPacket(&packet);
}
std::unique_ptr<RtpFrameObject> frame(
new RtpFrameObject(ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0,
0, {}, EncodedImageBuffer::Create(/*size=*/0)));
auto frame = std::make_unique<RtpFrameObject>(
&packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0, RtpPacketInfos(),
EncodedImageBuffer::Create(/*size=*/0));
reference_finder_->ManageFrame(std::move(frame));
}
@ -299,7 +298,7 @@ class TestRtpFrameReferenceFinder : public ::testing::Test,
void RefsToSet(std::set<int64_t>* m) const {}
Random rand_;
rtc::scoped_refptr<FakePacketBuffer> ref_packet_buffer_;
FakePacketBuffer packet_buffer_;
std::unique_ptr<RtpFrameReferenceFinder> reference_finder_;
struct FrameComp {
bool operator()(const std::pair<int64_t, uint8_t> f1,