Chromium Code Reviews| 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 10 matching lines...) Expand all Loading... | |
| 21 #include "media/base/media_log.h" | 21 #include "media/base/media_log.h" |
| 22 #include "media/base/renderer_client.h" | 22 #include "media/base/renderer_client.h" |
| 23 | 23 |
| 24 namespace chromecast { | 24 namespace chromecast { |
| 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 | |
| 32 int GetStreamType(const std::string& audio_device_id) { | |
|
alokp
2016/07/12 05:01:30
This is weird. Where are these stream-type integer
tianyuwang1
2016/07/12 15:28:09
They are not defined in cast_shell, because we did
| |
| 33 if (audio_device_id == | |
| 34 media::AudioDeviceDescription::kCommunicationsDeviceId) { | |
| 35 return 1; | |
| 36 } else { | |
| 37 return 0; | |
| 38 } | |
| 39 } | |
| 40 | |
| 31 } // namespace | 41 } // namespace |
| 32 | 42 |
| 33 CastRenderer::CastRenderer( | 43 CastRenderer::CastRenderer( |
| 34 const CreateMediaPipelineBackendCB& create_backend_cb, | 44 const CreateMediaPipelineBackendCB& create_backend_cb, |
| 35 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) | 45 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
| 46 const std::string& audio_device_id) | |
| 36 : create_backend_cb_(create_backend_cb), | 47 : create_backend_cb_(create_backend_cb), |
| 37 task_runner_(task_runner), | 48 task_runner_(task_runner), |
| 49 audio_device_id_(audio_device_id), | |
| 38 client_(nullptr), | 50 client_(nullptr), |
| 39 cast_cdm_context_(nullptr), | 51 cast_cdm_context_(nullptr), |
| 40 media_task_runner_factory_( | 52 media_task_runner_factory_( |
| 41 new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)), | 53 new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)), |
| 42 weak_factory_(this) { | 54 weak_factory_(this) { |
| 43 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; | 55 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; |
| 44 } | 56 } |
| 45 | 57 |
| 46 CastRenderer::~CastRenderer() { | 58 CastRenderer::~CastRenderer() { |
| 47 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; | 59 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 58 // Create pipeline backend. | 70 // Create pipeline backend. |
| 59 backend_task_runner_.reset(new TaskRunnerImpl()); | 71 backend_task_runner_.reset(new TaskRunnerImpl()); |
| 60 // TODO(erickung): crbug.com/443956. Need to provide right LoadType. | 72 // TODO(erickung): crbug.com/443956. Need to provide right LoadType. |
| 61 LoadType load_type = kLoadTypeMediaSource; | 73 LoadType load_type = kLoadTypeMediaSource; |
| 62 MediaPipelineDeviceParams::MediaSyncType sync_type = | 74 MediaPipelineDeviceParams::MediaSyncType sync_type = |
| 63 (load_type == kLoadTypeMediaStream) | 75 (load_type == kLoadTypeMediaStream) |
| 64 ? MediaPipelineDeviceParams::kModeIgnorePts | 76 ? MediaPipelineDeviceParams::kModeIgnorePts |
| 65 : MediaPipelineDeviceParams::kModeSyncPts; | 77 : MediaPipelineDeviceParams::kModeSyncPts; |
| 66 MediaPipelineDeviceParams params(sync_type, backend_task_runner_.get()); | 78 MediaPipelineDeviceParams params(sync_type, backend_task_runner_.get()); |
| 67 std::unique_ptr<MediaPipelineBackend> backend = | 79 std::unique_ptr<MediaPipelineBackend> backend = |
| 68 create_backend_cb_.Run(params); | 80 create_backend_cb_.Run(params, GetStreamType(audio_device_id_)); |
| 69 | 81 |
| 70 // Create pipeline. | 82 // Create pipeline. |
| 71 MediaPipelineClient pipeline_client; | 83 MediaPipelineClient pipeline_client; |
| 72 pipeline_client.error_cb = | 84 pipeline_client.error_cb = |
| 73 base::Bind(&CastRenderer::OnError, weak_factory_.GetWeakPtr()); | 85 base::Bind(&CastRenderer::OnError, weak_factory_.GetWeakPtr()); |
| 74 pipeline_client.buffering_state_cb = base::Bind( | 86 pipeline_client.buffering_state_cb = base::Bind( |
| 75 &CastRenderer::OnBufferingStateChange, weak_factory_.GetWeakPtr()); | 87 &CastRenderer::OnBufferingStateChange, weak_factory_.GetWeakPtr()); |
| 76 pipeline_.reset(new MediaPipelineImpl()); | 88 pipeline_.reset(new MediaPipelineImpl()); |
| 77 pipeline_->SetClient(pipeline_client); | 89 pipeline_->SetClient(pipeline_client); |
| 78 pipeline_->Initialize(load_type, std::move(backend)); | 90 pipeline_->Initialize(load_type, std::move(backend)); |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 235 client_->OnVideoNaturalSizeChange(size); | 247 client_->OnVideoNaturalSizeChange(size); |
| 236 } | 248 } |
| 237 | 249 |
| 238 void CastRenderer::OnVideoOpacityChange(bool opaque) { | 250 void CastRenderer::OnVideoOpacityChange(bool opaque) { |
| 239 DCHECK(task_runner_->BelongsToCurrentThread()); | 251 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 240 client_->OnVideoOpacityChange(opaque); | 252 client_->OnVideoOpacityChange(opaque); |
| 241 } | 253 } |
| 242 | 254 |
| 243 } // namespace media | 255 } // namespace media |
| 244 } // namespace chromecast | 256 } // namespace chromecast |
| OLD | NEW |