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/browser/media/video_resolution_policy.h" | 10 #include "chromecast/browser/media/video_resolution_policy.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 namespace { | 28 namespace { |
29 // Maximum difference between audio frame PTS and video frame PTS | 29 // Maximum difference between audio frame PTS and video frame PTS |
30 // for frames read from the DemuxerStream. | 30 // for frames read from the DemuxerStream. |
31 const base::TimeDelta kMaxDeltaFetcher(base::TimeDelta::FromMilliseconds(2000)); | 31 const base::TimeDelta kMaxDeltaFetcher(base::TimeDelta::FromMilliseconds(2000)); |
32 } // namespace | 32 } // namespace |
33 | 33 |
34 CastRenderer::CastRenderer( | 34 CastRenderer::CastRenderer( |
35 const CreateMediaPipelineBackendCB& create_backend_cb, | 35 const CreateMediaPipelineBackendCB& create_backend_cb, |
36 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, | 36 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
37 const std::string& audio_device_id, | 37 const std::string& audio_device_id, |
38 VideoResolutionPolicy* video_resolution_policy) | 38 VideoResolutionPolicy* video_resolution_policy, |
| 39 MediaResourceTracker* media_resource_tracker) |
39 : create_backend_cb_(create_backend_cb), | 40 : create_backend_cb_(create_backend_cb), |
40 task_runner_(task_runner), | 41 task_runner_(task_runner), |
41 audio_device_id_(audio_device_id), | 42 audio_device_id_(audio_device_id), |
42 video_resolution_policy_(video_resolution_policy), | 43 video_resolution_policy_(video_resolution_policy), |
| 44 media_resource_tracker_(media_resource_tracker), |
43 client_(nullptr), | 45 client_(nullptr), |
44 cast_cdm_context_(nullptr), | 46 cast_cdm_context_(nullptr), |
45 media_task_runner_factory_( | 47 media_task_runner_factory_( |
46 new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)), | 48 new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)), |
47 weak_factory_(this) { | 49 weak_factory_(this) { |
48 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; | 50 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; |
49 | 51 |
50 if (video_resolution_policy_) | 52 if (video_resolution_policy_) |
51 video_resolution_policy_->AddObserver(this); | 53 video_resolution_policy_->AddObserver(this); |
52 } | 54 } |
53 | 55 |
54 CastRenderer::~CastRenderer() { | 56 CastRenderer::~CastRenderer() { |
55 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; | 57 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; |
56 DCHECK(task_runner_->BelongsToCurrentThread()); | 58 DCHECK(task_runner_->BelongsToCurrentThread()); |
57 | 59 |
58 if (video_resolution_policy_) | 60 if (video_resolution_policy_) |
59 video_resolution_policy_->RemoveObserver(this); | 61 video_resolution_policy_->RemoveObserver(this); |
60 } | 62 } |
61 | 63 |
62 void CastRenderer::Initialize( | 64 void CastRenderer::Initialize( |
63 ::media::DemuxerStreamProvider* demuxer_stream_provider, | 65 ::media::DemuxerStreamProvider* demuxer_stream_provider, |
64 ::media::RendererClient* client, | 66 ::media::RendererClient* client, |
65 const ::media::PipelineStatusCB& init_cb) { | 67 const ::media::PipelineStatusCB& init_cb) { |
66 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; | 68 CMALOG(kLogControl) << __FUNCTION__ << ": " << this; |
67 DCHECK(task_runner_->BelongsToCurrentThread()); | 69 DCHECK(task_runner_->BelongsToCurrentThread()); |
68 | 70 |
69 // Create pipeline backend. | 71 // Create pipeline backend. |
| 72 media_resource_usage_.reset( |
| 73 new MediaResourceTracker::ScopedUsage(media_resource_tracker_)); |
70 backend_task_runner_.reset(new TaskRunnerImpl()); | 74 backend_task_runner_.reset(new TaskRunnerImpl()); |
71 // TODO(erickung): crbug.com/443956. Need to provide right LoadType. | 75 // TODO(erickung): crbug.com/443956. Need to provide right LoadType. |
72 LoadType load_type = kLoadTypeMediaSource; | 76 LoadType load_type = kLoadTypeMediaSource; |
73 MediaPipelineDeviceParams::MediaSyncType sync_type = | 77 MediaPipelineDeviceParams::MediaSyncType sync_type = |
74 (load_type == kLoadTypeMediaStream) | 78 (load_type == kLoadTypeMediaStream) |
75 ? MediaPipelineDeviceParams::kModeIgnorePts | 79 ? MediaPipelineDeviceParams::kModeIgnorePts |
76 : MediaPipelineDeviceParams::kModeSyncPts; | 80 : MediaPipelineDeviceParams::kModeSyncPts; |
77 MediaPipelineDeviceParams params(sync_type, backend_task_runner_.get()); | 81 MediaPipelineDeviceParams params(sync_type, backend_task_runner_.get()); |
78 std::unique_ptr<MediaPipelineBackend> backend = | 82 std::unique_ptr<MediaPipelineBackend> backend = |
79 create_backend_cb_.Run(params, audio_device_id_); | 83 create_backend_cb_.Run(params, audio_device_id_); |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 } | 268 } |
265 | 269 |
266 void CastRenderer::OnVideoOpacityChange(bool opaque) { | 270 void CastRenderer::OnVideoOpacityChange(bool opaque) { |
267 DCHECK(task_runner_->BelongsToCurrentThread()); | 271 DCHECK(task_runner_->BelongsToCurrentThread()); |
268 DCHECK(opaque); | 272 DCHECK(opaque); |
269 client_->OnVideoOpacityChange(opaque); | 273 client_->OnVideoOpacityChange(opaque); |
270 } | 274 } |
271 | 275 |
272 } // namespace media | 276 } // namespace media |
273 } // namespace chromecast | 277 } // namespace chromecast |
OLD | NEW |