OLD | NEW |
---|---|
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 "media/filters/pipeline_controller.h" | 5 #include "media/filters/pipeline_controller.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "media/base/demuxer.h" | 8 #include "media/base/demuxer.h" |
9 | 9 |
10 namespace media { | 10 namespace media { |
11 | 11 |
12 PipelineController::PipelineController( | 12 PipelineController::PipelineController( |
13 Pipeline* pipeline, | 13 std::unique_ptr<Pipeline> pipeline, |
14 const RendererFactoryCB& renderer_factory_cb, | 14 const RendererFactoryCB& renderer_factory_cb, |
15 const SeekedCB& seeked_cb, | 15 const SeekedCB& seeked_cb, |
16 const SuspendedCB& suspended_cb, | 16 const SuspendedCB& suspended_cb, |
17 const BeforeResumeCB& before_resume_cb, | 17 const BeforeResumeCB& before_resume_cb, |
18 const ResumedCB& resumed_cb, | 18 const ResumedCB& resumed_cb, |
19 const PipelineStatusCB& error_cb) | 19 const PipelineStatusCB& error_cb) |
20 : pipeline_(pipeline), | 20 : pipeline_(std::move(pipeline)), |
21 renderer_factory_cb_(renderer_factory_cb), | 21 renderer_factory_cb_(renderer_factory_cb), |
22 seeked_cb_(seeked_cb), | 22 seeked_cb_(seeked_cb), |
23 suspended_cb_(suspended_cb), | 23 suspended_cb_(suspended_cb), |
24 before_resume_cb_(before_resume_cb), | 24 before_resume_cb_(before_resume_cb), |
25 resumed_cb_(resumed_cb), | 25 resumed_cb_(resumed_cb), |
26 error_cb_(error_cb), | 26 error_cb_(error_cb), |
27 weak_factory_(this) { | 27 weak_factory_(this) { |
28 DCHECK(pipeline_); | 28 DCHECK(pipeline_); |
29 DCHECK(!renderer_factory_cb_.is_null()); | 29 DCHECK(!renderer_factory_cb_.is_null()); |
30 DCHECK(!seeked_cb_.is_null()); | 30 DCHECK(!seeked_cb_.is_null()); |
31 DCHECK(!suspended_cb_.is_null()); | 31 DCHECK(!suspended_cb_.is_null()); |
32 DCHECK(!before_resume_cb_.is_null()); | 32 DCHECK(!before_resume_cb_.is_null()); |
33 DCHECK(!resumed_cb_.is_null()); | 33 DCHECK(!resumed_cb_.is_null()); |
34 DCHECK(!error_cb_.is_null()); | 34 DCHECK(!error_cb_.is_null()); |
35 } | 35 } |
36 | 36 |
37 PipelineController::~PipelineController() { | 37 PipelineController::~PipelineController() { |
38 DCHECK(thread_checker_.CalledOnValidThread()); | 38 DCHECK(thread_checker_.CalledOnValidThread()); |
39 } | 39 } |
40 | 40 |
41 // TODO(sandersd): If there is a pending suspend, don't call pipeline_.Start() | 41 // TODO(sandersd): If there is a pending suspend, don't call pipeline_->Start() |
42 // until Resume(). | 42 // until Resume(). |
43 void PipelineController::Start(Demuxer* demuxer, | 43 void PipelineController::Start(Demuxer* demuxer, |
44 Pipeline::Client* client, | 44 Pipeline::Client* client, |
45 bool is_streaming, | 45 bool is_streaming, |
46 bool is_static) { | 46 bool is_static) { |
47 DCHECK(thread_checker_.CalledOnValidThread()); | 47 DCHECK(thread_checker_.CalledOnValidThread()); |
48 DCHECK(state_ == State::CREATED); | 48 DCHECK(state_ == State::CREATED); |
49 DCHECK(demuxer); | 49 DCHECK(demuxer); |
50 | 50 |
51 // Once the pipeline is started, we want to call the seeked callback but | 51 // Once the pipeline is started, we want to call the seeked callback but |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
239 // immediately. | 239 // immediately. |
240 pending_seeked_cb_ = false; | 240 pending_seeked_cb_ = false; |
241 bool was_pending_time_updated = pending_time_updated_; | 241 bool was_pending_time_updated = pending_time_updated_; |
242 pending_time_updated_ = false; | 242 pending_time_updated_ = false; |
243 seeked_cb_.Run(was_pending_time_updated); | 243 seeked_cb_.Run(was_pending_time_updated); |
244 return; | 244 return; |
245 } | 245 } |
246 } | 246 } |
247 } | 247 } |
248 | 248 |
249 void PipelineController::Stop() { | |
250 pipeline_->Stop(); | |
sandersd (OOO until July 31)
2017/02/23 23:11:46
Should we perhaps be resetting |state_| here?
tguilbert
2017/02/24 02:13:59
I added a comment, a TODO, and opened crbug.com/69
| |
251 } | |
252 | |
253 bool PipelineController::IsPipelineRunning() const { | |
254 return pipeline_->IsRunning(); | |
255 } | |
256 | |
257 double PipelineController::GetPlaybackRate() const { | |
258 return pipeline_->GetPlaybackRate(); | |
259 } | |
260 | |
261 void PipelineController::SetPlaybackRate(double playback_rate) { | |
262 pipeline_->SetPlaybackRate(playback_rate); | |
263 } | |
264 | |
265 float PipelineController::GetVolume() const { | |
266 return pipeline_->GetVolume(); | |
267 } | |
268 | |
269 void PipelineController::SetVolume(float volume) { | |
270 pipeline_->SetVolume(volume); | |
271 } | |
272 | |
273 base::TimeDelta PipelineController::GetMediaTime() const { | |
274 return pipeline_->GetMediaTime(); | |
275 } | |
276 | |
277 Ranges<base::TimeDelta> PipelineController::GetBufferedTimeRanges() const { | |
278 return pipeline_->GetBufferedTimeRanges(); | |
279 } | |
280 | |
281 base::TimeDelta PipelineController::GetMediaDuration() const { | |
282 return pipeline_->GetMediaDuration(); | |
283 } | |
284 | |
285 bool PipelineController::DidLoadingProgress() { | |
286 return pipeline_->DidLoadingProgress(); | |
287 } | |
288 | |
289 PipelineStatistics PipelineController::GetStatistics() const { | |
290 return pipeline_->GetStatistics(); | |
291 } | |
292 | |
293 void PipelineController::SetCdm(CdmContext* cdm_context, | |
294 const CdmAttachedCB& cdm_attached_cb) { | |
295 pipeline_->SetCdm(cdm_context, cdm_attached_cb); | |
296 } | |
297 | |
298 void PipelineController::OnEnabledAudioTracksChanged( | |
299 const std::vector<MediaTrack::Id>& enabledTrackIds) { | |
300 pipeline_->OnEnabledAudioTracksChanged(enabledTrackIds); | |
301 } | |
302 | |
303 void PipelineController::OnSelectedVideoTrackChanged( | |
304 const std::vector<MediaTrack::Id>& selectedTrackId) { | |
305 pipeline_->OnSelectedVideoTrackChanged(selectedTrackId); | |
306 } | |
307 | |
249 } // namespace media | 308 } // namespace media |
OLD | NEW |