Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: media/blink/webmediaplayer_impl.cc

Issue 1133033003: Eliminate MediaPlayer & MediaPlayerClient abstractions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: added new path for createMediaPlayer Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/blink/webmediaplayer_impl.cc
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index 201ab1701908483c5db5f53e9c33861b8d1f0a8f..acc31def8054823e813f94f259b7318010be1d2d 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -144,6 +144,75 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))),
encrypted_media_support_(cdm_factory,
client,
+ nullptr,
+ params.media_permission(),
+ base::Bind(&WebMediaPlayerImpl::SetCdm,
+ AsWeakPtr(),
+ base::Bind(&IgnoreCdmAttached))),
+ renderer_factory_(renderer_factory.Pass()) {
+ media_log_->AddEvent(
+ media_log_->CreateEvent(MediaLogEvent::WEBMEDIAPLAYER_CREATED));
+
+ if (params.initial_cdm()) {
+ SetCdm(base::Bind(&IgnoreCdmAttached),
+ ToWebContentDecryptionModuleImpl(params.initial_cdm())
+ ->GetCdmContext());
+ }
+
+ // TODO(xhwang): When we use an external Renderer, many methods won't work,
+ // e.g. GetCurrentFrameFromCompositor(). See http://crbug.com/434861
+
+ // Use the null sink if no sink was provided.
+ audio_source_provider_ = new WebAudioSourceProviderImpl(
+ params.audio_renderer_sink().get()
+ ? params.audio_renderer_sink()
+ : new NullAudioSink(media_task_runner_));
+}
+
+WebMediaPlayerImpl::WebMediaPlayerImpl(
+ blink::WebLocalFrame* frame,
+ blink::WebMediaPlayerClient* client,
+ blink::WebMediaPlayerEncryptedMediaClient* encrypted_client,
+ base::WeakPtr<WebMediaPlayerDelegate> delegate,
+ scoped_ptr<RendererFactory> renderer_factory,
+ CdmFactory* cdm_factory,
+ const WebMediaPlayerParams& params)
+ : frame_(frame),
+ network_state_(WebMediaPlayer::NetworkStateEmpty),
+ ready_state_(WebMediaPlayer::ReadyStateHaveNothing),
+ preload_(BufferedDataSource::AUTO),
+ main_task_runner_(base::ThreadTaskRunnerHandle::Get()),
+ media_task_runner_(params.media_task_runner()),
+ media_log_(params.media_log()),
+ pipeline_(media_task_runner_, media_log_.get()),
+ load_type_(LoadTypeURL),
+ opaque_(false),
+ paused_(true),
+ seeking_(false),
+ playback_rate_(0.0),
+ ended_(false),
+ pending_seek_(false),
+ pending_seek_seconds_(0.0f),
+ should_notify_time_changed_(false),
+ client_(client),
+ encrypted_client_(encrypted_client),
+ delegate_(delegate),
+ defer_load_cb_(params.defer_load_cb()),
+ context_3d_cb_(params.context_3d_cb()),
+ supports_save_(true),
+ chunk_demuxer_(NULL),
+ // Threaded compositing isn't enabled universally yet.
+ compositor_task_runner_(
+ params.compositor_task_runner()
+ ? params.compositor_task_runner()
+ : base::MessageLoop::current()->task_runner()),
+ compositor_(new VideoFrameCompositor(
+ compositor_task_runner_,
+ BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged),
+ BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))),
+ encrypted_media_support_(cdm_factory,
+ client,
+ encrypted_client,
params.media_permission(),
base::Bind(&WebMediaPlayerImpl::SetCdm,
AsWeakPtr(),
@@ -686,15 +755,23 @@ void WebMediaPlayerImpl::OnEncryptedMediaInitData(
client_->encrypted(ConvertToWebInitDataType(init_data_type),
vector_as_array(&init_data),
base::saturated_cast<unsigned int>(init_data.size()));
+ if (encrypted_client_)
+ encrypted_client_->encrypted(
+ ConvertToWebInitDataType(init_data_type), vector_as_array(&init_data),
+ base::saturated_cast<unsigned int>(init_data.size()));
}
void WebMediaPlayerImpl::OnWaitingForDecryptionKey() {
client_->didBlockPlaybackWaitingForKey();
+ if (encrypted_client_)
+ encrypted_client_->didBlockPlaybackWaitingForKey();
// TODO(jrummell): didResumePlaybackBlockedForKey() should only be called
// when a key has been successfully added (e.g. OnSessionKeysChange() with
// |has_additional_usable_key| = true). http://crbug.com/461903
client_->didResumePlaybackBlockedForKey();
+ if (encrypted_client_)
+ encrypted_client_->didResumePlaybackBlockedForKey();
}
void WebMediaPlayerImpl::SetCdm(const CdmAttachedCB& cdm_attached_cb,

Powered by Google App Engine
This is Rietveld 408576698