OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 12 matching lines...) Expand all Loading... |
23 #include <string> | 23 #include <string> |
24 | 24 |
25 #include "base/memory/ref_counted.h" | 25 #include "base/memory/ref_counted.h" |
26 #include "base/memory/scoped_ptr.h" | 26 #include "base/memory/scoped_ptr.h" |
27 #include "base/memory/weak_ptr.h" | 27 #include "base/memory/weak_ptr.h" |
28 #include "base/threading/thread.h" | 28 #include "base/threading/thread.h" |
29 #include "googleurl/src/gurl.h" | 29 #include "googleurl/src/gurl.h" |
30 #include "media/base/audio_renderer_sink.h" | 30 #include "media/base/audio_renderer_sink.h" |
31 #include "media/base/decryptor.h" | 31 #include "media/base/decryptor.h" |
32 #include "media/base/pipeline.h" | 32 #include "media/base/pipeline.h" |
| 33 #include "media/filters/gpu_video_decoder.h" |
33 #include "media/filters/skcanvas_video_renderer.h" | 34 #include "media/filters/skcanvas_video_renderer.h" |
34 #include "skia/ext/platform_canvas.h" | 35 #include "skia/ext/platform_canvas.h" |
35 #include "third_party/WebKit/Source/Platform/chromium/public/WebGraphicsContext3
D.h" | 36 #include "third_party/WebKit/Source/Platform/chromium/public/WebGraphicsContext3
D.h" |
36 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAudioSourceProvide
r.h" | 37 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAudioSourceProvide
r.h" |
37 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayer.h" | 38 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayer.h" |
38 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerClient.
h" | 39 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerClient.
h" |
39 #include "webkit/media/crypto/key_systems.h" | 40 #include "webkit/media/crypto/key_systems.h" |
40 #include "webkit/media/crypto/proxy_decryptor.h" | 41 #include "webkit/media/crypto/proxy_decryptor.h" |
41 | 42 |
42 class RenderAudioSourceProvider; | 43 class RenderAudioSourceProvider; |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 // Gets the duration value reported by the pipeline. | 247 // Gets the duration value reported by the pipeline. |
247 double GetPipelineDuration() const; | 248 double GetPipelineDuration() const; |
248 | 249 |
249 // Notifies WebKit of the duration change. | 250 // Notifies WebKit of the duration change. |
250 void OnDurationChange(); | 251 void OnDurationChange(); |
251 | 252 |
252 // Called by VideoRendererBase on its internal thread with the new frame to be | 253 // Called by VideoRendererBase on its internal thread with the new frame to be |
253 // painted. | 254 // painted. |
254 void FrameReady(const scoped_refptr<media::VideoFrame>& frame); | 255 void FrameReady(const scoped_refptr<media::VideoFrame>& frame); |
255 | 256 |
| 257 // Builds a FilterCollection based on the current configuration of |
| 258 // WebMediaPlayerImpl. |
| 259 scoped_ptr<media::FilterCollection> BuildFilterCollection(); |
| 260 |
256 WebKit::WebFrame* frame_; | 261 WebKit::WebFrame* frame_; |
257 | 262 |
258 // TODO(hclam): get rid of these members and read from the pipeline directly. | 263 // TODO(hclam): get rid of these members and read from the pipeline directly. |
259 WebKit::WebMediaPlayer::NetworkState network_state_; | 264 WebKit::WebMediaPlayer::NetworkState network_state_; |
260 WebKit::WebMediaPlayer::ReadyState ready_state_; | 265 WebKit::WebMediaPlayer::ReadyState ready_state_; |
261 | 266 |
262 // Keep a list of buffered time ranges. | 267 // Keep a list of buffered time ranges. |
263 WebKit::WebTimeRanges buffered_; | 268 WebKit::WebTimeRanges buffered_; |
264 | 269 |
265 // Message loops for posting tasks on Chrome's main thread. Also used | 270 // Message loops for posting tasks on Chrome's main thread. Also used |
266 // for DCHECKs so methods calls won't execute in the wrong thread. | 271 // for DCHECKs so methods calls won't execute in the wrong thread. |
267 const scoped_refptr<base::MessageLoopProxy> main_loop_; | 272 const scoped_refptr<base::MessageLoopProxy> main_loop_; |
268 | 273 |
269 scoped_ptr<media::FilterCollection> filter_collection_; | |
270 scoped_refptr<media::Pipeline> pipeline_; | 274 scoped_refptr<media::Pipeline> pipeline_; |
271 base::Thread media_thread_; | 275 base::Thread media_thread_; |
272 | 276 |
273 // The currently selected key system. Empty string means that no key system | 277 // The currently selected key system. Empty string means that no key system |
274 // has been selected. | 278 // has been selected. |
275 WebKit::WebString current_key_system_; | 279 WebKit::WebString current_key_system_; |
276 | 280 |
277 // Playback state. | 281 // Playback state. |
278 // | 282 // |
279 // TODO(scherkus): we have these because Pipeline favours the simplicity of a | 283 // TODO(scherkus): we have these because Pipeline favours the simplicity of a |
(...skipping 23 matching lines...) Expand all Loading... |
303 MediaStreamClient* media_stream_client_; | 307 MediaStreamClient* media_stream_client_; |
304 | 308 |
305 scoped_refptr<media::MediaLog> media_log_; | 309 scoped_refptr<media::MediaLog> media_log_; |
306 | 310 |
307 // Since accelerated compositing status is only known after the first layout, | 311 // Since accelerated compositing status is only known after the first layout, |
308 // we delay reporting it to UMA until that time. | 312 // we delay reporting it to UMA until that time. |
309 bool accelerated_compositing_reported_; | 313 bool accelerated_compositing_reported_; |
310 | 314 |
311 bool incremented_externally_allocated_memory_; | 315 bool incremented_externally_allocated_memory_; |
312 | 316 |
| 317 // Factories for supporting GpuVideoDecoder. May be null. |
| 318 scoped_refptr<media::GpuVideoDecoder::Factories> gpu_factories_; |
| 319 |
313 // Routes audio playback to either AudioRendererSink or WebAudio. | 320 // Routes audio playback to either AudioRendererSink or WebAudio. |
314 scoped_refptr<WebAudioSourceProviderImpl> audio_source_provider_; | 321 scoped_refptr<WebAudioSourceProviderImpl> audio_source_provider_; |
315 | 322 |
316 bool is_local_source_; | 323 bool is_local_source_; |
317 bool supports_save_; | 324 bool supports_save_; |
318 | 325 |
319 // The decryptor that manages decryption keys and decrypts encrypted frames. | 326 // The decryptor that manages decryption keys and decrypts encrypted frames. |
320 scoped_ptr<ProxyDecryptor> decryptor_; | 327 scoped_ptr<ProxyDecryptor> decryptor_; |
321 | 328 |
322 bool starting_; | 329 bool starting_; |
(...skipping 17 matching lines...) Expand all Loading... |
340 media::SkCanvasVideoRenderer skcanvas_video_renderer_; | 347 media::SkCanvasVideoRenderer skcanvas_video_renderer_; |
341 scoped_refptr<media::VideoFrame> current_frame_; | 348 scoped_refptr<media::VideoFrame> current_frame_; |
342 bool pending_repaint_; | 349 bool pending_repaint_; |
343 | 350 |
344 DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl); | 351 DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl); |
345 }; | 352 }; |
346 | 353 |
347 } // namespace webkit_media | 354 } // namespace webkit_media |
348 | 355 |
349 #endif // WEBKIT_MEDIA_WEBMEDIAPLAYER_IMPL_H_ | 356 #endif // WEBKIT_MEDIA_WEBMEDIAPLAYER_IMPL_H_ |
OLD | NEW |