Chromium Code Reviews| Index: media/filters/skcanvas_video_renderer.cc |
| diff --git a/media/filters/skcanvas_video_renderer.cc b/media/filters/skcanvas_video_renderer.cc |
| index 2243445d459e903f6d230604a757f6c36cc4c0cb..8e107e8b6ca89d05564e02f3c34b9e910c42f827 100644 |
| --- a/media/filters/skcanvas_video_renderer.cc |
| +++ b/media/filters/skcanvas_video_renderer.cc |
| @@ -44,6 +44,7 @@ bool IsYUV(media::VideoFrame::Format format) { |
| case VideoFrame::I420: |
| case VideoFrame::YV12A: |
| case VideoFrame::YV12J: |
| + case VideoFrame::YV12HD: |
| case VideoFrame::YV24: |
| case VideoFrame::NV12: |
| return true; |
| @@ -63,6 +64,7 @@ bool IsJPEGColorSpace(media::VideoFrame::Format format) { |
| case VideoFrame::YV12J: |
| return true; |
| case VideoFrame::YV12: |
| + case VideoFrame::YV12HD: |
| case VideoFrame::YV16: |
| case VideoFrame::I420: |
| case VideoFrame::YV12A: |
| @@ -141,6 +143,20 @@ void ConvertVideoFrameToRGBPixels( |
| media::YV12J); |
| break; |
| + case media::VideoFrame::YV12HD: |
| + media::ConvertYUVToRGB32( |
| + video_frame->data(media::VideoFrame::kYPlane) + y_offset, |
| + video_frame->data(media::VideoFrame::kUPlane) + uv_offset, |
| + video_frame->data(media::VideoFrame::kVPlane) + uv_offset, |
| + static_cast<uint8*>(rgb_pixels), |
| + video_frame->visible_rect().width(), |
| + video_frame->visible_rect().height(), |
| + video_frame->stride(media::VideoFrame::kYPlane), |
| + video_frame->stride(media::VideoFrame::kUPlane), |
| + row_bytes, |
| + media::YV12HD); |
| + break; |
| + |
| case media::VideoFrame::YV16: |
| LIBYUV_I422_TO_ARGB( |
| video_frame->data(media::VideoFrame::kYPlane) + y_offset, |
| @@ -208,9 +224,9 @@ void ConvertVideoFrameToRGBPixels( |
| video_frame->ReadPixelsFromNativeTexture(tmp); |
| break; |
| } |
| - default: |
| + case VideoFrame::UNKNOWN: |
| + case VideoFrame::NV12: |
| NOTREACHED(); |
| - break; |
| } |
| } |
| @@ -256,6 +272,11 @@ class VideoImageGenerator : public SkImageGenerator { |
| if (!frame_.get() || !IsYUV(frame_->format())) |
| return false; |
| + // Skia currently can't convert Rec709 "HD" color space YUV to RGB. |
| + // TODO(rileya): Add support for HD color space in Skia's YUV conversions. |
|
DaleCurtis
2014/12/15 18:47:34
Doesn't this just need the right matrix below? Wit
rileya (GONE FROM CHROMIUM)
2014/12/16 22:05:59
Skia needs the 709 matrix to get plumbed into its
|
| + if (frame_->format() == VideoFrame::YV12HD) |
| + return false; |
| + |
| if (color_space) { |
| if (IsJPEGColorSpace(frame_->format())) |
| *color_space = kJPEG_SkYUVColorSpace; |