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 |