#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"
class MediaLog;
class MediaPlayerEfl;
class WebMediaPlayerDelegate;
+class WebMediaPlayerEncryptedMediaClient;
}
namespace content {
// 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
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.
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&,
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,
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(
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);
// 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
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_;
// 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_;
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