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

Side by Side Diff: media/base/pipeline.cc

Issue 870693002: Require Renderer::Initialize() to return a status code via callback. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "media/base/pipeline.h" 5 #include "media/base/pipeline.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 PipelineStatusCB done_cb = 328 PipelineStatusCB done_cb =
329 base::Bind(&Pipeline::StateTransitionTask, weak_factory_.GetWeakPtr()); 329 base::Bind(&Pipeline::StateTransitionTask, weak_factory_.GetWeakPtr());
330 330
331 // Switch states, performing any entrance actions for the new state as well. 331 // Switch states, performing any entrance actions for the new state as well.
332 SetState(GetNextState()); 332 SetState(GetNextState());
333 switch (state_) { 333 switch (state_) {
334 case kInitDemuxer: 334 case kInitDemuxer:
335 return InitializeDemuxer(done_cb); 335 return InitializeDemuxer(done_cb);
336 336
337 case kInitRenderer: 337 case kInitRenderer:
338 return InitializeRenderer(base::Bind(done_cb, PIPELINE_OK)); 338 return InitializeRenderer(done_cb);
339 339
340 case kPlaying: 340 case kPlaying:
341 // Report metadata the first time we enter the playing state. 341 // Report metadata the first time we enter the playing state.
342 if (!is_initialized_) { 342 if (!is_initialized_) {
343 is_initialized_ = true; 343 is_initialized_ = true;
344 ReportMetadata(); 344 ReportMetadata();
345 start_timestamp_ = demuxer_->GetStartTime(); 345 start_timestamp_ = demuxer_->GetStartTime();
346 } 346 }
347 347
348 DCHECK(start_timestamp_ >= base::TimeDelta()); 348 DCHECK(start_timestamp_ >= base::TimeDelta());
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 const AddTextTrackDoneCB& done_cb) { 695 const AddTextTrackDoneCB& done_cb) {
696 DCHECK(task_runner_->BelongsToCurrentThread()); 696 DCHECK(task_runner_->BelongsToCurrentThread());
697 add_text_track_cb_.Run(config, done_cb); 697 add_text_track_cb_.Run(config, done_cb);
698 } 698 }
699 699
700 void Pipeline::InitializeDemuxer(const PipelineStatusCB& done_cb) { 700 void Pipeline::InitializeDemuxer(const PipelineStatusCB& done_cb) {
701 DCHECK(task_runner_->BelongsToCurrentThread()); 701 DCHECK(task_runner_->BelongsToCurrentThread());
702 demuxer_->Initialize(this, done_cb, text_renderer_); 702 demuxer_->Initialize(this, done_cb, text_renderer_);
703 } 703 }
704 704
705 void Pipeline::InitializeRenderer(const base::Closure& done_cb) { 705 void Pipeline::InitializeRenderer(const PipelineStatusCB& done_cb) {
706 DCHECK(task_runner_->BelongsToCurrentThread()); 706 DCHECK(task_runner_->BelongsToCurrentThread());
707 707
708 if (!demuxer_->GetStream(DemuxerStream::AUDIO) && 708 if (!demuxer_->GetStream(DemuxerStream::AUDIO) &&
709 !demuxer_->GetStream(DemuxerStream::VIDEO)) { 709 !demuxer_->GetStream(DemuxerStream::VIDEO)) {
710 { 710 {
711 base::AutoLock auto_lock(lock_); 711 base::AutoLock auto_lock(lock_);
712 renderer_.reset(); 712 renderer_.reset();
713 } 713 }
714 OnError(PIPELINE_ERROR_COULD_NOT_RENDER); 714 OnError(PIPELINE_ERROR_COULD_NOT_RENDER);
715 return; 715 return;
(...skipping 24 matching lines...) Expand all
740 metadata_cb_.Run(metadata); 740 metadata_cb_.Run(metadata);
741 } 741 }
742 742
743 void Pipeline::BufferingStateChanged(BufferingState new_buffering_state) { 743 void Pipeline::BufferingStateChanged(BufferingState new_buffering_state) {
744 DVLOG(1) << __FUNCTION__ << "(" << new_buffering_state << ") "; 744 DVLOG(1) << __FUNCTION__ << "(" << new_buffering_state << ") ";
745 DCHECK(task_runner_->BelongsToCurrentThread()); 745 DCHECK(task_runner_->BelongsToCurrentThread());
746 buffering_state_cb_.Run(new_buffering_state); 746 buffering_state_cb_.Run(new_buffering_state);
747 } 747 }
748 748
749 } // namespace media 749 } // namespace media
OLDNEW
« no previous file with comments | « media/base/pipeline.h ('k') | media/base/pipeline_unittest.cc » ('j') | media/base/renderer.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698