content::RendererMediaPlayerManager* manager,
blink::WebFrame* frame,
blink::WebMediaPlayerClient* client,
- base::WeakPtr<media::WebMediaPlayerDelegate> delegate) {
- return new WebMediaPlayerEfl(manager, frame, client, delegate);
+ base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
+ const media::WebMediaPlayerParams& params) {
+ return new WebMediaPlayerEfl(manager, frame, client, delegate, params);
}
WebMediaPlayerEfl::WebMediaPlayerEfl(
RendererMediaPlayerManager* manager,
blink::WebFrame* frame,
blink::WebMediaPlayerClient* client,
- base::WeakPtr<media::WebMediaPlayerDelegate> delegate)
+ base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
+ const media::WebMediaPlayerParams& params)
: frame_(frame),
network_state_(blink::WebMediaPlayer::NetworkStateEmpty),
ready_state_(blink::WebMediaPlayer::ReadyStateHaveNothing),
main_loop_(base::ThreadTaskRunnerHandle::Get()),
- media_task_runner_(
- RenderThreadImpl::current()->GetMediaThreadTaskRunner()),
+ media_task_runner_(params.media_task_runner()),
manager_(manager),
client_(client),
- media_log_(new RenderMediaLog()),
+ media_log_(params.media_log()),
delegate_(delegate),
+ defer_load_cb_(params.defer_load_cb()),
// Threaded compositing isn't enabled universally yet.
compositor_task_runner_(
- RenderThreadImpl::current()->compositor_task_runner().get()
- ? RenderThreadImpl::current()->compositor_task_runner()
- : base::ThreadTaskRunnerHandle::Get()),
+ params.compositor_task_runner()
+ ? params.compositor_task_runner()
+ : base::MessageLoop::current()->task_runner()),
compositor_(new media::VideoFrameCompositor(
compositor_task_runner_,
BIND_TO_RENDER_LOOP(&WebMediaPlayerEfl::OnNaturalSizeChanged),
void WebMediaPlayerEfl::load(LoadType load_type,
const blink::WebURL& url,
- CORSMode cors_mode) {
+ CORSMode /* cors_mode */) {
+ if (!defer_load_cb_.is_null()) {
+ defer_load_cb_.Run(base::Bind(
+ &WebMediaPlayerEfl::DoLoad, AsWeakPtr(), load_type, url));
+ return;
+ }
+ DoLoad(load_type, url);
+}
+
+void WebMediaPlayerEfl::DoLoad(LoadType load_type, const blink::WebURL& url) {
int demuxer_client_id = 0;
if (load_type == LoadTypeMediaSource) {
// EFL GST-package on desktop cannot handle AAC decoding.
#include "media/base/efl/media_player_efl.h"
#include "media/blink/skcanvas_video_renderer.h"
#include "media/blink/video_frame_compositor.h"
+#include "media/blink/webmediaplayer_params.h"
#include "third_party/WebKit/public/platform/WebMediaPlayer.h"
#include "third_party/WebKit/public/platform/WebMediaPlayerEncryptedMediaClient.h"
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 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);
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_;