| Index: content/renderer/media/webmediaplayer_ms.cc
|
| diff --git a/content/renderer/media/webmediaplayer_ms.cc b/content/renderer/media/webmediaplayer_ms.cc
|
| index e9c0723231b4665afebf03e9c7f84eca6dfa432e..87ab3a76d4a1cf3a8955c03bcba9ae0d386eed61 100644
|
| --- a/content/renderer/media/webmediaplayer_ms.cc
|
| +++ b/content/renderer/media/webmediaplayer_ms.cc
|
| @@ -20,8 +20,6 @@
|
| #include "content/public/renderer/media_stream_audio_renderer.h"
|
| #include "content/public/renderer/media_stream_renderer_factory.h"
|
| #include "content/public/renderer/media_stream_video_renderer.h"
|
| -#include "content/renderer/media/media_stream_audio_track.h"
|
| -#include "content/renderer/media/media_stream_video_track.h"
|
| #include "content/renderer/media/web_media_element_source_utils.h"
|
| #include "content/renderer/media/webmediaplayer_ms_compositor.h"
|
| #include "content/renderer/media/webrtc_logging.h"
|
| @@ -40,14 +38,6 @@
|
| #include "third_party/WebKit/public/platform/WebRect.h"
|
| #include "third_party/WebKit/public/platform/WebSize.h"
|
| #include "third_party/WebKit/public/web/WebLocalFrame.h"
|
| -
|
| -namespace {
|
| -enum class RendererReloadAction {
|
| - KEEP_RENDERER,
|
| - REMOVE_RENDERER,
|
| - NEW_RENDERER
|
| -};
|
| -} // namespace
|
|
|
| namespace content {
|
|
|
| @@ -201,12 +191,6 @@
|
| DVLOG(1) << __func__;
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| - if (!web_stream_.IsNull()) {
|
| - MediaStream* native_stream = MediaStream::GetMediaStream(web_stream_);
|
| - if (native_stream)
|
| - native_stream->RemoveObserver(this);
|
| - }
|
| -
|
| // Destruct compositor resources in the proper order.
|
| get_client()->SetWebLayer(nullptr);
|
| if (video_weblayer_)
|
| @@ -240,29 +224,24 @@
|
| // TODO(acolwell): Change this to DCHECK_EQ(load_type, LoadTypeMediaStream)
|
| // once Blink-side changes land.
|
| DCHECK_NE(load_type, kLoadTypeMediaSource);
|
| - web_stream_ = GetWebMediaStreamFromWebMediaPlayerSource(source);
|
| - if (!web_stream_.IsNull()) {
|
| - MediaStream* native_stream = MediaStream::GetMediaStream(web_stream_);
|
| - if (native_stream)
|
| - native_stream->AddObserver(this);
|
| - }
|
| + blink::WebMediaStream web_stream =
|
| + GetWebMediaStreamFromWebMediaPlayerSource(source);
|
|
|
| compositor_ = new WebMediaPlayerMSCompositor(
|
| - compositor_task_runner_, io_task_runner_, web_stream_, AsWeakPtr());
|
| + compositor_task_runner_, io_task_runner_, web_stream, AsWeakPtr());
|
|
|
| SetNetworkState(WebMediaPlayer::kNetworkStateLoading);
|
| SetReadyState(WebMediaPlayer::kReadyStateHaveNothing);
|
| std::string stream_id =
|
| - web_stream_.IsNull() ? std::string() : web_stream_.Id().Utf8();
|
| + web_stream.IsNull() ? std::string() : web_stream.Id().Utf8();
|
| media_log_->AddEvent(media_log_->CreateLoadEvent(stream_id));
|
|
|
| frame_deliverer_.reset(new WebMediaPlayerMS::FrameDeliverer(
|
| AsWeakPtr(),
|
| base::Bind(&WebMediaPlayerMSCompositor::EnqueueFrame, compositor_)));
|
| video_frame_provider_ = renderer_factory_->GetVideoRenderer(
|
| - web_stream_,
|
| - media::BindToCurrentLoop(
|
| - base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr())),
|
| + web_stream, media::BindToCurrentLoop(base::Bind(
|
| + &WebMediaPlayerMS::OnSourceError, AsWeakPtr())),
|
| frame_deliverer_->GetRepaintCallback(), io_task_runner_,
|
| media_task_runner_, worker_task_runner_, gpu_factories_);
|
|
|
| @@ -279,7 +258,7 @@
|
| }
|
|
|
| audio_renderer_ = renderer_factory_->GetAudioRenderer(
|
| - web_stream_, routing_id, initial_audio_output_device_id_,
|
| + web_stream, routing_id, initial_audio_output_device_id_,
|
| initial_security_origin_);
|
|
|
| if (!audio_renderer_)
|
| @@ -293,27 +272,10 @@
|
| if (audio_renderer_) {
|
| audio_renderer_->SetVolume(volume_);
|
| audio_renderer_->Start();
|
| -
|
| - // Store the ID of audio track being played in |current_video_track_id_|
|
| - blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
|
| - if (!web_stream_.IsNull()) {
|
| - web_stream_.AudioTracks(audio_tracks);
|
| - DCHECK_GT(audio_tracks.size(), 0U);
|
| - current_audio_track_id_ = audio_tracks[0].Id();
|
| - }
|
| - }
|
| -
|
| - if (video_frame_provider_) {
|
| + }
|
| + if (video_frame_provider_)
|
| video_frame_provider_->Start();
|
|
|
| - // Store the ID of video track being played in |current_video_track_id_|
|
| - if (!web_stream_.IsNull()) {
|
| - blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
|
| - web_stream_.VideoTracks(video_tracks);
|
| - DCHECK_GT(video_tracks.size(), 0U);
|
| - current_video_track_id_ = video_tracks[0].Id();
|
| - }
|
| - }
|
| // When associated with an <audio> element, we don't want to wait for the
|
| // first video fram to become available as we do for <video> elements
|
| // (<audio> elements can also be assigned video tracks).
|
| @@ -326,113 +288,6 @@
|
| }
|
| }
|
|
|
| -void WebMediaPlayerMS::TrackAdded(const blink::WebMediaStreamTrack& track) {
|
| - Reload();
|
| -}
|
| -
|
| -void WebMediaPlayerMS::TrackRemoved(const blink::WebMediaStreamTrack& track) {
|
| - Reload();
|
| -}
|
| -
|
| -void WebMediaPlayerMS::Reload() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - if (web_stream_.IsNull())
|
| - return;
|
| -
|
| - ReloadVideo();
|
| - ReloadAudio();
|
| -}
|
| -
|
| -void WebMediaPlayerMS::ReloadVideo() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - DCHECK(!web_stream_.IsNull());
|
| - blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
|
| - // VideoTracks() is a getter.
|
| - web_stream_.VideoTracks(video_tracks);
|
| -
|
| - RendererReloadAction renderer_action = RendererReloadAction::KEEP_RENDERER;
|
| - if (video_tracks.IsEmpty()) {
|
| - if (video_frame_provider_)
|
| - renderer_action = RendererReloadAction::REMOVE_RENDERER;
|
| - current_video_track_id_ = blink::WebString();
|
| - } else if (video_tracks[0].Id() != current_video_track_id_) {
|
| - renderer_action = RendererReloadAction::NEW_RENDERER;
|
| - current_video_track_id_ = video_tracks[0].Id();
|
| - }
|
| -
|
| - switch (renderer_action) {
|
| - case RendererReloadAction::NEW_RENDERER:
|
| - if (video_frame_provider_)
|
| - video_frame_provider_->Stop();
|
| -
|
| - video_frame_provider_ = renderer_factory_->GetVideoRenderer(
|
| - web_stream_,
|
| - media::BindToCurrentLoop(
|
| - base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr())),
|
| - frame_deliverer_->GetRepaintCallback(), io_task_runner_,
|
| - media_task_runner_, worker_task_runner_, gpu_factories_);
|
| - DCHECK(video_frame_provider_);
|
| - video_frame_provider_->Start();
|
| - break;
|
| -
|
| - case RendererReloadAction::REMOVE_RENDERER:
|
| - video_frame_provider_->Stop();
|
| - video_frame_provider_ = nullptr;
|
| - break;
|
| -
|
| - default:
|
| - return;
|
| - }
|
| -
|
| - DCHECK_NE(renderer_action, RendererReloadAction::KEEP_RENDERER);
|
| - if (!paused_)
|
| - delegate_->DidPlayerSizeChange(delegate_id_, NaturalSize());
|
| -}
|
| -
|
| -void WebMediaPlayerMS::ReloadAudio() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - DCHECK(!web_stream_.IsNull());
|
| - RenderFrame* const frame = RenderFrame::FromWebFrame(frame_);
|
| - if (!frame)
|
| - return;
|
| -
|
| - blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
|
| - // AudioTracks() is a getter.
|
| - web_stream_.AudioTracks(audio_tracks);
|
| -
|
| - RendererReloadAction renderer_action = RendererReloadAction::KEEP_RENDERER;
|
| - if (audio_tracks.IsEmpty()) {
|
| - if (audio_renderer_)
|
| - renderer_action = RendererReloadAction::REMOVE_RENDERER;
|
| - current_audio_track_id_ = blink::WebString();
|
| - } else if (audio_tracks[0].Id() != current_video_track_id_) {
|
| - renderer_action = RendererReloadAction::NEW_RENDERER;
|
| - current_audio_track_id_ = audio_tracks[0].Id();
|
| - }
|
| -
|
| - switch (renderer_action) {
|
| - case RendererReloadAction::NEW_RENDERER:
|
| - if (audio_renderer_)
|
| - audio_renderer_->Stop();
|
| -
|
| - audio_renderer_ = renderer_factory_->GetAudioRenderer(
|
| - web_stream_, frame->GetRoutingID(), initial_audio_output_device_id_,
|
| - initial_security_origin_);
|
| - audio_renderer_->SetVolume(volume_);
|
| - audio_renderer_->Start();
|
| - audio_renderer_->Play();
|
| - break;
|
| -
|
| - case RendererReloadAction::REMOVE_RENDERER:
|
| - audio_renderer_->Stop();
|
| - audio_renderer_ = nullptr;
|
| - break;
|
| -
|
| - default:
|
| - break;
|
| - }
|
| -}
|
| -
|
| void WebMediaPlayerMS::Play() {
|
| DVLOG(1) << __func__;
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| @@ -539,9 +394,6 @@
|
|
|
| blink::WebSize WebMediaPlayerMS::NaturalSize() const {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| - if (!video_frame_provider_)
|
| - return blink::WebSize();
|
| -
|
| if (video_rotation_ == media::VIDEO_ROTATION_90 ||
|
| video_rotation_ == media::VideoRotation::VIDEO_ROTATION_270) {
|
| const gfx::Size& current_size = compositor_->GetCurrentSize();
|
|
|