| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/media/webmediaplayer_ms.h" | 5 #include "content/renderer/media/webmediaplayer_ms.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 scoped_refptr<media::VideoFrame> CopyFrameToYV12( | 55 scoped_refptr<media::VideoFrame> CopyFrameToYV12( |
| 56 const scoped_refptr<media::VideoFrame>& frame, | 56 const scoped_refptr<media::VideoFrame>& frame, |
| 57 media::SkCanvasVideoRenderer* video_renderer) { | 57 media::SkCanvasVideoRenderer* video_renderer) { |
| 58 const scoped_refptr<media::VideoFrame> new_frame = | 58 const scoped_refptr<media::VideoFrame> new_frame = |
| 59 media::VideoFrame::CreateFrame(media::PIXEL_FORMAT_YV12, | 59 media::VideoFrame::CreateFrame(media::PIXEL_FORMAT_YV12, |
| 60 frame->coded_size(), frame->visible_rect(), | 60 frame->coded_size(), frame->visible_rect(), |
| 61 frame->natural_size(), frame->timestamp()); | 61 frame->natural_size(), frame->timestamp()); |
| 62 | 62 |
| 63 if (frame->HasTextures()) { | 63 if (frame->HasTextures()) { |
| 64 DCHECK(frame->format() == media::PIXEL_FORMAT_ARGB || | 64 DCHECK(frame->format() == media::PIXEL_FORMAT_ARGB || |
| 65 frame->format() == media::PIXEL_FORMAT_XRGB); | 65 frame->format() == media::PIXEL_FORMAT_XRGB || |
| 66 frame->format() == media::PIXEL_FORMAT_I420 || |
| 67 frame->format() == media::PIXEL_FORMAT_UYVY); |
| 66 SkBitmap bitmap; | 68 SkBitmap bitmap; |
| 67 bitmap.allocN32Pixels(frame->visible_rect().width(), | 69 bitmap.allocN32Pixels(frame->visible_rect().width(), |
| 68 frame->visible_rect().height()); | 70 frame->visible_rect().height()); |
| 69 SkCanvas canvas(bitmap); | 71 SkCanvas canvas(bitmap); |
| 70 | 72 |
| 71 cc::ContextProvider* const provider = | 73 cc::ContextProvider* const provider = |
| 72 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); | 74 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); |
| 73 if (provider) { | 75 if (provider) { |
| 74 const media::Context3D context_3d = | 76 const media::Context3D context_3d = |
| 75 media::Context3D(provider->ContextGL(), provider->GrContext()); | 77 media::Context3D(provider->ContextGL(), provider->GrContext()); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 96 } | 98 } |
| 97 | 99 |
| 98 } // anonymous namespace | 100 } // anonymous namespace |
| 99 | 101 |
| 100 WebMediaPlayerMS::WebMediaPlayerMS( | 102 WebMediaPlayerMS::WebMediaPlayerMS( |
| 101 blink::WebFrame* frame, | 103 blink::WebFrame* frame, |
| 102 blink::WebMediaPlayerClient* client, | 104 blink::WebMediaPlayerClient* client, |
| 103 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, | 105 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, |
| 104 media::MediaLog* media_log, | 106 media::MediaLog* media_log, |
| 105 scoped_ptr<MediaStreamRendererFactory> factory, | 107 scoped_ptr<MediaStreamRendererFactory> factory, |
| 106 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner) | 108 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner, |
| 109 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, |
| 110 const scoped_refptr<base::TaskRunner>& worker_task_runner, |
| 111 const scoped_refptr<media::GpuVideoAcceleratorFactories>& gpu_factories) |
| 107 : frame_(frame), | 112 : frame_(frame), |
| 108 network_state_(WebMediaPlayer::NetworkStateEmpty), | 113 network_state_(WebMediaPlayer::NetworkStateEmpty), |
| 109 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), | 114 ready_state_(WebMediaPlayer::ReadyStateHaveNothing), |
| 110 buffered_(static_cast<size_t>(0)), | 115 buffered_(static_cast<size_t>(0)), |
| 111 volume_(1.0f), | 116 volume_(1.0f), |
| 112 client_(client), | 117 client_(client), |
| 113 delegate_(delegate), | 118 delegate_(delegate), |
| 114 paused_(true), | 119 paused_(true), |
| 115 received_first_frame_(false), | 120 received_first_frame_(false), |
| 116 media_log_(media_log), | 121 media_log_(media_log), |
| 117 renderer_factory_(factory.Pass()), | 122 renderer_factory_(factory.Pass()), |
| 123 media_task_runner_(media_task_runner), |
| 124 worker_task_runner_(worker_task_runner), |
| 125 gpu_factories_(gpu_factories), |
| 118 compositor_(new Compositor(compositor_task_runner)), | 126 compositor_(new Compositor(compositor_task_runner)), |
| 119 compositor_task_runner_(compositor_task_runner) { | 127 compositor_task_runner_(compositor_task_runner) { |
| 120 DVLOG(1) << "WebMediaPlayerMS::ctor"; | 128 DVLOG(1) << "WebMediaPlayerMS::ctor"; |
| 121 media_log_->AddEvent( | 129 media_log_->AddEvent( |
| 122 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); | 130 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); |
| 123 } | 131 } |
| 124 | 132 |
| 125 WebMediaPlayerMS::~WebMediaPlayerMS() { | 133 WebMediaPlayerMS::~WebMediaPlayerMS() { |
| 126 DVLOG(1) << "WebMediaPlayerMS::dtor"; | 134 DVLOG(1) << "WebMediaPlayerMS::dtor"; |
| 127 DCHECK(thread_checker_.CalledOnValidThread()); | 135 DCHECK(thread_checker_.CalledOnValidThread()); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 uint32 hash_value = base::Hash(url.string().utf8()); | 177 uint32 hash_value = base::Hash(url.string().utf8()); |
| 170 compositor_->SetSerial(((hash_value & 0x7FFFFFFF) << 1) | (remote ? 1 : 0)); | 178 compositor_->SetSerial(((hash_value & 0x7FFFFFFF) << 1) | (remote ? 1 : 0)); |
| 171 | 179 |
| 172 SetNetworkState(WebMediaPlayer::NetworkStateLoading); | 180 SetNetworkState(WebMediaPlayer::NetworkStateLoading); |
| 173 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); | 181 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); |
| 174 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec())); | 182 media_log_->AddEvent(media_log_->CreateLoadEvent(url.spec())); |
| 175 | 183 |
| 176 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider( | 184 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider( |
| 177 url, | 185 url, |
| 178 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), | 186 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), |
| 179 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr())); | 187 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr()), |
| 188 media_task_runner_, |
| 189 worker_task_runner_, |
| 190 gpu_factories_); |
| 180 | 191 |
| 181 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); | 192 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); |
| 182 audio_renderer_ = renderer_factory_->GetAudioRenderer( | 193 audio_renderer_ = renderer_factory_->GetAudioRenderer( |
| 183 url, frame->GetRoutingID(), std::string(), url::Origin()); | 194 url, frame->GetRoutingID(), std::string(), url::Origin()); |
| 184 | 195 |
| 185 if (!video_frame_provider_ && !audio_renderer_) { | 196 if (!video_frame_provider_ && !audio_renderer_) { |
| 186 SetNetworkState(WebMediaPlayer::NetworkStateNetworkError); | 197 SetNetworkState(WebMediaPlayer::NetworkStateNetworkError); |
| 187 return; | 198 return; |
| 188 } | 199 } |
| 189 | 200 |
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 759 bool WebMediaPlayerMS::Compositor::GetAlgorithmEnabled() { | 770 bool WebMediaPlayerMS::Compositor::GetAlgorithmEnabled() { |
| 760 DCHECK(thread_checker_.CalledOnValidThread()); | 771 DCHECK(thread_checker_.CalledOnValidThread()); |
| 761 return !!frame_pool_; | 772 return !!frame_pool_; |
| 762 } | 773 } |
| 763 | 774 |
| 764 void WebMediaPlayerMS::Compositor::SetSerial(uint32 serial) { | 775 void WebMediaPlayerMS::Compositor::SetSerial(uint32 serial) { |
| 765 DCHECK(thread_checker_.CalledOnValidThread()); | 776 DCHECK(thread_checker_.CalledOnValidThread()); |
| 766 serial_ = serial; | 777 serial_ = serial; |
| 767 } | 778 } |
| 768 } // namespace content | 779 } // namespace content |
| OLD | NEW |