Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(423)

Side by Side Diff: chromecast/browser/media/cast_renderer.cc

Issue 2016053003: Add audio_device_id in mojo media ServiceFactory CreateRenderer api. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Add implementation to use audio_device_id in CastRender. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698