summaryrefslogtreecommitdiffstats
path: root/webkit/glue/media
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-12 21:30:25 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-12 21:30:25 +0000
commit321ad87b01c1e040f3f121044f8c255ca5548b30 (patch)
tree50a7575b7ee9d0ec0498395a6557af7b74e6ecfd /webkit/glue/media
parentdb2ff4b4607eb2a54b30ea9c4b8248e7a1cebfe5 (diff)
downloadchromium_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.cc16
-rw-r--r--webkit/glue/media/video_renderer_impl.h3
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);
};