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

Side by Side Diff: media/mojo/clients/mojo_renderer.cc

Issue 2358413002: media: Use associated interface for mojo RendererClient (Closed)
Patch Set: more test update Created 4 years, 3 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
« no previous file with comments | « media/mojo/clients/mojo_renderer.h ('k') | media/mojo/clients/mojo_renderer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "media/mojo/clients/mojo_renderer.h" 5 #include "media/mojo/clients/mojo_renderer.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 10 matching lines...) Expand all
21 21
22 MojoRenderer::MojoRenderer( 22 MojoRenderer::MojoRenderer(
23 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 23 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
24 std::unique_ptr<VideoOverlayFactory> video_overlay_factory, 24 std::unique_ptr<VideoOverlayFactory> video_overlay_factory,
25 VideoRendererSink* video_renderer_sink, 25 VideoRendererSink* video_renderer_sink,
26 mojom::RendererPtr remote_renderer) 26 mojom::RendererPtr remote_renderer)
27 : task_runner_(task_runner), 27 : task_runner_(task_runner),
28 video_overlay_factory_(std::move(video_overlay_factory)), 28 video_overlay_factory_(std::move(video_overlay_factory)),
29 video_renderer_sink_(video_renderer_sink), 29 video_renderer_sink_(video_renderer_sink),
30 remote_renderer_info_(remote_renderer.PassInterface()), 30 remote_renderer_info_(remote_renderer.PassInterface()),
31 binding_(this), 31 client_binding_(this),
32 media_time_interpolator_(&media_clock_) { 32 media_time_interpolator_(&media_clock_) {
33 DVLOG(1) << __FUNCTION__; 33 DVLOG(1) << __FUNCTION__;
34 } 34 }
35 35
36 MojoRenderer::~MojoRenderer() { 36 MojoRenderer::~MojoRenderer() {
37 DVLOG(1) << __FUNCTION__; 37 DVLOG(1) << __FUNCTION__;
38 DCHECK(task_runner_->BelongsToCurrentThread()); 38 DCHECK(task_runner_->BelongsToCurrentThread());
39 39
40 CancelPendingCallbacks(); 40 CancelPendingCallbacks();
41 } 41 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 // Using base::Unretained(this) is safe because |this| owns 97 // Using base::Unretained(this) is safe because |this| owns
98 // |video_stream_|, and the error handler can't be invoked once 98 // |video_stream_|, and the error handler can't be invoked once
99 // |video_stream_| is destroyed. 99 // |video_stream_| is destroyed.
100 video_stream_->set_connection_error_handler( 100 video_stream_->set_connection_error_handler(
101 base::Bind(&MojoRenderer::OnDemuxerStreamConnectionError, 101 base::Bind(&MojoRenderer::OnDemuxerStreamConnectionError,
102 base::Unretained(this), DemuxerStream::VIDEO)); 102 base::Unretained(this), DemuxerStream::VIDEO));
103 } 103 }
104 104
105 BindRemoteRendererIfNeeded(); 105 BindRemoteRendererIfNeeded();
106 106
107 mojom::RendererClientAssociatedPtrInfo client_ptr_info;
alokp 2016/09/22 17:30:08 move these two lines into BindRemoteRendererIfNeed
xhwang 2016/09/22 18:11:57 I see the benefit of less code duplication. But re
alokp 2016/09/22 18:17:24 Acknowledged.
108 client_binding_.Bind(&client_ptr_info, remote_renderer_.associated_group());
109
107 // Using base::Unretained(this) is safe because |this| owns 110 // Using base::Unretained(this) is safe because |this| owns
108 // |remote_renderer_|, and the callback won't be dispatched if 111 // |remote_renderer_|, and the callback won't be dispatched if
109 // |remote_renderer_| is destroyed. 112 // |remote_renderer_| is destroyed.
110 remote_renderer_->Initialize( 113 remote_renderer_->Initialize(
111 binding_.CreateInterfacePtrAndBind(), std::move(audio_stream), 114 std::move(client_ptr_info), std::move(audio_stream),
112 std::move(video_stream), base::nullopt, 115 std::move(video_stream), base::nullopt,
113 base::Bind(&MojoRenderer::OnInitialized, base::Unretained(this), client)); 116 base::Bind(&MojoRenderer::OnInitialized, base::Unretained(this), client));
114 } 117 }
115 118
116 void MojoRenderer::InitializeRendererFromUrl(media::RendererClient* client) { 119 void MojoRenderer::InitializeRendererFromUrl(media::RendererClient* client) {
117 DVLOG(2) << __FUNCTION__; 120 DVLOG(2) << __FUNCTION__;
118 DCHECK(task_runner_->BelongsToCurrentThread()); 121 DCHECK(task_runner_->BelongsToCurrentThread());
119 122
120 BindRemoteRendererIfNeeded(); 123 BindRemoteRendererIfNeeded();
121 124
125 mojom::RendererClientAssociatedPtrInfo client_ptr_info;
126 client_binding_.Bind(&client_ptr_info, remote_renderer_.associated_group());
127
122 // Using base::Unretained(this) is safe because |this| owns 128 // Using base::Unretained(this) is safe because |this| owns
123 // |remote_renderer_|, and the callback won't be dispatched if 129 // |remote_renderer_|, and the callback won't be dispatched if
124 // |remote_renderer_| is destroyed. 130 // |remote_renderer_| is destroyed.
125 remote_renderer_->Initialize( 131 remote_renderer_->Initialize(
126 binding_.CreateInterfacePtrAndBind(), mojom::DemuxerStreamPtr(), 132 std::move(client_ptr_info), mojom::DemuxerStreamPtr(),
127 mojom::DemuxerStreamPtr(), demuxer_stream_provider_->GetUrl(), 133 mojom::DemuxerStreamPtr(), demuxer_stream_provider_->GetUrl(),
128 base::Bind(&MojoRenderer::OnInitialized, base::Unretained(this), client)); 134 base::Bind(&MojoRenderer::OnInitialized, base::Unretained(this), client));
129 } 135 }
130 136
131 void MojoRenderer::SetCdm(CdmContext* cdm_context, 137 void MojoRenderer::SetCdm(CdmContext* cdm_context,
132 const CdmAttachedCB& cdm_attached_cb) { 138 const CdmAttachedCB& cdm_attached_cb) {
133 DVLOG(1) << __FUNCTION__; 139 DVLOG(1) << __FUNCTION__;
134 DCHECK(task_runner_->BelongsToCurrentThread()); 140 DCHECK(task_runner_->BelongsToCurrentThread());
135 DCHECK(cdm_context); 141 DCHECK(cdm_context);
136 DCHECK(!cdm_attached_cb.is_null()); 142 DCHECK(!cdm_attached_cb.is_null());
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 base::ResetAndReturn(&init_cb_).Run(PIPELINE_ERROR_INITIALIZATION_FAILED); 401 base::ResetAndReturn(&init_cb_).Run(PIPELINE_ERROR_INITIALIZATION_FAILED);
396 402
397 if (!flush_cb_.is_null()) 403 if (!flush_cb_.is_null())
398 base::ResetAndReturn(&flush_cb_).Run(); 404 base::ResetAndReturn(&flush_cb_).Run();
399 405
400 if (!cdm_attached_cb_.is_null()) 406 if (!cdm_attached_cb_.is_null())
401 base::ResetAndReturn(&cdm_attached_cb_).Run(false); 407 base::ResetAndReturn(&cdm_attached_cb_).Run(false);
402 } 408 }
403 409
404 } // namespace media 410 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/clients/mojo_renderer.h ('k') | media/mojo/clients/mojo_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698