Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(307)

Side by Side Diff: chromecast/media/cma/ipc/media_message_fifo.cc

Issue 1553503002: Convert Pass()→std::move() in //chromecast (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromecast/media/cma/ipc/media_message_fifo.h" 5 #include "chromecast/media/cma/ipc/media_message_fifo.h"
6 6
7 #include <utility>
8
7 #include "base/atomicops.h" 9 #include "base/atomicops.h"
8 #include "base/bind.h" 10 #include "base/bind.h"
9 #include "base/location.h" 11 #include "base/location.h"
10 #include "base/logging.h" 12 #include "base/logging.h"
11 #include "base/macros.h" 13 #include "base/macros.h"
12 #include "base/single_thread_task_runner.h" 14 #include "base/single_thread_task_runner.h"
13 #include "base/thread_task_runner_handle.h" 15 #include "base/thread_task_runner_handle.h"
14 #include "chromecast/media/cma/base/cma_logging.h" 16 #include "chromecast/media/cma/base/cma_logging.h"
15 #include "chromecast/media/cma/ipc/media_memory_chunk.h" 17 #include "chromecast/media/cma/ipc/media_memory_chunk.h"
16 #include "chromecast/media/cma/ipc/media_message.h" 18 #include "chromecast/media/cma/ipc/media_message.h"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 flag_ = scoped_refptr<MediaMessageFlag>(); 98 flag_ = scoped_refptr<MediaMessageFlag>();
97 if (!release_msg_cb_.is_null()) { 99 if (!release_msg_cb_.is_null()) {
98 if (task_runner_->BelongsToCurrentThread()) { 100 if (task_runner_->BelongsToCurrentThread()) {
99 release_msg_cb_.Run(); 101 release_msg_cb_.Run();
100 } else { 102 } else {
101 task_runner_->PostTask(FROM_HERE, release_msg_cb_); 103 task_runner_->PostTask(FROM_HERE, release_msg_cb_);
102 } 104 }
103 } 105 }
104 } 106 }
105 107
106 MediaMessageFifo::MediaMessageFifo( 108 MediaMessageFifo::MediaMessageFifo(scoped_ptr<MediaMemoryChunk> mem, bool init)
107 scoped_ptr<MediaMemoryChunk> mem, bool init) 109 : mem_(std::move(mem)), weak_factory_(this) {
108 : mem_(mem.Pass()),
109 weak_factory_(this) {
110 CHECK_EQ(reinterpret_cast<uintptr_t>(mem_->data()) % ALIGNOF(Descriptor), 110 CHECK_EQ(reinterpret_cast<uintptr_t>(mem_->data()) % ALIGNOF(Descriptor),
111 0u); 111 0u);
112 CHECK_GE(mem_->size(), sizeof(Descriptor)); 112 CHECK_GE(mem_->size(), sizeof(Descriptor));
113 Descriptor* desc = static_cast<Descriptor*>(mem_->data()); 113 Descriptor* desc = static_cast<Descriptor*>(mem_->data());
114 base_ = static_cast<void*>(&desc->first_item); 114 base_ = static_cast<void*>(&desc->first_item);
115 115
116 // TODO(damienv): remove cast when atomic size_t is defined in Chrome. 116 // TODO(damienv): remove cast when atomic size_t is defined in Chrome.
117 // Currently, the sign differs. 117 // Currently, the sign differs.
118 rd_offset_ = reinterpret_cast<AtomicSize*>(&(desc->rd_offset)); 118 rd_offset_ = reinterpret_cast<AtomicSize*>(&(desc->rd_offset));
119 wr_offset_ = reinterpret_cast<AtomicSize*>(&(desc->wr_offset)); 119 wr_offset_ = reinterpret_cast<AtomicSize*>(&(desc->wr_offset));
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 return scoped_ptr<MediaMemoryChunk>(); 183 return scoped_ptr<MediaMemoryChunk>();
184 wr_offset = 0; 184 wr_offset = 0;
185 CommitInternalWrite(wr_offset); 185 CommitInternalWrite(wr_offset);
186 186
187 } else if (trailing_byte_count < size_to_reserve) { 187 } else if (trailing_byte_count < size_to_reserve) {
188 // At this point, we know we have at least the space to write a message. 188 // At this point, we know we have at least the space to write a message.
189 // However, to avoid splitting a message, a padding message is needed. 189 // However, to avoid splitting a message, a padding message is needed.
190 scoped_ptr<MediaMemoryChunk> mem( 190 scoped_ptr<MediaMemoryChunk> mem(
191 ReserveMemoryNoCheck(trailing_byte_count)); 191 ReserveMemoryNoCheck(trailing_byte_count));
192 scoped_ptr<MediaMessage> padding_message( 192 scoped_ptr<MediaMessage> padding_message(
193 MediaMessage::CreateMessage(PaddingMediaMsg, mem.Pass())); 193 MediaMessage::CreateMessage(PaddingMediaMsg, std::move(mem)));
194 } 194 }
195 195
196 // Recalculate the free size and exit if not enough free space. 196 // Recalculate the free size and exit if not enough free space.
197 wr_offset = internal_wr_offset(); 197 wr_offset = internal_wr_offset();
198 allocated_size = (size_ + wr_offset - rd_offset) % size_; 198 allocated_size = (size_ + wr_offset - rd_offset) % size_;
199 free_size = size_ - 1 - allocated_size; 199 free_size = size_ - 1 - allocated_size;
200 if (free_size < size_to_reserve) 200 if (free_size < size_to_reserve)
201 return scoped_ptr<MediaMemoryChunk>(); 201 return scoped_ptr<MediaMemoryChunk>();
202 202
203 return ReserveMemoryNoCheck(size_to_reserve); 203 return ReserveMemoryNoCheck(size_to_reserve);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 // from being overwritten. 238 // from being overwritten.
239 // The serialized structure starts at offset |rd_offset|. 239 // The serialized structure starts at offset |rd_offset|.
240 scoped_refptr<MediaMessageFlag> rd_flag(new MediaMessageFlag(rd_offset)); 240 scoped_refptr<MediaMessageFlag> rd_flag(new MediaMessageFlag(rd_offset));
241 rd_flags_.push_back(rd_flag); 241 rd_flags_.push_back(rd_flag);
242 scoped_ptr<MediaMemoryChunk> mem( 242 scoped_ptr<MediaMemoryChunk> mem(
243 new FifoOwnedMemory( 243 new FifoOwnedMemory(
244 msg_src, max_msg_size, rd_flag, 244 msg_src, max_msg_size, rd_flag,
245 base::Bind(&MediaMessageFifo::OnRdMemoryReleased, weak_this_))); 245 base::Bind(&MediaMessageFifo::OnRdMemoryReleased, weak_this_)));
246 246
247 // Create the message which wraps its the serialized structure. 247 // Create the message which wraps its the serialized structure.
248 scoped_ptr<MediaMessage> message(MediaMessage::MapMessage(mem.Pass())); 248 scoped_ptr<MediaMessage> message(MediaMessage::MapMessage(std::move(mem)));
249 CHECK(message); 249 CHECK(message);
250 250
251 // Update the internal read pointer. 251 // Update the internal read pointer.
252 rd_offset = (rd_offset + message->size()) % size_; 252 rd_offset = (rd_offset + message->size()) % size_;
253 CommitInternalRead(rd_offset); 253 CommitInternalRead(rd_offset);
254 254
255 return message.Pass(); 255 return message;
256 } 256 }
257 257
258 void MediaMessageFifo::Flush() { 258 void MediaMessageFifo::Flush() {
259 DCHECK(thread_checker_.CalledOnValidThread()); 259 DCHECK(thread_checker_.CalledOnValidThread());
260 260
261 size_t wr_offset = current_wr_offset(); 261 size_t wr_offset = current_wr_offset();
262 262
263 // Invalidate every memory region before flushing. 263 // Invalidate every memory region before flushing.
264 while (!rd_flags_.empty()) { 264 while (!rd_flags_.empty()) {
265 CMALOG(kLogControl) << "Invalidate flag"; 265 CMALOG(kLogControl) << "Invalidate flag";
(...skipping 17 matching lines...) Expand all
283 wr_flags_.push_back(wr_flag); 283 wr_flags_.push_back(wr_flag);
284 scoped_ptr<MediaMemoryChunk> mem( 284 scoped_ptr<MediaMemoryChunk> mem(
285 new FifoOwnedMemory( 285 new FifoOwnedMemory(
286 msg_start, size_to_reserve, wr_flag, 286 msg_start, size_to_reserve, wr_flag,
287 base::Bind(&MediaMessageFifo::OnWrMemoryReleased, weak_this_))); 287 base::Bind(&MediaMessageFifo::OnWrMemoryReleased, weak_this_)));
288 288
289 // Update the internal write pointer. 289 // Update the internal write pointer.
290 wr_offset = (wr_offset + size_to_reserve) % size_; 290 wr_offset = (wr_offset + size_to_reserve) % size_;
291 CommitInternalWrite(wr_offset); 291 CommitInternalWrite(wr_offset);
292 292
293 return mem.Pass(); 293 return mem;
294 } 294 }
295 295
296 void MediaMessageFifo::OnWrMemoryReleased() { 296 void MediaMessageFifo::OnWrMemoryReleased() {
297 DCHECK(thread_checker_.CalledOnValidThread()); 297 DCHECK(thread_checker_.CalledOnValidThread());
298 298
299 if (wr_flags_.empty()) { 299 if (wr_flags_.empty()) {
300 // Sanity check: when there is no protected memory area, 300 // Sanity check: when there is no protected memory area,
301 // the external write offset has no reason to be different from 301 // the external write offset has no reason to be different from
302 // the internal write offset. 302 // the internal write offset.
303 DCHECK_EQ(current_wr_offset(), internal_wr_offset()); 303 DCHECK_EQ(current_wr_offset(), internal_wr_offset());
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 void MediaMessageFifo::CommitInternalRead(size_t new_rd_offset) { 396 void MediaMessageFifo::CommitInternalRead(size_t new_rd_offset) {
397 internal_rd_offset_ = new_rd_offset; 397 internal_rd_offset_ = new_rd_offset;
398 } 398 }
399 399
400 void MediaMessageFifo::CommitInternalWrite(size_t new_wr_offset) { 400 void MediaMessageFifo::CommitInternalWrite(size_t new_wr_offset) {
401 internal_wr_offset_ = new_wr_offset; 401 internal_wr_offset_ = new_wr_offset;
402 } 402 }
403 403
404 } // namespace media 404 } // namespace media
405 } // namespace chromecast 405 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/media/cma/ipc/media_message.cc ('k') | chromecast/media/cma/ipc_streamer/av_streamer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698