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

Side by Side Diff: content/renderer/media/webmediaplayer_impl.h

Issue 63253002: Rename WebKit namespace to blink (part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 // Delegate calls from WebCore::MediaPlayerPrivate to Chrome's video player. 5 // Delegate calls from WebCore::MediaPlayerPrivate to Chrome's video player.
6 // It contains Pipeline which is the actual media player pipeline, it glues 6 // It contains Pipeline which is the actual media player pipeline, it glues
7 // the media player pipeline, data source, audio renderer and renderer. 7 // the media player pipeline, data source, audio renderer and renderer.
8 // Pipeline would creates multiple threads and access some public methods 8 // Pipeline would creates multiple threads and access some public methods
9 // of this class, so we need to be extra careful about concurrent access of 9 // of this class, so we need to be extra careful about concurrent access of
10 // methods and members. 10 // methods and members.
(...skipping 27 matching lines...) Expand all
38 #include "media/filters/skcanvas_video_renderer.h" 38 #include "media/filters/skcanvas_video_renderer.h"
39 #include "skia/ext/platform_canvas.h" 39 #include "skia/ext/platform_canvas.h"
40 #include "third_party/WebKit/public/platform/WebAudioSourceProvider.h" 40 #include "third_party/WebKit/public/platform/WebAudioSourceProvider.h"
41 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" 41 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
42 #include "third_party/WebKit/public/web/WebMediaPlayer.h" 42 #include "third_party/WebKit/public/web/WebMediaPlayer.h"
43 #include "third_party/WebKit/public/web/WebMediaPlayerClient.h" 43 #include "third_party/WebKit/public/web/WebMediaPlayerClient.h"
44 #include "url/gurl.h" 44 #include "url/gurl.h"
45 45
46 class RenderAudioSourceProvider; 46 class RenderAudioSourceProvider;
47 47
48 namespace WebKit { 48 namespace blink {
49 class WebFrame; 49 class WebFrame;
50 } 50 }
51 51
52 namespace base { 52 namespace base {
53 class MessageLoopProxy; 53 class MessageLoopProxy;
54 } 54 }
55 55
56 namespace media { 56 namespace media {
57 class ChunkDemuxer; 57 class ChunkDemuxer;
58 class FFmpegDemuxer; 58 class FFmpegDemuxer;
59 class GpuVideoAcceleratorFactories; 59 class GpuVideoAcceleratorFactories;
60 class MediaLog; 60 class MediaLog;
61 } 61 }
62 62
63 namespace webkit { 63 namespace webkit {
64 class WebLayerImpl; 64 class WebLayerImpl;
65 } 65 }
66 66
67 namespace content { 67 namespace content {
68 class BufferedDataSource; 68 class BufferedDataSource;
69 class WebAudioSourceProviderImpl; 69 class WebAudioSourceProviderImpl;
70 class WebMediaPlayerDelegate; 70 class WebMediaPlayerDelegate;
71 class WebMediaPlayerParams; 71 class WebMediaPlayerParams;
72 class WebTextTrackImpl; 72 class WebTextTrackImpl;
73 73
74 class WebMediaPlayerImpl 74 class WebMediaPlayerImpl
75 : public WebKit::WebMediaPlayer, 75 : public blink::WebMediaPlayer,
76 public cc::VideoFrameProvider, 76 public cc::VideoFrameProvider,
77 public base::MessageLoop::DestructionObserver, 77 public base::MessageLoop::DestructionObserver,
78 public base::SupportsWeakPtr<WebMediaPlayerImpl> { 78 public base::SupportsWeakPtr<WebMediaPlayerImpl> {
79 public: 79 public:
80 // Constructs a WebMediaPlayer implementation using Chromium's media stack. 80 // Constructs a WebMediaPlayer implementation using Chromium's media stack.
81 // 81 //
82 // |delegate| may be null. 82 // |delegate| may be null.
83 WebMediaPlayerImpl( 83 WebMediaPlayerImpl(
84 WebKit::WebFrame* frame, 84 blink::WebFrame* frame,
85 WebKit::WebMediaPlayerClient* client, 85 blink::WebMediaPlayerClient* client,
86 base::WeakPtr<WebMediaPlayerDelegate> delegate, 86 base::WeakPtr<WebMediaPlayerDelegate> delegate,
87 const WebMediaPlayerParams& params); 87 const WebMediaPlayerParams& params);
88 virtual ~WebMediaPlayerImpl(); 88 virtual ~WebMediaPlayerImpl();
89 89
90 virtual void load(LoadType load_type, 90 virtual void load(LoadType load_type,
91 const WebKit::WebURL& url, 91 const blink::WebURL& url,
92 CORSMode cors_mode) OVERRIDE; 92 CORSMode cors_mode) OVERRIDE;
93 93
94 // Playback controls. 94 // Playback controls.
95 virtual void play(); 95 virtual void play();
96 virtual void pause(); 96 virtual void pause();
97 virtual bool supportsFullscreen() const; 97 virtual bool supportsFullscreen() const;
98 virtual bool supportsSave() const; 98 virtual bool supportsSave() const;
99 virtual void seek(double seconds); 99 virtual void seek(double seconds);
100 virtual void setRate(double rate); 100 virtual void setRate(double rate);
101 virtual void setVolume(double volume); 101 virtual void setVolume(double volume);
102 virtual void setPreload(WebKit::WebMediaPlayer::Preload preload); 102 virtual void setPreload(blink::WebMediaPlayer::Preload preload);
103 virtual const WebKit::WebTimeRanges& buffered(); 103 virtual const blink::WebTimeRanges& buffered();
104 virtual double maxTimeSeekable() const; 104 virtual double maxTimeSeekable() const;
105 105
106 // Methods for painting. 106 // Methods for painting.
107 virtual void paint(WebKit::WebCanvas* canvas, 107 virtual void paint(blink::WebCanvas* canvas,
108 const WebKit::WebRect& rect, 108 const blink::WebRect& rect,
109 unsigned char alpha); 109 unsigned char alpha);
110 110
111 // True if the loaded media has a playable video/audio track. 111 // True if the loaded media has a playable video/audio track.
112 virtual bool hasVideo() const; 112 virtual bool hasVideo() const;
113 virtual bool hasAudio() const; 113 virtual bool hasAudio() const;
114 114
115 // Dimensions of the video. 115 // Dimensions of the video.
116 virtual WebKit::WebSize naturalSize() const; 116 virtual blink::WebSize naturalSize() const;
117 117
118 // Getters of playback state. 118 // Getters of playback state.
119 virtual bool paused() const; 119 virtual bool paused() const;
120 virtual bool seeking() const; 120 virtual bool seeking() const;
121 virtual double duration() const; 121 virtual double duration() const;
122 virtual double currentTime() const; 122 virtual double currentTime() const;
123 123
124 // Internal states of loading and network. 124 // Internal states of loading and network.
125 // TODO(hclam): Ask the pipeline about the state rather than having reading 125 // TODO(hclam): Ask the pipeline about the state rather than having reading
126 // them from members which would cause race conditions. 126 // them from members which would cause race conditions.
127 virtual WebKit::WebMediaPlayer::NetworkState networkState() const; 127 virtual blink::WebMediaPlayer::NetworkState networkState() const;
128 virtual WebKit::WebMediaPlayer::ReadyState readyState() const; 128 virtual blink::WebMediaPlayer::ReadyState readyState() const;
129 129
130 virtual bool didLoadingProgress() const; 130 virtual bool didLoadingProgress() const;
131 131
132 virtual bool hasSingleSecurityOrigin() const; 132 virtual bool hasSingleSecurityOrigin() const;
133 virtual bool didPassCORSAccessCheck() const; 133 virtual bool didPassCORSAccessCheck() const;
134 134
135 virtual double mediaTimeForTimeValue(double timeValue) const; 135 virtual double mediaTimeForTimeValue(double timeValue) const;
136 136
137 virtual unsigned decodedFrameCount() const; 137 virtual unsigned decodedFrameCount() const;
138 virtual unsigned droppedFrameCount() const; 138 virtual unsigned droppedFrameCount() const;
139 virtual unsigned audioDecodedByteCount() const; 139 virtual unsigned audioDecodedByteCount() const;
140 virtual unsigned videoDecodedByteCount() const; 140 virtual unsigned videoDecodedByteCount() const;
141 141
142 // cc::VideoFrameProvider implementation. 142 // cc::VideoFrameProvider implementation.
143 virtual void SetVideoFrameProviderClient( 143 virtual void SetVideoFrameProviderClient(
144 cc::VideoFrameProvider::Client* client) OVERRIDE; 144 cc::VideoFrameProvider::Client* client) OVERRIDE;
145 virtual scoped_refptr<media::VideoFrame> GetCurrentFrame() OVERRIDE; 145 virtual scoped_refptr<media::VideoFrame> GetCurrentFrame() OVERRIDE;
146 virtual void PutCurrentFrame(const scoped_refptr<media::VideoFrame>& frame) 146 virtual void PutCurrentFrame(const scoped_refptr<media::VideoFrame>& frame)
147 OVERRIDE; 147 OVERRIDE;
148 148
149 virtual bool copyVideoTextureToPlatformTexture( 149 virtual bool copyVideoTextureToPlatformTexture(
150 WebKit::WebGraphicsContext3D* web_graphics_context, 150 blink::WebGraphicsContext3D* web_graphics_context,
151 unsigned int texture, 151 unsigned int texture,
152 unsigned int level, 152 unsigned int level,
153 unsigned int internal_format, 153 unsigned int internal_format,
154 unsigned int type, 154 unsigned int type,
155 bool premultiply_alpha, 155 bool premultiply_alpha,
156 bool flip_y); 156 bool flip_y);
157 157
158 virtual WebKit::WebAudioSourceProvider* audioSourceProvider(); 158 virtual blink::WebAudioSourceProvider* audioSourceProvider();
159 159
160 virtual MediaKeyException generateKeyRequest( 160 virtual MediaKeyException generateKeyRequest(
161 const WebKit::WebString& key_system, 161 const blink::WebString& key_system,
162 const unsigned char* init_data, 162 const unsigned char* init_data,
163 unsigned init_data_length); 163 unsigned init_data_length);
164 164
165 virtual MediaKeyException addKey(const WebKit::WebString& key_system, 165 virtual MediaKeyException addKey(const blink::WebString& key_system,
166 const unsigned char* key, 166 const unsigned char* key,
167 unsigned key_length, 167 unsigned key_length,
168 const unsigned char* init_data, 168 const unsigned char* init_data,
169 unsigned init_data_length, 169 unsigned init_data_length,
170 const WebKit::WebString& session_id); 170 const blink::WebString& session_id);
171 171
172 virtual MediaKeyException cancelKeyRequest( 172 virtual MediaKeyException cancelKeyRequest(
173 const WebKit::WebString& key_system, 173 const blink::WebString& key_system,
174 const WebKit::WebString& session_id); 174 const blink::WebString& session_id);
175 175
176 // As we are closing the tab or even the browser, |main_loop_| is destroyed 176 // As we are closing the tab or even the browser, |main_loop_| is destroyed
177 // even before this object gets destructed, so we need to know when 177 // even before this object gets destructed, so we need to know when
178 // |main_loop_| is being destroyed and we can stop posting repaint task 178 // |main_loop_| is being destroyed and we can stop posting repaint task
179 // to it. 179 // to it.
180 virtual void WillDestroyCurrentMessageLoop() OVERRIDE; 180 virtual void WillDestroyCurrentMessageLoop() OVERRIDE;
181 181
182 void Repaint(); 182 void Repaint();
183 183
184 void OnPipelineSeek(media::PipelineStatus status); 184 void OnPipelineSeek(media::PipelineStatus status);
(...skipping 13 matching lines...) Expand all
198 const std::vector<uint8>& init_data); 198 const std::vector<uint8>& init_data);
199 scoped_ptr<media::TextTrack> OnTextTrack(media::TextKind kind, 199 scoped_ptr<media::TextTrack> OnTextTrack(media::TextKind kind,
200 const std::string& label, 200 const std::string& label,
201 const std::string& language); 201 const std::string& language);
202 void SetOpaque(bool); 202 void SetOpaque(bool);
203 203
204 private: 204 private:
205 // Called after |defer_load_cb_| has decided to allow the load. If 205 // Called after |defer_load_cb_| has decided to allow the load. If
206 // |defer_load_cb_| is null this is called immediately. 206 // |defer_load_cb_| is null this is called immediately.
207 void DoLoad(LoadType load_type, 207 void DoLoad(LoadType load_type,
208 const WebKit::WebURL& url, 208 const blink::WebURL& url,
209 CORSMode cors_mode); 209 CORSMode cors_mode);
210 210
211 // Called after asynchronous initialization of a data source completed. 211 // Called after asynchronous initialization of a data source completed.
212 void DataSourceInitialized(const GURL& gurl, bool success); 212 void DataSourceInitialized(const GURL& gurl, bool success);
213 213
214 // Called when the data source is downloading or paused. 214 // Called when the data source is downloading or paused.
215 void NotifyDownloading(bool is_downloading); 215 void NotifyDownloading(bool is_downloading);
216 216
217 // Finishes starting the pipeline due to a call to load(). 217 // Finishes starting the pipeline due to a call to load().
218 void StartPipeline(); 218 void StartPipeline();
219 219
220 // Helpers that set the network/ready state and notifies the client if 220 // Helpers that set the network/ready state and notifies the client if
221 // they've changed. 221 // they've changed.
222 void SetNetworkState(WebKit::WebMediaPlayer::NetworkState state); 222 void SetNetworkState(blink::WebMediaPlayer::NetworkState state);
223 void SetReadyState(WebKit::WebMediaPlayer::ReadyState state); 223 void SetReadyState(blink::WebMediaPlayer::ReadyState state);
224 224
225 // Destroy resources held. 225 // Destroy resources held.
226 void Destroy(); 226 void Destroy();
227 227
228 // Getter method to |client_|. 228 // Getter method to |client_|.
229 WebKit::WebMediaPlayerClient* GetClient(); 229 blink::WebMediaPlayerClient* GetClient();
230 230
231 // Lets V8 know that player uses extra resources not managed by V8. 231 // Lets V8 know that player uses extra resources not managed by V8.
232 void IncrementExternallyAllocatedMemory(); 232 void IncrementExternallyAllocatedMemory();
233 233
234 // Actually do the work for generateKeyRequest/addKey so they can easily 234 // Actually do the work for generateKeyRequest/addKey so they can easily
235 // report results to UMA. 235 // report results to UMA.
236 MediaKeyException GenerateKeyRequestInternal( 236 MediaKeyException GenerateKeyRequestInternal(
237 const WebKit::WebString& key_system, 237 const blink::WebString& key_system,
238 const unsigned char* init_data, 238 const unsigned char* init_data,
239 unsigned init_data_length); 239 unsigned init_data_length);
240 MediaKeyException AddKeyInternal(const WebKit::WebString& key_system, 240 MediaKeyException AddKeyInternal(const blink::WebString& key_system,
241 const unsigned char* key, 241 const unsigned char* key,
242 unsigned key_length, 242 unsigned key_length,
243 const unsigned char* init_data, 243 const unsigned char* init_data,
244 unsigned init_data_length, 244 unsigned init_data_length,
245 const WebKit::WebString& session_id); 245 const blink::WebString& session_id);
246 MediaKeyException CancelKeyRequestInternal( 246 MediaKeyException CancelKeyRequestInternal(
247 const WebKit::WebString& key_system, 247 const blink::WebString& key_system,
248 const WebKit::WebString& session_id); 248 const blink::WebString& session_id);
249 249
250 // Gets the duration value reported by the pipeline. 250 // Gets the duration value reported by the pipeline.
251 double GetPipelineDuration() const; 251 double GetPipelineDuration() const;
252 252
253 // Notifies WebKit of the duration change. 253 // Notifies WebKit of the duration change.
254 void OnDurationChange(); 254 void OnDurationChange();
255 255
256 // Called by VideoRendererBase on its internal thread with the new frame to be 256 // Called by VideoRendererBase on its internal thread with the new frame to be
257 // painted. 257 // painted.
258 void FrameReady(const scoped_refptr<media::VideoFrame>& frame); 258 void FrameReady(const scoped_refptr<media::VideoFrame>& frame);
259 259
260 // Called when a paint or a new frame arrives to indicate that we are 260 // Called when a paint or a new frame arrives to indicate that we are
261 // no longer waiting for |current_frame_| to be painted. 261 // no longer waiting for |current_frame_| to be painted.
262 // |painting_frame| is set to true if |current_frame_| is being painted. 262 // |painting_frame| is set to true if |current_frame_| is being painted.
263 // False indicates |current_frame_| is being replaced with a new frame. 263 // False indicates |current_frame_| is being replaced with a new frame.
264 void DoneWaitingForPaint(bool painting_frame); 264 void DoneWaitingForPaint(bool painting_frame);
265 265
266 WebKit::WebFrame* frame_; 266 blink::WebFrame* frame_;
267 267
268 // TODO(hclam): get rid of these members and read from the pipeline directly. 268 // TODO(hclam): get rid of these members and read from the pipeline directly.
269 WebKit::WebMediaPlayer::NetworkState network_state_; 269 blink::WebMediaPlayer::NetworkState network_state_;
270 WebKit::WebMediaPlayer::ReadyState ready_state_; 270 blink::WebMediaPlayer::ReadyState ready_state_;
271 271
272 // Keep a list of buffered time ranges. 272 // Keep a list of buffered time ranges.
273 WebKit::WebTimeRanges buffered_; 273 blink::WebTimeRanges buffered_;
274 274
275 // Message loops for posting tasks on Chrome's main thread. Also used 275 // Message loops for posting tasks on Chrome's main thread. Also used
276 // for DCHECKs so methods calls won't execute in the wrong thread. 276 // for DCHECKs so methods calls won't execute in the wrong thread.
277 const scoped_refptr<base::MessageLoopProxy> main_loop_; 277 const scoped_refptr<base::MessageLoopProxy> main_loop_;
278 278
279 scoped_ptr<media::Pipeline> pipeline_; 279 scoped_ptr<media::Pipeline> pipeline_;
280 scoped_refptr<base::MessageLoopProxy> media_loop_; 280 scoped_refptr<base::MessageLoopProxy> media_loop_;
281 281
282 // The currently selected key system. Empty string means that no key system 282 // The currently selected key system. Empty string means that no key system
283 // has been selected. 283 // has been selected.
284 WebKit::WebString current_key_system_; 284 blink::WebString current_key_system_;
285 285
286 // The LoadType passed in the |load_type| parameter of the load() call. 286 // The LoadType passed in the |load_type| parameter of the load() call.
287 LoadType load_type_; 287 LoadType load_type_;
288 288
289 // Playback state. 289 // Playback state.
290 // 290 //
291 // TODO(scherkus): we have these because Pipeline favours the simplicity of a 291 // TODO(scherkus): we have these because Pipeline favours the simplicity of a
292 // single "playback rate" over worrying about paused/stopped etc... It forces 292 // single "playback rate" over worrying about paused/stopped etc... It forces
293 // all clients to manage the pause+playback rate externally, but is that 293 // all clients to manage the pause+playback rate externally, but is that
294 // really a bad thing? 294 // really a bad thing?
295 // 295 //
296 // TODO(scherkus): since SetPlaybackRate(0) is asynchronous and we don't want 296 // TODO(scherkus): since SetPlaybackRate(0) is asynchronous and we don't want
297 // to hang the render thread during pause(), we record the time at the same 297 // to hang the render thread during pause(), we record the time at the same
298 // time we pause and then return that value in currentTime(). Otherwise our 298 // time we pause and then return that value in currentTime(). Otherwise our
299 // clock can creep forward a little bit while the asynchronous 299 // clock can creep forward a little bit while the asynchronous
300 // SetPlaybackRate(0) is being executed. 300 // SetPlaybackRate(0) is being executed.
301 bool paused_; 301 bool paused_;
302 bool seeking_; 302 bool seeking_;
303 double playback_rate_; 303 double playback_rate_;
304 base::TimeDelta paused_time_; 304 base::TimeDelta paused_time_;
305 305
306 // Seek gets pending if another seek is in progress. Only last pending seek 306 // Seek gets pending if another seek is in progress. Only last pending seek
307 // will have effect. 307 // will have effect.
308 bool pending_seek_; 308 bool pending_seek_;
309 double pending_seek_seconds_; 309 double pending_seek_seconds_;
310 310
311 WebKit::WebMediaPlayerClient* client_; 311 blink::WebMediaPlayerClient* client_;
312 312
313 base::WeakPtr<WebMediaPlayerDelegate> delegate_; 313 base::WeakPtr<WebMediaPlayerDelegate> delegate_;
314 314
315 base::Callback<void(const base::Closure&)> defer_load_cb_; 315 base::Callback<void(const base::Closure&)> defer_load_cb_;
316 316
317 scoped_refptr<media::MediaLog> media_log_; 317 scoped_refptr<media::MediaLog> media_log_;
318 318
319 // Since accelerated compositing status is only known after the first layout, 319 // Since accelerated compositing status is only known after the first layout,
320 // we delay reporting it to UMA until that time. 320 // we delay reporting it to UMA until that time.
321 bool accelerated_compositing_reported_; 321 bool accelerated_compositing_reported_;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 374
375 // Text track objects get a unique index value when they're created. 375 // Text track objects get a unique index value when they're created.
376 int text_track_index_; 376 int text_track_index_;
377 377
378 DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl); 378 DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl);
379 }; 379 };
380 380
381 } // namespace content 381 } // namespace content
382 382
383 #endif // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_IMPL_H_ 383 #endif // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_IMPL_H_
OLDNEW
« no previous file with comments | « content/renderer/media/webmediaplayer_delegate.h ('k') | content/renderer/media/webmediaplayer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698