[M49_2623] Chromium upversion to m49_2623 branch.
[platform/framework/web/chromium-efl.git] / tizen_src / chromium_impl / content / renderer / media / efl / webmediaplayer_efl.h
index 70d37f1..887a8b1 100644 (file)
 #include "cc/layers/video_frame_provider_client_impl.h"
 #include "content/renderer/media/efl/media_source_delegate_efl.h"
 #include "content/renderer/media/efl/renderer_media_player_manager_efl.h"
+#include "media/blink/webmediaplayer_util.h"
 #include "media/base/efl/media_player_efl.h"
 #include "media/blink/video_frame_compositor.h"
-#include "media/filters/skcanvas_video_renderer.h"
+#include "media/blink/webmediaplayer_params.h"
+#include "media/renderers/skcanvas_video_renderer.h"
 #include "third_party/WebKit/public/platform/WebMediaPlayer.h"
+#include "third_party/WebKit/public/platform/WebMediaPlayerEncryptedMediaClient.h"
 
 #if defined(TIZEN_MULTIMEDIA_EME_SUPPORT)
 #include "media/blink/encrypted_media_player_support.h"
@@ -35,6 +38,7 @@ class GpuVideoAcceleratorFactories;
 class MediaLog;
 class MediaPlayerEfl;
 class WebMediaPlayerDelegate;
+class WebMediaPlayerEncryptedMediaClient;
 }
 
 namespace content {
@@ -46,8 +50,6 @@ class RendererMediaPlayerManager;
 // player.
 class WebMediaPlayerEfl
     : public blink::WebMediaPlayer,
-      public cc::VideoFrameProvider,
-      public base::MessageLoop::DestructionObserver,
       public base::SupportsWeakPtr<WebMediaPlayerEfl> {
  public:
   // Construct a WebMediaPlayerEfl object. This class communicates
@@ -57,7 +59,8 @@ class WebMediaPlayerEfl
       RendererMediaPlayerManager* manager,
       blink::WebFrame* frame,
       blink::WebMediaPlayerClient* client,
-      base::WeakPtr<media::WebMediaPlayerDelegate> delegate);
+      base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
+      const media::WebMediaPlayerParams& params);
   ~WebMediaPlayerEfl() override;
 
   // blink::WebMediaPlayer implementation.
@@ -74,6 +77,9 @@ class WebMediaPlayerEfl
   void setVolume(double) override;
   blink::WebTimeRanges buffered() const override;
   blink::WebTimeRanges seekable() const override;
+  void setSinkId(const blink::WebString& sink_id,
+                 const blink::WebSecurityOrigin& security_origin,
+                 blink::WebSetSinkIdCallbacks* web_callback) override;
 
   void paint(blink::WebCanvas*,
       const blink::WebRect&,
@@ -109,15 +115,6 @@ class WebMediaPlayerEfl
   unsigned audioDecodedByteCount() const override;
   unsigned videoDecodedByteCount() const override;
 
-  // cc::VideoFrameProvider implementation.
-  void SetVideoFrameProviderClient(
-      cc::VideoFrameProvider::Client* client) override;
-  scoped_refptr<media::VideoFrame> GetCurrentFrame() override;
-  void PutCurrentFrame(
-      const scoped_refptr<media::VideoFrame>& frame) override {};
-
-  // Method inherited from DestructionObserver.
-  void WillDestroyCurrentMessageLoop() override {};
 #if defined(TIZEN_MULTIMEDIA_EME_SUPPORT)
   virtual MediaKeyException generateKeyRequest(
       const blink::WebString& key_system,
@@ -148,13 +145,16 @@ class WebMediaPlayerEfl
   void SetNetworkState(WebMediaPlayer::NetworkState state);
 
   void OnNewFrameAvailable(base::SharedMemoryHandle foreign_memory_handle,
-      uint32 length, base::TimeDelta timestamp);
+                           uint32_t length, base::TimeDelta timestamp);
 
-#if defined(TIZEN_MULTIMEDIA_PIXMAP_SUPPORT)
-  void OnPlatformSurfaceUpdated(int pixmap_id, base::TimeDelta timestamp);
+#if defined(TIZEN_TBM_SUPPORT)
+  void OnNewTbmBufferAvailable(
+      const gfx::TbmBufferHandle& tbm_handle,
+      base::TimeDelta timestamp,
+      const base::Closure& cb);
 #endif
 
-  void OnMediaDataChange(int format, int height, int width, int media);
+  void OnMediaDataChange(int width, int height, int media);
   void OnDurationChange(double duration);
   void OnTimeUpdate(double current_time);
   void OnBufferUpdate(
@@ -169,7 +169,15 @@ class WebMediaPlayerEfl
 
   void RequestPause();
 
+  // Called when a decoder detects that the key needed to decrypt the stream
+  // is not available.
+  void OnWaitingForDecryptionKey();
+
  private:
+  // Called after |defer_load_cb_| has decided to allow the load. If
+  // |defer_load_cb_| is null this is called immediately.
+  void DoLoad(LoadType load_type, const blink::WebURL& url);
+
   void OnNaturalSizeChanged(gfx::Size size);
   void OnOpacityChanged(bool opaque);
 
@@ -187,7 +195,7 @@ class WebMediaPlayerEfl
 
   // Message loops for posting tasks on Chrome's main thread. Also used
   // for DCHECKs so methods calls won't execute in the wrong thread.
-  const scoped_refptr<base::MessageLoopProxy> main_loop_;
+  const scoped_refptr<base::SingleThreadTaskRunner> main_loop_;
   scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
 
   // Manager for managing this object and for delegating method calls on
@@ -195,11 +203,14 @@ class WebMediaPlayerEfl
   content::RendererMediaPlayerManager* manager_;
 
   blink::WebMediaPlayerClient* client_;
+  blink::WebMediaPlayerEncryptedMediaClient* encrypted_client_;
 
   scoped_refptr<media::MediaLog> media_log_;
 
   base::WeakPtr<media::WebMediaPlayerDelegate> delegate_;
 
+  media::WebMediaPlayerParams::DeferLoadCB defer_load_cb_;
+
   // The compositor layer for displaying the video content when using
   // composited playback.
   scoped_ptr<cc_blink::WebLayerImpl> video_weblayer_;
@@ -216,9 +227,8 @@ class WebMediaPlayerEfl
   // Player ID assigned by the |manager_|.
   int player_id_;
 
-  uint32 gst_video_format_;
-  int gst_width_;
-  int gst_height_;
+  int video_width_;
+  int video_height_;
 
   bool audio_;
   bool video_;
@@ -240,7 +250,7 @@ class WebMediaPlayerEfl
   mutable bool did_loading_progress_;
 
   // Factories for supporting video accelerators. May be null.
-  scoped_refptr<media::GpuVideoAcceleratorFactories> gpu_factories_;
+  media::GpuVideoAcceleratorFactories* gpu_factories_;
 #if defined(TIZEN_MULTIMEDIA_EME_SUPPORT)
   scoped_ptr<media::EncryptedMediaPlayerSupport> encrypted_media_support_;
 #endif