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

Side by Side Diff: media/remoting/remote_renderer_impl.h

Issue 2457563002: Media Remoting: Add remoting control logic for encrypted contents. (Closed)
Patch Set: Addressed comments from PS#12. Fixed ASAN. Created 4 years, 1 month 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/remoting/remote_demuxer_stream_adapter.cc ('k') | media/remoting/remote_renderer_impl.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 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 #ifndef MEDIA_REMOTING_REMOTE_RENDERER_IMPL_H_ 5 #ifndef MEDIA_REMOTING_REMOTE_RENDERER_IMPL_H_
6 #define MEDIA_REMOTING_REMOTE_RENDERER_IMPL_H_ 6 #define MEDIA_REMOTING_REMOTE_RENDERER_IMPL_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
11 11
12 #include "base/callback.h" 12 #include "base/callback.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/memory/weak_ptr.h" 15 #include "base/memory/weak_ptr.h"
16 #include "base/synchronization/lock.h" 16 #include "base/synchronization/lock.h"
17 #include "media/base/buffering_state.h" 17 #include "media/base/buffering_state.h"
18 #include "media/base/pipeline_status.h" 18 #include "media/base/pipeline_status.h"
19 #include "media/base/renderer.h" 19 #include "media/base/renderer.h"
20 #include "media/base/renderer_client.h" 20 #include "media/base/renderer_client.h"
21 #include "media/mojo/interfaces/remoting.mojom.h" 21 #include "media/mojo/interfaces/remoting.mojom.h"
22 #include "media/remoting/rpc/rpc_broker.h" 22 #include "media/remoting/rpc/rpc_broker.h"
23 #include "mojo/public/cpp/system/data_pipe.h" 23 #include "mojo/public/cpp/system/data_pipe.h"
24 24
25 namespace media { 25 namespace media {
26 26
27 class BalancedMediaTaskRunnerFactory; 27 class BalancedMediaTaskRunnerFactory;
28 class RemotingController; 28 class RemotingRendererController;
29 class Renderer; 29 class Renderer;
30 class VideoRendererSink; 30 class VideoRendererSink;
31 31
32 namespace remoting { 32 namespace remoting {
33 class RemoteDemuxerStreamAdapter; 33 class RemoteDemuxerStreamAdapter;
34 }; 34 };
35 35
36 // A media::Renderer implementation that use a media::Renderer to render 36 // A media::Renderer implementation that use a media::Renderer to render
37 // media streams. 37 // media streams.
38 class RemoteRendererImpl : public Renderer { 38 class RemoteRendererImpl : public Renderer {
39 public: 39 public:
40 // The whole class except for constructor and GetMediaTime() runs on 40 // The whole class except for constructor and GetMediaTime() runs on
41 // |media_task_runner|. The constructor and GetMediaTime() run on render main 41 // |media_task_runner|. The constructor and GetMediaTime() run on render main
42 // thread. 42 // thread.
43 RemoteRendererImpl( 43 RemoteRendererImpl(
44 const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, 44 const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
45 const base::WeakPtr<RemotingController>& remoting_controller); 45 const base::WeakPtr<RemotingRendererController>&
46 remoting_renderer_controller);
46 ~RemoteRendererImpl() final; 47 ~RemoteRendererImpl() final;
47 48
48 private: 49 private:
49 // Callback when attempting to establish data pipe. The function is set to 50 // Callback when attempting to establish data pipe. The function is set to
50 // static in order to post task to media thread in order to avoid threading 51 // static in order to post task to media thread in order to avoid threading
51 // race condition. 52 // race condition.
52 static void OnDataPipeCreatedOnMainThread( 53 static void OnDataPipeCreatedOnMainThread(
53 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, 54 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
54 base::WeakPtr<RemoteRendererImpl> self, 55 base::WeakPtr<RemoteRendererImpl> self,
55 mojom::RemotingDataStreamSenderPtrInfo audio, 56 mojom::RemotingDataStreamSenderPtrInfo audio,
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 base::Lock time_lock_; 135 base::Lock time_lock_;
135 136
136 DemuxerStreamProvider* demuxer_stream_provider_; 137 DemuxerStreamProvider* demuxer_stream_provider_;
137 media::RendererClient* client_; 138 media::RendererClient* client_;
138 std::unique_ptr<remoting::RemoteDemuxerStreamAdapter> 139 std::unique_ptr<remoting::RemoteDemuxerStreamAdapter>
139 audio_demuxer_stream_adapter_; 140 audio_demuxer_stream_adapter_;
140 std::unique_ptr<remoting::RemoteDemuxerStreamAdapter> 141 std::unique_ptr<remoting::RemoteDemuxerStreamAdapter>
141 video_demuxer_stream_adapter_; 142 video_demuxer_stream_adapter_;
142 143
143 // Component to establish mojo remoting service on browser process. 144 // Component to establish mojo remoting service on browser process.
144 const base::WeakPtr<RemotingController> remoting_controller_; 145 const base::WeakPtr<RemotingRendererController> remoting_renderer_controller_;
145 // Broker class to process incoming and outgoing RPC message. 146 // Broker class to process incoming and outgoing RPC message.
146 const base::WeakPtr<remoting::RpcBroker> rpc_broker_; 147 const base::WeakPtr<remoting::RpcBroker> rpc_broker_;
147 // RPC handle value for RemoteRendererImpl component. 148 // RPC handle value for RemoteRendererImpl component.
148 const int rpc_handle_; 149 const int rpc_handle_;
149 150
150 // RPC handle value for render on receiver endpoint. 151 // RPC handle value for render on receiver endpoint.
151 int remote_renderer_handle_; 152 int remote_renderer_handle_;
152 153
153 // Callbacks. 154 // Callbacks.
154 PipelineStatusCB init_workflow_done_callback_; 155 PipelineStatusCB init_workflow_done_callback_;
155 CdmAttachedCB cdm_attached_cb_; 156 CdmAttachedCB cdm_attached_cb_;
156 base::Closure flush_cb_; 157 base::Closure flush_cb_;
157 158
158 base::WeakPtrFactory<RemoteRendererImpl> weak_factory_; 159 base::WeakPtrFactory<RemoteRendererImpl> weak_factory_;
159 160
160 DISALLOW_COPY_AND_ASSIGN(RemoteRendererImpl); 161 DISALLOW_COPY_AND_ASSIGN(RemoteRendererImpl);
161 }; 162 };
162 163
163 } // namespace media 164 } // namespace media
164 165
165 #endif // MEDIA_REMOTING_REMOTE_RENDERER_IMPL_H_ 166 #endif // MEDIA_REMOTING_REMOTE_RENDERER_IMPL_H_
OLDNEW
« no previous file with comments | « media/remoting/remote_demuxer_stream_adapter.cc ('k') | media/remoting/remote_renderer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698