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

Side by Side Diff: services/media/factory_service/media_player_impl.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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "base/logging.h" 5 #include "base/logging.h"
6 #include "mojo/public/cpp/application/connect.h" 6 #include "mojo/public/cpp/application/connect.h"
7 #include "mojo/services/media/common/cpp/timeline.h" 7 #include "mojo/services/media/common/cpp/timeline.h"
8 #include "services/media/factory_service/media_player_impl.h" 8 #include "services/media/factory_service/media_player_impl.h"
9 #include "services/media/framework/parts/reader.h" 9 #include "services/media/framework/parts/reader.h"
10 #include "services/media/framework/util/callback_joiner.h" 10 #include "services/media/framework/util/callback_joiner.h"
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 target_position_ = position; 289 target_position_ = position;
290 Update(); 290 Update();
291 } 291 }
292 292
293 void MediaPlayerImpl::PrepareStream(Stream* stream, 293 void MediaPlayerImpl::PrepareStream(Stream* stream,
294 size_t index, 294 size_t index,
295 const MediaTypePtr& input_media_type, 295 const MediaTypePtr& input_media_type,
296 const std::function<void()>& callback) { 296 const std::function<void()>& callback) {
297 DCHECK(factory_); 297 DCHECK(factory_);
298 298
299 demux_->GetProducer(index, GetProxy(&stream->encoded_producer_)); 299 demux_->GetPacketProducer(index, GetProxy(&stream->encoded_producer_));
300 300
301 if (input_media_type->encoding != MediaType::kAudioEncodingLpcm && 301 if (input_media_type->encoding != MediaType::kAudioEncodingLpcm &&
302 input_media_type->encoding != MediaType::kVideoEncodingUncompressed) { 302 input_media_type->encoding != MediaType::kVideoEncodingUncompressed) {
303 std::shared_ptr<CallbackJoiner> callback_joiner = CallbackJoiner::Create(); 303 std::shared_ptr<CallbackJoiner> callback_joiner = CallbackJoiner::Create();
304 304
305 // Compressed media. Insert a decoder in front of the sink. The sink would 305 // Compressed media. Insert a decoder in front of the sink. The sink would
306 // add its own internal decoder, but we want to test the decoder. 306 // add its own internal decoder, but we want to test the decoder.
307 factory_->CreateDecoder(input_media_type.Clone(), 307 factory_->CreateDecoder(input_media_type.Clone(),
308 GetProxy(&stream->decoder_)); 308 GetProxy(&stream->decoder_));
309 309
310 MediaConsumerPtr decoder_consumer; 310 MediaPacketConsumerPtr decoder_consumer;
311 stream->decoder_->GetConsumer(GetProxy(&decoder_consumer)); 311 stream->decoder_->GetPacketConsumer(GetProxy(&decoder_consumer));
312 312
313 callback_joiner->Spawn(); 313 callback_joiner->Spawn();
314 stream->encoded_producer_->Connect(decoder_consumer.Pass(), 314 stream->encoded_producer_->Connect(decoder_consumer.Pass(),
315 [stream, callback_joiner]() { 315 [stream, callback_joiner]() {
316 stream->encoded_producer_.reset(); 316 stream->encoded_producer_.reset();
317 callback_joiner->Complete(); 317 callback_joiner->Complete();
318 }); 318 });
319 319
320 callback_joiner->Spawn(); 320 callback_joiner->Spawn();
321 stream->decoder_->GetOutputType( 321 stream->decoder_->GetOutputType([this, stream, callback_joiner](
322 [this, stream, callback_joiner](MediaTypePtr output_type) { 322 MediaTypePtr output_type) {
323 stream->decoder_->GetProducer(GetProxy(&stream->decoded_producer_)); 323 stream->decoder_->GetPacketProducer(GetProxy(&stream->decoded_producer_));
324 CreateSink(stream, output_type, callback_joiner->NewCallback()); 324 CreateSink(stream, output_type, callback_joiner->NewCallback());
325 callback_joiner->Complete(); 325 callback_joiner->Complete();
326 }); 326 });
327 327
328 callback_joiner->WhenJoined(callback); 328 callback_joiner->WhenJoined(callback);
329 } else { 329 } else {
330 // Uncompressed media. Connect the demux stream directly to the sink. This 330 // Uncompressed media. Connect the demux stream directly to the sink. This
331 // would work for compressed media as well (the sink would decode), but we 331 // would work for compressed media as well (the sink would decode), but we
332 // want to test the decoder. 332 // want to test the decoder.
333 stream->decoded_producer_ = stream->encoded_producer_.Pass(); 333 stream->decoded_producer_ = stream->encoded_producer_.Pass();
334 CreateSink(stream, input_media_type, callback); 334 CreateSink(stream, input_media_type, callback);
335 } 335 }
336 } 336 }
337 337
338 void MediaPlayerImpl::CreateSink(Stream* stream, 338 void MediaPlayerImpl::CreateSink(Stream* stream,
339 const MediaTypePtr& input_media_type, 339 const MediaTypePtr& input_media_type,
340 const std::function<void()>& callback) { 340 const std::function<void()>& callback) {
341 DCHECK(input_media_type); 341 DCHECK(input_media_type);
342 DCHECK(stream->decoded_producer_); 342 DCHECK(stream->decoded_producer_);
343 DCHECK(factory_); 343 DCHECK(factory_);
344 344
345 factory_->CreateSink(stream->renderer_.Pass(), input_media_type.Clone(), 345 factory_->CreateSink(stream->renderer_.Pass(), input_media_type.Clone(),
346 GetProxy(&stream->sink_)); 346 GetProxy(&stream->sink_));
347 347
348 MediaTimelineControlPointPtr timeline_control_point; 348 MediaTimelineControlPointPtr timeline_control_point;
349 stream->sink_->GetTimelineControlPoint(GetProxy(&timeline_control_point)); 349 stream->sink_->GetTimelineControlPoint(GetProxy(&timeline_control_point));
350 350
351 timeline_controller_->AddControlPoint(timeline_control_point.Pass()); 351 timeline_controller_->AddControlPoint(timeline_control_point.Pass());
352 352
353 MediaConsumerPtr consumer; 353 MediaPacketConsumerPtr consumer;
354 stream->sink_->GetConsumer(GetProxy(&consumer)); 354 stream->sink_->GetPacketConsumer(GetProxy(&consumer));
355 355
356 stream->decoded_producer_->Connect(consumer.Pass(), 356 stream->decoded_producer_->Connect(consumer.Pass(),
357 [this, callback, stream]() { 357 [this, callback, stream]() {
358 stream->decoded_producer_.reset(); 358 stream->decoded_producer_.reset();
359 callback(); 359 callback();
360 }); 360 });
361 } 361 }
362 362
363 void MediaPlayerImpl::HandleDemuxMetadataUpdates(uint64_t version, 363 void MediaPlayerImpl::HandleDemuxMetadataUpdates(uint64_t version,
364 MediaMetadataPtr metadata) { 364 MediaMetadataPtr metadata) {
(...skipping 24 matching lines...) Expand all
389 HandleTimelineControlPointStatusUpdates(version, status.Pass()); 389 HandleTimelineControlPointStatusUpdates(version, status.Pass());
390 }); 390 });
391 } 391 }
392 392
393 MediaPlayerImpl::Stream::Stream() {} 393 MediaPlayerImpl::Stream::Stream() {}
394 394
395 MediaPlayerImpl::Stream::~Stream() {} 395 MediaPlayerImpl::Stream::~Stream() {}
396 396
397 } // namespace media 397 } // namespace media
398 } // namespace mojo 398 } // namespace mojo
OLDNEW
« no previous file with comments | « services/media/factory_service/media_player_impl.h ('k') | services/media/factory_service/media_sink_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698