Commit 07b17a8e authored by avi's avatar avi Committed by Commit bot

Remove use of stl_util in rtc.

BUG=555865

Review-Url: https://codereview.chromium.org/2287443003
Cr-Commit-Position: refs/heads/master@{#415327}
parent 43f06b32
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/metrics/histogram.h" #include "base/metrics/histogram.h"
#include "base/numerics/safe_conversions.h" #include "base/numerics/safe_conversions.h"
#include "base/stl_util.h"
#include "base/synchronization/waitable_event.h" #include "base/synchronization/waitable_event.h"
#include "base/task_runner_util.h" #include "base/task_runner_util.h"
#include "content/renderer/media/webrtc/webrtc_video_frame_adapter.h" #include "content/renderer/media/webrtc/webrtc_video_frame_adapter.h"
...@@ -91,11 +90,6 @@ RTCVideoDecoder::~RTCVideoDecoder() { ...@@ -91,11 +90,6 @@ RTCVideoDecoder::~RTCVideoDecoder() {
DestroyVDA(); DestroyVDA();
// Delete all shared memories. // Delete all shared memories.
base::STLDeleteElements(&available_shm_segments_);
base::STLDeleteValues(&bitstream_buffers_in_decoder_);
base::STLDeleteContainerPairFirstPointers(decode_buffers_.begin(),
decode_buffers_.end());
decode_buffers_.clear();
ClearPendingBuffers(); ClearPendingBuffers();
} }
...@@ -493,8 +487,7 @@ void RTCVideoDecoder::NotifyEndOfBitstreamBuffer(int32_t id) { ...@@ -493,8 +487,7 @@ void RTCVideoDecoder::NotifyEndOfBitstreamBuffer(int32_t id) {
DVLOG(3) << "NotifyEndOfBitstreamBuffer. id=" << id; DVLOG(3) << "NotifyEndOfBitstreamBuffer. id=" << id;
DCheckGpuVideoAcceleratorFactoriesTaskRunnerIsCurrent(); DCheckGpuVideoAcceleratorFactoriesTaskRunnerIsCurrent();
std::map<int32_t, base::SharedMemory*>::iterator it = auto it = bitstream_buffers_in_decoder_.find(id);
bitstream_buffers_in_decoder_.find(id);
if (it == bitstream_buffers_in_decoder_.end()) { if (it == bitstream_buffers_in_decoder_.end()) {
NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE); NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE);
NOTREACHED() << "Missing bitstream buffer: " << id; NOTREACHED() << "Missing bitstream buffer: " << id;
...@@ -503,7 +496,7 @@ void RTCVideoDecoder::NotifyEndOfBitstreamBuffer(int32_t id) { ...@@ -503,7 +496,7 @@ void RTCVideoDecoder::NotifyEndOfBitstreamBuffer(int32_t id) {
{ {
base::AutoLock auto_lock(lock_); base::AutoLock auto_lock(lock_);
PutSHM_Locked(std::unique_ptr<base::SharedMemory>(it->second)); PutSHM_Locked(std::move(it->second));
} }
bitstream_buffers_in_decoder_.erase(it); bitstream_buffers_in_decoder_.erase(it);
...@@ -562,7 +555,7 @@ void RTCVideoDecoder::RequestBufferDecode() { ...@@ -562,7 +555,7 @@ void RTCVideoDecoder::RequestBufferDecode() {
// Do not request decode if VDA is resetting. // Do not request decode if VDA is resetting.
if (decode_buffers_.empty() || state_ == RESETTING) if (decode_buffers_.empty() || state_ == RESETTING)
return; return;
shm_buffer.reset(decode_buffers_.front().first); shm_buffer = std::move(decode_buffers_.front().first);
buffer_data = decode_buffers_.front().second; buffer_data = decode_buffers_.front().second;
decode_buffers_.pop_front(); decode_buffers_.pop_front();
// Drop the buffers before Release is called. // Drop the buffers before Release is called.
...@@ -577,9 +570,10 @@ void RTCVideoDecoder::RequestBufferDecode() { ...@@ -577,9 +570,10 @@ void RTCVideoDecoder::RequestBufferDecode() {
media::BitstreamBuffer bitstream_buffer( media::BitstreamBuffer bitstream_buffer(
buffer_data.bitstream_buffer_id, shm_buffer->handle(), buffer_data.size, buffer_data.bitstream_buffer_id, shm_buffer->handle(), buffer_data.size,
0, base::TimeDelta::FromInternalValue(buffer_data.timestamp)); 0, base::TimeDelta::FromInternalValue(buffer_data.timestamp));
const bool inserted = const bool inserted = bitstream_buffers_in_decoder_
bitstream_buffers_in_decoder_.insert( .insert(std::make_pair(bitstream_buffer.id(),
std::make_pair(bitstream_buffer.id(), shm_buffer.release())).second; std::move(shm_buffer)))
.second;
DCHECK(inserted) << "bitstream_buffer_id " << bitstream_buffer.id() DCHECK(inserted) << "bitstream_buffer_id " << bitstream_buffer.id()
<< " existed already in bitstream_buffers_in_decoder_"; << " existed already in bitstream_buffers_in_decoder_";
RecordBufferData(buffer_data); RecordBufferData(buffer_data);
...@@ -612,11 +606,9 @@ void RTCVideoDecoder::SaveToDecodeBuffers_Locked( ...@@ -612,11 +606,9 @@ void RTCVideoDecoder::SaveToDecodeBuffers_Locked(
std::unique_ptr<base::SharedMemory> shm_buffer, std::unique_ptr<base::SharedMemory> shm_buffer,
const BufferData& buffer_data) { const BufferData& buffer_data) {
memcpy(shm_buffer->memory(), input_image._buffer, input_image._length); memcpy(shm_buffer->memory(), input_image._buffer, input_image._length);
std::pair<base::SharedMemory*, BufferData> buffer_pair =
std::make_pair(shm_buffer.release(), buffer_data);
// Store the buffer and the metadata to the queue. // Store the buffer and the metadata to the queue.
decode_buffers_.push_back(buffer_pair); decode_buffers_.emplace_back(std::move(shm_buffer), buffer_data);
} }
bool RTCVideoDecoder::SaveToPendingBuffers_Locked( bool RTCVideoDecoder::SaveToPendingBuffers_Locked(
...@@ -785,8 +777,8 @@ void RTCVideoDecoder::DestroyVDA() { ...@@ -785,8 +777,8 @@ void RTCVideoDecoder::DestroyVDA() {
base::AutoLock auto_lock(lock_); base::AutoLock auto_lock(lock_);
// Put the buffers back in case we restart the decoder. // Put the buffers back in case we restart the decoder.
for (const auto& buffer : bitstream_buffers_in_decoder_) for (auto& buffer : bitstream_buffers_in_decoder_)
PutSHM_Locked(std::unique_ptr<base::SharedMemory>(buffer.second)); PutSHM_Locked(std::move(buffer.second));
bitstream_buffers_in_decoder_.clear(); bitstream_buffers_in_decoder_.clear();
state_ = UNINITIALIZED; state_ = UNINITIALIZED;
...@@ -797,7 +789,8 @@ std::unique_ptr<base::SharedMemory> RTCVideoDecoder::GetSHM_Locked( ...@@ -797,7 +789,8 @@ std::unique_ptr<base::SharedMemory> RTCVideoDecoder::GetSHM_Locked(
// Reuse a SHM if possible. // Reuse a SHM if possible.
if (!available_shm_segments_.empty() && if (!available_shm_segments_.empty() &&
available_shm_segments_.back()->mapped_size() >= min_size) { available_shm_segments_.back()->mapped_size() >= min_size) {
std::unique_ptr<base::SharedMemory> buffer(available_shm_segments_.back()); std::unique_ptr<base::SharedMemory> buffer =
std::move(available_shm_segments_.back());
available_shm_segments_.pop_back(); available_shm_segments_.pop_back();
return buffer; return buffer;
} }
...@@ -812,7 +805,7 @@ std::unique_ptr<base::SharedMemory> RTCVideoDecoder::GetSHM_Locked( ...@@ -812,7 +805,7 @@ std::unique_ptr<base::SharedMemory> RTCVideoDecoder::GetSHM_Locked(
} }
if (num_shm_buffers_ != 0) { if (num_shm_buffers_ != 0) {
base::STLDeleteElements(&available_shm_segments_); available_shm_segments_.clear();
num_shm_buffers_ = 0; num_shm_buffers_ = 0;
} }
...@@ -829,7 +822,7 @@ std::unique_ptr<base::SharedMemory> RTCVideoDecoder::GetSHM_Locked( ...@@ -829,7 +822,7 @@ std::unique_ptr<base::SharedMemory> RTCVideoDecoder::GetSHM_Locked(
void RTCVideoDecoder::PutSHM_Locked( void RTCVideoDecoder::PutSHM_Locked(
std::unique_ptr<base::SharedMemory> shm_buffer) { std::unique_ptr<base::SharedMemory> shm_buffer) {
lock_.AssertAcquired(); lock_.AssertAcquired();
available_shm_segments_.push_back(shm_buffer.release()); available_shm_segments_.push_back(std::move(shm_buffer));
} }
void RTCVideoDecoder::CreateSHM(size_t count, size_t size) { void RTCVideoDecoder::CreateSHM(size_t count, size_t size) {
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <deque> #include <deque>
#include <list> #include <list>
#include <map> #include <map>
#include <memory>
#include <set> #include <set>
#include <utility> #include <utility>
...@@ -238,8 +239,9 @@ class CONTENT_EXPORT RTCVideoDecoder ...@@ -238,8 +239,9 @@ class CONTENT_EXPORT RTCVideoDecoder
std::list<BufferData> input_buffer_data_; std::list<BufferData> input_buffer_data_;
// A map from bitstream buffer IDs to bitstream buffers that are being // A map from bitstream buffer IDs to bitstream buffers that are being
// processed by VDA. The map owns SHM buffers. // processed by VDA.
std::map<int32_t, base::SharedMemory*> bitstream_buffers_in_decoder_; std::map<int32_t, std::unique_ptr<base::SharedMemory>>
bitstream_buffers_in_decoder_;
// A map from picture buffer IDs to texture-backed picture buffers. // A map from picture buffer IDs to texture-backed picture buffers.
std::map<int32_t, media::PictureBuffer> assigned_picture_buffers_; std::map<int32_t, media::PictureBuffer> assigned_picture_buffers_;
...@@ -271,17 +273,17 @@ class CONTENT_EXPORT RTCVideoDecoder ...@@ -271,17 +273,17 @@ class CONTENT_EXPORT RTCVideoDecoder
// Shared-memory buffer pool. Since allocating SHM segments requires a // Shared-memory buffer pool. Since allocating SHM segments requires a
// round-trip to the browser process, we keep allocation out of the // round-trip to the browser process, we keep allocation out of the
// steady-state of the decoder. The vector owns SHM buffers. Guarded by // steady-state of the decoder. Guarded by |lock_|.
// |lock_|. std::vector<std::unique_ptr<base::SharedMemory>> available_shm_segments_;
std::vector<base::SharedMemory*> available_shm_segments_;
// A queue storing WebRTC encoding images (and their metadata) that are // A queue storing WebRTC encoding images (and their metadata) that are
// waiting for the shared memory. Guarded by |lock_|. // waiting for the shared memory. Guarded by |lock_|.
std::deque<std::pair<webrtc::EncodedImage, BufferData>> pending_buffers_; std::deque<std::pair<webrtc::EncodedImage, BufferData>> pending_buffers_;
// A queue storing buffers (and their metadata) that will be sent to VDA for // A queue storing buffers (and their metadata) that will be sent to VDA for
// decode. The queue owns SHM buffers. Guarded by |lock_|. // decode. Guarded by |lock_|.
std::deque<std::pair<base::SharedMemory*, BufferData>> decode_buffers_; std::deque<std::pair<std::unique_ptr<base::SharedMemory>, BufferData>>
decode_buffers_;
// The id that will be given to the next bitstream buffer. Guarded by |lock_|. // The id that will be given to the next bitstream buffer. Guarded by |lock_|.
int32_t next_bitstream_buffer_id_; int32_t next_bitstream_buffer_id_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment