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 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_PARAMS_H_ 6 #define CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_PARAMS_H_ 7 8 #include "base/callback.h" 9 #include "base/memory/ref_counted.h" 10 11 namespace base { 12 class MessageLoopProxy; 13 } 14 15 namespace media { 16 class AudioRendererSink; 17 class GpuVideoAcceleratorFactories; 18 class MediaLog; 19 } 20 21 namespace content { 22 23 // Holds parameters for constructing WebMediaPlayerImpl without having 24 // to plumb arguments through various abstraction layers. 25 class WebMediaPlayerParams { 26 public: 27 // |message_loop_proxy| and |media_log| are the only required parameters; 28 // all others may be null. 29 WebMediaPlayerParams( 30 const scoped_refptr<base::MessageLoopProxy>& message_loop_proxy, 31 const base::Callback<void(const base::Closure&)>& defer_load_cb, 32 const scoped_refptr<media::AudioRendererSink>& audio_renderer_sink, 33 const scoped_refptr<media::GpuVideoAcceleratorFactories>& gpu_factories, 34 const scoped_refptr<media::MediaLog>& media_log); 35 ~WebMediaPlayerParams(); 36 37 const scoped_refptr<base::MessageLoopProxy>& message_loop_proxy() const { 38 return message_loop_proxy_; 39 } 40 41 base::Callback<void(const base::Closure&)> defer_load_cb() const { 42 return defer_load_cb_; 43 } 44 45 const scoped_refptr<media::AudioRendererSink>& audio_renderer_sink() const { 46 return audio_renderer_sink_; 47 } 48 49 const scoped_refptr<media::GpuVideoAcceleratorFactories>& gpu_factories() 50 const { 51 return gpu_factories_; 52 } 53 54 const scoped_refptr<media::MediaLog>& media_log() const { 55 return media_log_; 56 } 57 58 private: 59 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_; 60 base::Callback<void(const base::Closure&)> defer_load_cb_; 61 scoped_refptr<media::AudioRendererSink> audio_renderer_sink_; 62 scoped_refptr<media::GpuVideoAcceleratorFactories> gpu_factories_; 63 scoped_refptr<media::MediaLog> media_log_; 64 65 DISALLOW_IMPLICIT_CONSTRUCTORS(WebMediaPlayerParams); 66 }; 67 68 } // namespace media 69 70 #endif // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_PARAMS_H_ 71