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

Side by Side Diff: webkit/media/webmediaplayer_impl.cc

Issue 12096081: Replace VideoRendererBase Get/PutCurrentFrame() with a VideoFrame-containing callback. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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 audio_source_provider_, set_decryptor_ready_cb)); 204 audio_source_provider_, set_decryptor_ready_cb));
206 } 205 }
207 206
208 WebMediaPlayerImpl::~WebMediaPlayerImpl() { 207 WebMediaPlayerImpl::~WebMediaPlayerImpl() {
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 return NULL; 635 return NULL;
637 } 636 }
638 637
639 void WebMediaPlayerImpl::putCurrentFrame( 638 void WebMediaPlayerImpl::putCurrentFrame(
640 WebKit::WebVideoFrame* web_video_frame) { 639 WebKit::WebVideoFrame* web_video_frame) {
641 if (!accelerated_compositing_reported_) { 640 if (!accelerated_compositing_reported_) {
642 accelerated_compositing_reported_ = true; 641 accelerated_compositing_reported_ = true;
643 DCHECK(frame_->view()->isAcceleratedCompositingActive()); 642 DCHECK(frame_->view()->isAcceleratedCompositingActive());
644 UMA_HISTOGRAM_BOOLEAN("Media.AcceleratedCompositingActive", true); 643 UMA_HISTOGRAM_BOOLEAN("Media.AcceleratedCompositingActive", true);
645 } 644 }
646 if (web_video_frame) { 645 delete web_video_frame;
scherkus (not reviewing) 2013/01/31 17:54:05 this whole pCF() stuff seems ripe for review / del
647 WebVideoFrameImpl* impl = static_cast<WebVideoFrameImpl*>(web_video_frame);
648 proxy_->PutCurrentFrame(impl->video_frame);
649 delete web_video_frame;
650 } else {
651 proxy_->PutCurrentFrame(NULL);
652 }
653 } 646 }
654 647
655 #define COMPILE_ASSERT_MATCHING_STATUS_ENUM(webkit_name, chromium_name) \ 648 #define COMPILE_ASSERT_MATCHING_STATUS_ENUM(webkit_name, chromium_name) \
656 COMPILE_ASSERT(static_cast<int>(WebMediaPlayer::webkit_name) == \ 649 COMPILE_ASSERT(static_cast<int>(WebMediaPlayer::webkit_name) == \
657 static_cast<int>(media::ChunkDemuxer::chromium_name), \ 650 static_cast<int>(media::ChunkDemuxer::chromium_name), \
658 mismatching_status_enums) 651 mismatching_status_enums)
659 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusOk, kOk); 652 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusOk, kOk);
660 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusNotSupported, kNotSupported); 653 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusNotSupported, kNotSupported);
661 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusReachedIdLimit, kReachedIdLimit); 654 COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddIdStatusReachedIdLimit, kReachedIdLimit);
662 #undef COMPILE_ASSERT_MATCHING_ENUM 655 #undef COMPILE_ASSERT_MATCHING_ENUM
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 } 1256 }
1264 1257
1265 void WebMediaPlayerImpl::OnDurationChange() { 1258 void WebMediaPlayerImpl::OnDurationChange() {
1266 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) 1259 if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing)
1267 return; 1260 return;
1268 1261
1269 GetClient()->durationChanged(); 1262 GetClient()->durationChanged();
1270 } 1263 }
1271 1264
1272 } // namespace webkit_media 1265 } // namespace webkit_media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698