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

Side by Side Diff: mojo/services/media/common/cpp/circular_buffer_media_pipe_adapter.cc

Issue 2097953002: Motown: Rename MediaProducer/Consumer to MediaPacketProducer/Consumer (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fixed #ifndef guards Created 4 years, 5 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "mojo/public/cpp/environment/logging.h" 5 #include "mojo/public/cpp/environment/logging.h"
6 #include "mojo/public/cpp/utility/run_loop.h" 6 #include "mojo/public/cpp/utility/run_loop.h"
7 #include "mojo/services/media/common/cpp/circular_buffer_media_pipe_adapter.h" 7 #include "mojo/services/media/common/cpp/circular_buffer_media_pipe_adapter.h"
8 #include "mojo/services/media/common/interfaces/media_common.mojom.h" 8 #include "mojo/services/media/common/interfaces/media_common.mojom.h"
9 #include "mojo/services/media/common/interfaces/media_transport.mojom.h" 9 #include "mojo/services/media/common/interfaces/media_transport.mojom.h"
10 10
11 namespace mojo { 11 namespace mojo {
12 namespace media { 12 namespace media {
13 13
14 constexpr size_t CircularBufferMediaPipeAdapter::MappedPacket::kMaxRegions; 14 constexpr size_t CircularBufferMediaPipeAdapter::MappedPacket::kMaxRegions;
15 CircularBufferMediaPipeAdapter::MappedPacket::MappedPacket() { } 15 CircularBufferMediaPipeAdapter::MappedPacket::MappedPacket() { }
16 CircularBufferMediaPipeAdapter::MappedPacket::~MappedPacket() { 16 CircularBufferMediaPipeAdapter::MappedPacket::~MappedPacket() {
17 // If packet_ is non-null, it means that someone created a MappedPacket using 17 // If packet_ is non-null, it means that someone created a MappedPacket using
18 // CreateMediaPacket, but they never sent it, and never canceled it. 18 // CreateMediaPacket, but they never sent it, and never canceled it.
19 // 19 //
20 // TODO(johngro): Should we maintain a reference to our pipe adapter and just 20 // TODO(johngro): Should we maintain a reference to our pipe adapter and just
21 // auto cancel this packet if the user forgets? This could be Very Bad if 21 // auto cancel this packet if the user forgets? This could be Very Bad if
22 // they have created and forgotten about multiple packets. 22 // they have created and forgotten about multiple packets.
23 MOJO_DCHECK(packet_.is_null()); 23 MOJO_DCHECK(packet_.is_null());
24 } 24 }
25 25
26 CircularBufferMediaPipeAdapter::PacketState::PacketState( 26 CircularBufferMediaPipeAdapter::PacketState::PacketState(
27 uint64_t post_consume_rd, 27 uint64_t post_consume_rd,
28 uint32_t seq_num, 28 uint32_t seq_num,
29 const MediaConsumer::SendPacketCallback& cbk) 29 const MediaPacketConsumer::SendPacketCallback& cbk)
30 : post_consume_rd_(post_consume_rd), 30 : post_consume_rd_(post_consume_rd),
31 seq_num_(seq_num), 31 seq_num_(seq_num),
32 cbk_(cbk) {} 32 cbk_(cbk) {}
33 CircularBufferMediaPipeAdapter::PacketState::~PacketState() { } 33 CircularBufferMediaPipeAdapter::PacketState::~PacketState() { }
34 34
35 CircularBufferMediaPipeAdapter::CircularBufferMediaPipeAdapter( 35 CircularBufferMediaPipeAdapter::CircularBufferMediaPipeAdapter(
36 MediaConsumerPtr pipe) 36 MediaPacketConsumerPtr pipe)
37 : pipe_(pipe.Pass()) 37 : pipe_(pipe.Pass())
38 , thiz_(new CircularBufferMediaPipeAdapter*(this)) { 38 , thiz_(new CircularBufferMediaPipeAdapter*(this)) {
39 MOJO_DCHECK(pipe_); 39 MOJO_DCHECK(pipe_);
40 MOJO_DCHECK(RunLoop::current()); 40 MOJO_DCHECK(RunLoop::current());
41 41
42 pipe_flush_cbk_ = MediaConsumer::FlushCallback( 42 pipe_flush_cbk_ = MediaPacketConsumer::FlushCallback(
43 [this] () { 43 [this] () {
44 HandleFlush(); 44 HandleFlush();
45 }); 45 });
46 46
47 pipe_.set_connection_error_handler( 47 pipe_.set_connection_error_handler(
48 [this]() { 48 [this]() {
49 Fault(MediaResult::CONNECTION_LOST); 49 Fault(MediaResult::CONNECTION_LOST);
50 }); 50 });
51 51
52 std::shared_ptr<CircularBufferMediaPipeAdapter*> thiz(thiz_); 52 std::shared_ptr<CircularBufferMediaPipeAdapter*> thiz(thiz_);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 235
236 // now that we have moved the write pointer, we may be signalled again. 236 // now that we have moved the write pointer, we may be signalled again.
237 // Need to re-evaluate. 237 // Need to re-evaluate.
238 UpdateSignalled(); 238 UpdateSignalled();
239 239
240 return MediaResult::OK; 240 return MediaResult::OK;
241 } 241 }
242 242
243 MediaResult CircularBufferMediaPipeAdapter::SendMediaPacket( 243 MediaResult CircularBufferMediaPipeAdapter::SendMediaPacket(
244 MappedPacket* packet, 244 MappedPacket* packet,
245 const MediaConsumer::SendPacketCallback& cbk) { 245 const MediaPacketConsumer::SendPacketCallback& cbk) {
246 MOJO_DCHECK(packet && !packet->packet_.is_null()); 246 MOJO_DCHECK(packet && !packet->packet_.is_null());
247 if (!packet || packet->packet_.is_null()) { 247 if (!packet || packet->packet_.is_null()) {
248 return MediaResult::INVALID_ARGUMENT; 248 return MediaResult::INVALID_ARGUMENT;
249 } 249 }
250 250
251 const MediaPacketPtr& p = packet->packet_; 251 const MediaPacketPtr& p = packet->packet_;
252 MOJO_DCHECK(!p->extra_payload.is_null()); 252 MOJO_DCHECK(!p->extra_payload.is_null());
253 MOJO_DCHECK(p->extra_payload.size() <= 1u); 253 MOJO_DCHECK(p->extra_payload.size() <= 1u);
254 254
255 uint64_t post_consume_rd = p->extra_payload.size() 255 uint64_t post_consume_rd = p->extra_payload.size()
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 288
289 MOJO_DCHECK(post_consume_rd <= buffer_size_); 289 MOJO_DCHECK(post_consume_rd <= buffer_size_);
290 if (post_consume_rd == buffer_size_) 290 if (post_consume_rd == buffer_size_)
291 post_consume_rd = 0; 291 post_consume_rd = 0;
292 292
293 uint32_t seq_num = seq_num_gen_++; 293 uint32_t seq_num = seq_num_gen_++;
294 in_flight_queue_.emplace_back(post_consume_rd, seq_num, cbk); 294 in_flight_queue_.emplace_back(post_consume_rd, seq_num, cbk);
295 295
296 pipe_->SendPacket( 296 pipe_->SendPacket(
297 packet->packet_.Pass(), 297 packet->packet_.Pass(),
298 [this, seq_num](MediaConsumer::SendResult result) { 298 [this, seq_num](MediaPacketConsumer::SendResult result) {
299 HandleSendPacket(seq_num, result); 299 HandleSendPacket(seq_num, result);
300 }); 300 });
301 301
302 packet->Reset(); 302 packet->Reset();
303 303
304 return MediaResult::OK; 304 return MediaResult::OK;
305 } 305 }
306 306
307 MediaResult CircularBufferMediaPipeAdapter::CancelMediaPacket( 307 MediaResult CircularBufferMediaPipeAdapter::CancelMediaPacket(
308 MappedPacket* packet) { 308 MappedPacket* packet) {
(...skipping 28 matching lines...) Expand all
337 flush_in_progress_ = true; 337 flush_in_progress_ = true;
338 flush_generation_++; 338 flush_generation_++;
339 339
340 pipe_->Flush(pipe_flush_cbk_); 340 pipe_->Flush(pipe_flush_cbk_);
341 341
342 return MediaResult::OK; 342 return MediaResult::OK;
343 } 343 }
344 344
345 void CircularBufferMediaPipeAdapter::HandleSendPacket( 345 void CircularBufferMediaPipeAdapter::HandleSendPacket(
346 uint32_t seq_num, 346 uint32_t seq_num,
347 MediaConsumer::SendResult result) { 347 MediaPacketConsumer::SendResult result) {
348 MediaConsumer::SendPacketCallback cbk; 348 MediaPacketConsumer::SendPacketCallback cbk;
349 349
350 do { 350 do {
351 // There should be at least one element in the in-flight queue, and the 351 // There should be at least one element in the in-flight queue, and the
352 // front of the queue's sequence number should match the sequence number of 352 // front of the queue's sequence number should match the sequence number of
353 // the payload being returned to us. 353 // the payload being returned to us.
354 if (!in_flight_queue_.size() || 354 if (!in_flight_queue_.size() ||
355 (in_flight_queue_.front().seq_num_ != seq_num)) { 355 (in_flight_queue_.front().seq_num_ != seq_num)) {
356 Fault(MediaResult::UNKNOWN_ERROR); 356 Fault(MediaResult::UNKNOWN_ERROR);
357 break; 357 break;
358 } 358 }
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 uint64_t CircularBufferMediaPipeAdapter::GetBufferSize() const { 515 uint64_t CircularBufferMediaPipeAdapter::GetBufferSize() const {
516 if (nullptr == buffer_) 516 if (nullptr == buffer_)
517 return 0; 517 return 0;
518 518
519 MOJO_DCHECK(buffer_size_); 519 MOJO_DCHECK(buffer_size_);
520 return buffer_size_ - 1; 520 return buffer_size_ - 1;
521 } 521 }
522 522
523 } // namespace media 523 } // namespace media
524 } // namespace mojo 524 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698