Home | History | Annotate | Download | only in media
      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 GpuVideoDecoderFactories;
     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::GpuVideoDecoderFactories>& 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::GpuVideoDecoderFactories>& gpu_factories() const {
     50     return gpu_factories_;
     51   }
     52 
     53   const scoped_refptr<media::MediaLog>& media_log() const {
     54     return media_log_;
     55   }
     56 
     57  private:
     58   scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
     59   base::Callback<void(const base::Closure&)> defer_load_cb_;
     60   scoped_refptr<media::AudioRendererSink> audio_renderer_sink_;
     61   scoped_refptr<media::GpuVideoDecoderFactories> gpu_factories_;
     62   scoped_refptr<media::MediaLog> media_log_;
     63 
     64   DISALLOW_IMPLICIT_CONSTRUCTORS(WebMediaPlayerParams);
     65 };
     66 
     67 }  // namespace media
     68 
     69 #endif  // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_PARAMS_H_
     70