| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "webkit/media/webmediaplayer_impl.h" | 5 #include "webkit/media/webmediaplayer_impl.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 | 180 |
| 181 // Create the GPU video decoder if factories were provided. | 181 // Create the GPU video decoder if factories were provided. |
| 182 if (params.gpu_factories()) { | 182 if (params.gpu_factories()) { |
| 183 filter_collection_->GetVideoDecoders()->push_back( | 183 filter_collection_->GetVideoDecoders()->push_back( |
| 184 new media::GpuVideoDecoder( | 184 new media::GpuVideoDecoder( |
| 185 media_thread_.message_loop_proxy(), | 185 media_thread_.message_loop_proxy(), |
| 186 params.gpu_factories())); | 186 params.gpu_factories())); |
| 187 } | 187 } |
| 188 | 188 |
| 189 // Create default video renderer. | 189 // Create default video renderer. |
| 190 scoped_ptr<media::VideoRenderer> video_renderer( | 190 scoped_refptr<media::VideoRendererBase> video_renderer = |
| 191 new media::VideoRendererBase( | 191 new media::VideoRendererBase( |
| 192 media_thread_.message_loop_proxy(), | 192 media_thread_.message_loop_proxy(), |
| 193 set_decryptor_ready_cb, | 193 set_decryptor_ready_cb, |
| 194 base::Bind(&WebMediaPlayerProxy::FrameReady, proxy_), | 194 base::Bind(&WebMediaPlayerProxy::Repaint, proxy_), |
| 195 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::SetOpaque), | 195 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::SetOpaque), |
| 196 true)); | 196 true); |
| 197 filter_collection_->SetVideoRenderer(video_renderer.Pass()); | 197 filter_collection_->AddVideoRenderer(video_renderer); |
| 198 proxy_->set_frame_provider(video_renderer); |
| 198 | 199 |
| 199 // Create default audio renderer using the null sink if no sink was provided. | 200 // Create default audio renderer using the null sink if no sink was provided. |
| 200 audio_source_provider_ = new WebAudioSourceProviderImpl( | 201 audio_source_provider_ = new WebAudioSourceProviderImpl( |
| 201 params.audio_renderer_sink() ? params.audio_renderer_sink() : | 202 params.audio_renderer_sink() ? params.audio_renderer_sink() : |
| 202 new media::NullAudioSink()); | 203 new media::NullAudioSink()); |
| 203 scoped_ptr<media::AudioRenderer> audio_renderer( | 204 filter_collection_->AddAudioRenderer(new media::AudioRendererImpl( |
| 204 new media::AudioRendererImpl( | 205 media_thread_.message_loop_proxy(), |
| 205 media_thread_.message_loop_proxy(), | 206 audio_source_provider_, |
| 206 audio_source_provider_, | 207 set_decryptor_ready_cb)); |
| 207 set_decryptor_ready_cb)); | |
| 208 filter_collection_->SetAudioRenderer(audio_renderer.Pass()); | |
| 209 } | 208 } |
| 210 | 209 |
| 211 WebMediaPlayerImpl::~WebMediaPlayerImpl() { | 210 WebMediaPlayerImpl::~WebMediaPlayerImpl() { |
| 212 DCHECK_EQ(main_loop_, MessageLoop::current()); | 211 DCHECK_EQ(main_loop_, MessageLoop::current()); |
| 213 Destroy(); | 212 Destroy(); |
| 214 media_log_->AddEvent( | 213 media_log_->AddEvent( |
| 215 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_DESTROYED)); | 214 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_DESTROYED)); |
| 216 | 215 |
| 217 if (delegate_) | 216 if (delegate_) |
| 218 delegate_->PlayerGone(this); | 217 delegate_->PlayerGone(this); |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 644 return NULL; | 643 return NULL; |
| 645 } | 644 } |
| 646 | 645 |
| 647 void WebMediaPlayerImpl::putCurrentFrame( | 646 void WebMediaPlayerImpl::putCurrentFrame( |
| 648 WebKit::WebVideoFrame* web_video_frame) { | 647 WebKit::WebVideoFrame* web_video_frame) { |
| 649 if (!accelerated_compositing_reported_) { | 648 if (!accelerated_compositing_reported_) { |
| 650 accelerated_compositing_reported_ = true; | 649 accelerated_compositing_reported_ = true; |
| 651 DCHECK(frame_->view()->isAcceleratedCompositingActive()); | 650 DCHECK(frame_->view()->isAcceleratedCompositingActive()); |
| 652 UMA_HISTOGRAM_BOOLEAN("Media.AcceleratedCompositingActive", true); | 651 UMA_HISTOGRAM_BOOLEAN("Media.AcceleratedCompositingActive", true); |
| 653 } | 652 } |
| 654 delete web_video_frame; | 653 if (web_video_frame) { |
| 654 WebVideoFrameImpl* impl = static_cast<WebVideoFrameImpl*>(web_video_frame); |
| 655 proxy_->PutCurrentFrame(impl->video_frame); |
| 656 delete web_video_frame; |
| 657 } else { |
| 658 proxy_->PutCurrentFrame(NULL); |
| 659 } |
| 655 } | 660 } |
| 656 | 661 |
| 657 #define COMPILE_ASSERT_MATCHING_STATUS_ENUM(webkit_name, chromium_name) \ | 662 #define COMPILE_ASSERT_MATCHING_STATUS_ENUM(webkit_name, chromium_name) \ |
| 658 COMPILE_ASSERT(static_cast<int>(WebMediaPlayer::webkit_name) == \ | 663 COMPILE_ASSERT(static_cast<int>(WebMediaPlayer::webkit_name) == \ |
| 659 static_cast<int>(media::ChunkDemuxer::chromium_name), \ | 664 static_cast<int>(media::ChunkDemuxer::chromium_name), \ |
| 660 mismatching_status_enums) | 665 mismatching_status_enums) |
| 661 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusOk, kOk); | 666 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusOk, kOk); |
| 662 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusNotSupported, kNotSupported); | 667 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusNotSupported, kNotSupported); |
| 663 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusReachedIdLimit, kReachedIdLimit); | 668 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusReachedIdLimit, kReachedIdLimit); |
| 664 #undef COMPILE_ASSERT_MATCHING_ENUM | 669 #undef COMPILE_ASSERT_MATCHING_ENUM |
| (...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1265 } | 1270 } |
| 1266 | 1271 |
| 1267 void WebMediaPlayerImpl::OnDurationChange() { | 1272 void WebMediaPlayerImpl::OnDurationChange() { |
| 1268 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) | 1273 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) |
| 1269 return; | 1274 return; |
| 1270 | 1275 |
| 1271 GetClient()->durationChanged(); | 1276 GetClient()->durationChanged(); |
| 1272 } | 1277 } |
| 1273 | 1278 |
| 1274 } // namespace webkit_media | 1279 } // namespace webkit_media |
| OLD | NEW |