diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-12 21:30:25 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-01-12 21:30:25 +0000 |
commit | 321ad87b01c1e040f3f121044f8c255ca5548b30 (patch) | |
tree | 50a7575b7ee9d0ec0498395a6557af7b74e6ecfd /webkit/glue/media | |
parent | db2ff4b4607eb2a54b30ea9c4b8248e7a1cebfe5 (diff) | |
download | chromium_src-321ad87b01c1e040f3f121044f8c255ca5548b30.zip chromium_src-321ad87b01c1e040f3f121044f8c255ca5548b30.tar.gz chromium_src-321ad87b01c1e040f3f121044f8c255ca5548b30.tar.bz2 |
Working rudimentary audio in Pepper.
BUG=28292
TEST=none
Patch by neb@chromium.org
Original review: http://codereview.chromium.org/524006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36043 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/media')
-rw-r--r-- | webkit/glue/media/video_renderer_impl.cc | 16 | ||||
-rw-r--r-- | webkit/glue/media/video_renderer_impl.h | 3 |
2 files changed, 19 insertions, 0 deletions
diff --git a/webkit/glue/media/video_renderer_impl.cc b/webkit/glue/media/video_renderer_impl.cc index a7dc980..c47b96d 100644 --- a/webkit/glue/media/video_renderer_impl.cc +++ b/webkit/glue/media/video_renderer_impl.cc @@ -7,6 +7,8 @@ #include "webkit/glue/media/video_renderer_impl.h" #include "webkit/glue/webmediaplayer_impl.h" +extern void DrawHackSendVideo(media::VideoSurface& frame, const gfx::Rect& rect); + namespace webkit_glue { VideoRendererImpl::VideoRendererImpl(WebMediaPlayerImpl::Proxy* proxy) @@ -59,6 +61,12 @@ void VideoRendererImpl::SetRect(const gfx::Rect& rect) { // This method is always called on the renderer's thread. void VideoRendererImpl::Paint(skia::PlatformCanvas* canvas, const gfx::Rect& dest_rect) { + base::TimeTicks now = base::TimeTicks::HighResNow(); + if (!last_frame_.is_null()) { + HISTOGRAM_TIMES("Video.Decode", now - last_frame_); + } + last_frame_ = now; + scoped_refptr<media::VideoFrame> video_frame; GetCurrentFrame(&video_frame); if (video_frame) { @@ -129,6 +137,10 @@ void VideoRendererImpl::SlowPaint(media::VideoFrame* video_frame, DCHECK(frame_in.strides[media::VideoSurface::kUPlane] == frame_in.strides[media::VideoSurface::kVPlane]); DCHECK(frame_in.planes == media::VideoSurface::kNumYUVPlanes); + + DrawHackSendVideo(frame_in, dest_rect); + +#if 1 bitmap_.lockPixels(); media::YUVType yuv_type = (frame_in.format == media::VideoSurface::YV12) ? media::YV12 : media::YV16; @@ -143,6 +155,8 @@ void VideoRendererImpl::SlowPaint(media::VideoFrame* video_frame, bitmap_.rowBytes(), yuv_type); bitmap_.unlockPixels(); +#endif + DrawHackSendVideo(frame_in, dest_rect); video_frame->Unlock(); } else { NOTREACHED(); @@ -150,6 +164,7 @@ void VideoRendererImpl::SlowPaint(media::VideoFrame* video_frame, } // 2. Paint the bitmap to canvas. +#if 1 SkMatrix matrix; matrix.setTranslate(static_cast<SkScalar>(dest_rect.x()), static_cast<SkScalar>(dest_rect.y())); @@ -161,6 +176,7 @@ void VideoRendererImpl::SlowPaint(media::VideoFrame* video_frame, SkIntToScalar(video_size_.height())); } canvas->drawBitmapMatrix(bitmap_, matrix, NULL); +#endif } void VideoRendererImpl::FastPaint(media::VideoFrame* video_frame, diff --git a/webkit/glue/media/video_renderer_impl.h b/webkit/glue/media/video_renderer_impl.h index b0fde12..8acd730 100644 --- a/webkit/glue/media/video_renderer_impl.h +++ b/webkit/glue/media/video_renderer_impl.h @@ -16,6 +16,7 @@ #include "base/gfx/rect.h" #include "base/gfx/size.h" +#include "base/time.h" #include "media/base/buffers.h" #include "media/base/factory.h" #include "media/base/filters.h" @@ -104,6 +105,8 @@ class VideoRendererImpl : public media::VideoRendererBase { // The size of the video. gfx::Size video_size_; + base::TimeTicks last_frame_; + DISALLOW_COPY_AND_ASSIGN(VideoRendererImpl); }; |