| 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 "chromecast/browser/media/cast_renderer.h" | 5 #include "chromecast/browser/media/cast_renderer.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/single_thread_task_runner.h" | 8 #include "base/single_thread_task_runner.h" |
| 9 #include "chromecast/base/task_runner_impl.h" | 9 #include "chromecast/base/task_runner_impl.h" |
| 10 #include "chromecast/media/cdm/cast_cdm_context.h" | 10 #include "chromecast/media/cdm/cast_cdm_context.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 namespace media { | 25 namespace media { |
| 26 | 26 |
| 27 namespace { | 27 namespace { |
| 28 // Maximum difference between audio frame PTS and video frame PTS | 28 // Maximum difference between audio frame PTS and video frame PTS |
| 29 // for frames read from the DemuxerStream. | 29 // for frames read from the DemuxerStream. |
| 30 const base::TimeDelta kMaxDeltaFetcher(base::TimeDelta::FromMilliseconds(2000)); | 30 const base::TimeDelta kMaxDeltaFetcher(base::TimeDelta::FromMilliseconds(2000)); |
| 31 } // namespace | 31 } // namespace |
| 32 | 32 |
| 33 CastRenderer::CastRenderer( | 33 CastRenderer::CastRenderer( |
| 34 const CreateMediaPipelineBackendCB& create_backend_cb, | 34 const CreateMediaPipelineBackendCB& create_backend_cb, |
| 35 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) | 35 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 36 const std::string& audio_device_id) |
| 36 : create_backend_cb_(create_backend_cb), | 37 : create_backend_cb_(create_backend_cb), |
| 37 task_runner_(task_runner), | 38 task_runner_(task_runner), |
| 39 audio_device_id_(audio_device_id), |
| 38 client_(nullptr), | 40 client_(nullptr), |
| 39 cast_cdm_context_(nullptr), | 41 cast_cdm_context_(nullptr), |
| 40 media_task_runner_factory_( | 42 media_task_runner_factory_( |
| 41 new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)), | 43 new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)), |
| 42 weak_factory_(this) { | 44 weak_factory_(this) { |
| 43 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; | 45 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; |
| 44 } | 46 } |
| 45 | 47 |
| 46 CastRenderer::~CastRenderer() { | 48 CastRenderer::~CastRenderer() { |
| 47 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; | 49 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 58 // Create pipeline backend. | 60 // Create pipeline backend. |
| 59 backend_task_runner_.reset(new TaskRunnerImpl()); | 61 backend_task_runner_.reset(new TaskRunnerImpl()); |
| 60 // TODO(erickung): crbug.com/443956. Need to provide right LoadType. | 62 // TODO(erickung): crbug.com/443956. Need to provide right LoadType. |
| 61 LoadType load_type = kLoadTypeMediaSource; | 63 LoadType load_type = kLoadTypeMediaSource; |
| 62 MediaPipelineDeviceParams::MediaSyncType sync_type = | 64 MediaPipelineDeviceParams::MediaSyncType sync_type = |
| 63 (load_type == kLoadTypeMediaStream) | 65 (load_type == kLoadTypeMediaStream) |
| 64 ? MediaPipelineDeviceParams::kModeIgnorePts | 66 ? MediaPipelineDeviceParams::kModeIgnorePts |
| 65 : MediaPipelineDeviceParams::kModeSyncPts; | 67 : MediaPipelineDeviceParams::kModeSyncPts; |
| 66 MediaPipelineDeviceParams params(sync_type, backend_task_runner_.get()); | 68 MediaPipelineDeviceParams params(sync_type, backend_task_runner_.get()); |
| 67 std::unique_ptr<MediaPipelineBackend> backend = | 69 std::unique_ptr<MediaPipelineBackend> backend = |
| 68 create_backend_cb_.Run(params); | 70 create_backend_cb_.Run(params, audio_device_id_); |
| 69 | 71 |
| 70 // Create pipeline. | 72 // Create pipeline. |
| 71 MediaPipelineClient pipeline_client; | 73 MediaPipelineClient pipeline_client; |
| 72 pipeline_client.error_cb = | 74 pipeline_client.error_cb = |
| 73 base::Bind(&CastRenderer::OnError, weak_factory_.GetWeakPtr()); | 75 base::Bind(&CastRenderer::OnError, weak_factory_.GetWeakPtr()); |
| 74 pipeline_client.buffering_state_cb = base::Bind( | 76 pipeline_client.buffering_state_cb = base::Bind( |
| 75 &CastRenderer::OnBufferingStateChange, weak_factory_.GetWeakPtr()); | 77 &CastRenderer::OnBufferingStateChange, weak_factory_.GetWeakPtr()); |
| 76 pipeline_.reset(new MediaPipelineImpl()); | 78 pipeline_.reset(new MediaPipelineImpl()); |
| 77 pipeline_->SetClient(pipeline_client); | 79 pipeline_->SetClient(pipeline_client); |
| 78 pipeline_->Initialize(load_type, std::move(backend)); | 80 pipeline_->Initialize(load_type, std::move(backend)); |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 client_->OnVideoNaturalSizeChange(size); | 237 client_->OnVideoNaturalSizeChange(size); |
| 236 } | 238 } |
| 237 | 239 |
| 238 void CastRenderer::OnVideoOpacityChange(bool opaque) { | 240 void CastRenderer::OnVideoOpacityChange(bool opaque) { |
| 239 DCHECK(task_runner_->BelongsToCurrentThread()); | 241 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 240 client_->OnVideoOpacityChange(opaque); | 242 client_->OnVideoOpacityChange(opaque); |
| 241 } | 243 } |
| 242 | 244 |
| 243 } // namespace media | 245 } // namespace media |
| 244 } // namespace chromecast | 246 } // namespace chromecast |
| OLD | NEW |