| 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 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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_refptr<media::VideoRendererBase> 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::Repaint, proxy_), | 194 base::Bind(&WebMediaPlayerProxy::FrameReady, proxy_), |
| 195 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::SetOpaque), | 195 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::SetOpaque), |
| 196 true); | 196 true); |
| 197 filter_collection_->AddVideoRenderer(video_renderer); | 197 filter_collection_->AddVideoRenderer(video_renderer); |
| 198 proxy_->set_frame_provider(video_renderer); | |
| 199 | 198 |
| 200 // Create default audio renderer using the null sink if no sink was provided. | 199 // Create default audio renderer using the null sink if no sink was provided. |
| 201 audio_source_provider_ = new WebAudioSourceProviderImpl( | 200 audio_source_provider_ = new WebAudioSourceProviderImpl( |
| 202 params.audio_renderer_sink() ? params.audio_renderer_sink() : | 201 params.audio_renderer_sink() ? params.audio_renderer_sink() : |
| 203 new media::NullAudioSink()); | 202 new media::NullAudioSink()); |
| 204 filter_collection_->AddAudioRenderer(new media::AudioRendererImpl( | 203 filter_collection_->AddAudioRenderer(new media::AudioRendererImpl( |
| 205 media_thread_.message_loop_proxy(), | 204 media_thread_.message_loop_proxy(), |
| 206 audio_source_provider_, | 205 audio_source_provider_, |
| 207 set_decryptor_ready_cb)); | 206 set_decryptor_ready_cb)); |
| 208 } | 207 } |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 638 return NULL; | 637 return NULL; |
| 639 } | 638 } |
| 640 | 639 |
| 641 void WebMediaPlayerImpl::putCurrentFrame( | 640 void WebMediaPlayerImpl::putCurrentFrame( |
| 642 WebKit::WebVideoFrame* web_video_frame) { | 641 WebKit::WebVideoFrame* web_video_frame) { |
| 643 if (!accelerated_compositing_reported_) { | 642 if (!accelerated_compositing_reported_) { |
| 644 accelerated_compositing_reported_ = true; | 643 accelerated_compositing_reported_ = true; |
| 645 DCHECK(frame_->view()->isAcceleratedCompositingActive()); | 644 DCHECK(frame_->view()->isAcceleratedCompositingActive()); |
| 646 UMA_HISTOGRAM_BOOLEAN("Media.AcceleratedCompositingActive", true); | 645 UMA_HISTOGRAM_BOOLEAN("Media.AcceleratedCompositingActive", true); |
| 647 } | 646 } |
| 648 if (web_video_frame) { | 647 delete web_video_frame; |
| 649 WebVideoFrameImpl* impl = static_cast<WebVideoFrameImpl*>(web_video_frame); | |
| 650 proxy_->PutCurrentFrame(impl->video_frame); | |
| 651 delete web_video_frame; | |
| 652 } else { | |
| 653 proxy_->PutCurrentFrame(NULL); | |
| 654 } | |
| 655 } | 648 } |
| 656 | 649 |
| 657 #define COMPILE_ASSERT_MATCHING_STATUS_ENUM(webkit_name, chromium_name) \ | 650 #define COMPILE_ASSERT_MATCHING_STATUS_ENUM(webkit_name, chromium_name) \ |
| 658 COMPILE_ASSERT(static_cast<int>(WebMediaPlayer::webkit_name) == \ | 651 COMPILE_ASSERT(static_cast<int>(WebMediaPlayer::webkit_name) == \ |
| 659 static_cast<int>(media::ChunkDemuxer::chromium_name), \ | 652 static_cast<int>(media::ChunkDemuxer::chromium_name), \ |
| 660 mismatching_status_enums) | 653 mismatching_status_enums) |
| 661 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusOk, kOk); | 654 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusOk, kOk); |
| 662 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusNotSupported, kNotSupported); | 655 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusNotSupported, kNotSupported); |
| 663 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusReachedIdLimit, kReachedIdLimit); | 656 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusReachedIdLimit, kReachedIdLimit); |
| 664 #undef COMPILE_ASSERT_MATCHING_ENUM | 657 #undef COMPILE_ASSERT_MATCHING_ENUM |
| (...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1265 } | 1258 } |
| 1266 | 1259 |
| 1267 void WebMediaPlayerImpl::OnDurationChange() { | 1260 void WebMediaPlayerImpl::OnDurationChange() { |
| 1268 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) | 1261 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) |
| 1269 return; | 1262 return; |
| 1270 | 1263 |
| 1271 GetClient()->durationChanged(); | 1264 GetClient()->durationChanged(); |
| 1272 } | 1265 } |
| 1273 | 1266 |
| 1274 } // namespace webkit_media | 1267 } // namespace webkit_media |
| OLD | NEW |