diff options
author | ralphl@chromium.org <ralphl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-11 04:56:12 +0000 |
---|---|---|
committer | ralphl@chromium.org <ralphl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-11 04:56:12 +0000 |
commit | af83310226b7e792a2468985469194bd05b73b12 (patch) | |
tree | 1095ba440fc9c413e38fd94a71cff2a07f9efb15 /chrome/renderer | |
parent | 92c5c10224b7195f7a84cefe5a2d4ab52b6c9179 (diff) | |
download | chromium_src-af83310226b7e792a2468985469194bd05b73b12.zip chromium_src-af83310226b7e792a2468985469194bd05b73b12.tar.gz chromium_src-af83310226b7e792a2468985469194bd05b73b12.tar.bz2 |
The video renderer actually color converts. This is the last change that should be required to actually get the renderer to display frames.
Review URL: http://codereview.chromium.org/43051
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11428 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/media/video_renderer_impl.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/chrome/renderer/media/video_renderer_impl.cc b/chrome/renderer/media/video_renderer_impl.cc index 2cdf9a9..05cbb44 100644 --- a/chrome/renderer/media/video_renderer_impl.cc +++ b/chrome/renderer/media/video_renderer_impl.cc @@ -3,6 +3,7 @@ // LICENSE file. #include "chrome/renderer/media/video_renderer_impl.h" +#include "media/base/yuv_convert.h" VideoRendererImpl::VideoRendererImpl(WebMediaPlayerDelegateImpl* delegate) : delegate_(delegate), @@ -53,10 +54,22 @@ void VideoRendererImpl::CopyToCurrentFrame(media::VideoFrame* video_frame) { last_converted_timestamp_ = timestamp; media::VideoSurface frame_in; if (video_frame->Lock(&frame_in)) { - // TODO(ralphl): Actually do the color space conversion here! - // This is temporary code to set the bits of the current_frame_ to - // blue. - bitmap_.eraseRGB(0x00, 0x00, 0xFF); + // TODO(hclam): Support more video formats than just YV12. + DCHECK(frame_in.format == media::VideoSurface::YV12); + DCHECK(frame_in.strides[media::VideoSurface::kUPlane] == + frame_in.strides[media::VideoSurface::kVPlane]); + DCHECK(frame_in.planes == media::VideoSurface::kNumYUVPlanes); + bitmap_.lockPixels(); + media::ConvertYV12ToRGB32(frame_in.data[media::VideoSurface::kYPlane], + frame_in.data[media::VideoSurface::kUPlane], + frame_in.data[media::VideoSurface::kVPlane], + static_cast<uint8*>(bitmap_.getPixels()), + frame_in.width, + frame_in.height, + frame_in.strides[media::VideoSurface::kYPlane], + frame_in.strides[media::VideoSurface::kUPlane], + bitmap_.rowBytes()); + bitmap_.unlockPixels(); video_frame->Unlock(); } else { NOTREACHED(); |