OLD | NEW |
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/pipeline/media_pipeline_impl.h" | 5 #include "chromecast/media/cma/pipeline/media_pipeline_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 if (clock_device_->GetState() == MediaClockDevice::kStateUninitialized && | 137 if (clock_device_->GetState() == MediaClockDevice::kStateUninitialized && |
138 !clock_device_->SetState(MediaClockDevice::kStateIdle)) { | 138 !clock_device_->SetState(MediaClockDevice::kStateIdle)) { |
139 status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED); | 139 status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED); |
140 return; | 140 return; |
141 } | 141 } |
142 has_audio_ = true; | 142 has_audio_ = true; |
143 audio_pipeline_->Initialize(config, frame_provider.Pass(), status_cb); | 143 audio_pipeline_->Initialize(config, frame_provider.Pass(), status_cb); |
144 } | 144 } |
145 | 145 |
146 void MediaPipelineImpl::InitializeVideo( | 146 void MediaPipelineImpl::InitializeVideo( |
147 const ::media::VideoDecoderConfig& config, | 147 const std::vector<::media::VideoDecoderConfig>& configs, |
148 scoped_ptr<CodedFrameProvider> frame_provider, | 148 scoped_ptr<CodedFrameProvider> frame_provider, |
149 const ::media::PipelineStatusCB& status_cb) { | 149 const ::media::PipelineStatusCB& status_cb) { |
150 DCHECK(thread_checker_.CalledOnValidThread()); | 150 DCHECK(thread_checker_.CalledOnValidThread()); |
151 DCHECK(!has_video_); | 151 DCHECK(!has_video_); |
152 if (clock_device_->GetState() == MediaClockDevice::kStateUninitialized && | 152 if (clock_device_->GetState() == MediaClockDevice::kStateUninitialized && |
153 !clock_device_->SetState(MediaClockDevice::kStateIdle)) { | 153 !clock_device_->SetState(MediaClockDevice::kStateIdle)) { |
154 status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED); | 154 status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED); |
155 return; | 155 return; |
156 } | 156 } |
157 has_video_ = true; | 157 has_video_ = true; |
158 video_pipeline_->Initialize(config, frame_provider.Pass(), status_cb); | 158 video_pipeline_->Initialize(configs, frame_provider.Pass(), status_cb); |
159 } | 159 } |
160 | 160 |
161 void MediaPipelineImpl::StartPlayingFrom(base::TimeDelta time) { | 161 void MediaPipelineImpl::StartPlayingFrom(base::TimeDelta time) { |
162 CMALOG(kLogControl) << __FUNCTION__ << " t0=" << time.InMilliseconds(); | 162 CMALOG(kLogControl) << __FUNCTION__ << " t0=" << time.InMilliseconds(); |
163 DCHECK(thread_checker_.CalledOnValidThread()); | 163 DCHECK(thread_checker_.CalledOnValidThread()); |
164 DCHECK(has_audio_ || has_video_); | 164 DCHECK(has_audio_ || has_video_); |
165 DCHECK(!pending_callbacks_); | 165 DCHECK(!pending_callbacks_); |
166 | 166 |
167 // Reset the start of the timeline. | 167 // Reset the start of the timeline. |
168 DCHECK_EQ(clock_device_->GetState(), MediaClockDevice::kStateIdle); | 168 DCHECK_EQ(clock_device_->GetState(), MediaClockDevice::kStateIdle); |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 | 362 |
363 void MediaPipelineImpl::OnError(::media::PipelineStatus error) { | 363 void MediaPipelineImpl::OnError(::media::PipelineStatus error) { |
364 DCHECK(thread_checker_.CalledOnValidThread()); | 364 DCHECK(thread_checker_.CalledOnValidThread()); |
365 DCHECK_NE(error, ::media::PIPELINE_OK) << "PIPELINE_OK is not an error!"; | 365 DCHECK_NE(error, ::media::PIPELINE_OK) << "PIPELINE_OK is not an error!"; |
366 if (!client_.error_cb.is_null()) | 366 if (!client_.error_cb.is_null()) |
367 client_.error_cb.Run(error); | 367 client_.error_cb.Run(error); |
368 } | 368 } |
369 | 369 |
370 } // namespace media | 370 } // namespace media |
371 } // namespace chromecast | 371 } // namespace chromecast |
OLD | NEW |