| 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..157362af4c9b19c36a3e45dfdf1294a6e89da81d 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,18 @@ 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 +222,9 @@ void ConvertVideoFrameToRGBPixels(
|
| video_frame->ReadPixelsFromNativeTexture(tmp);
|
| break;
|
| }
|
| - default:
|
| + case VideoFrame::UNKNOWN:
|
| + case VideoFrame::NV12:
|
| NOTREACHED();
|
| - break;
|
| }
|
| }
|
|
|
| @@ -253,8 +267,13 @@ class VideoImageGenerator : public SkImageGenerator {
|
| void* planes[3],
|
| size_t row_bytes[3],
|
| SkYUVColorSpace* color_space) override {
|
| - if (!frame_.get() || !IsYUV(frame_->format()))
|
| + if (!frame_.get() || !IsYUV(frame_->format()) ||
|
| + // TODO(rileya): Skia currently doesn't support Rec709 YUV conversion,
|
| + // Remove this case once it does. As-is we will fall back on the
|
| + // pure-software path in this case.
|
| + frame_->format() == VideoFrame::YV12HD) {
|
| return false;
|
| + }
|
|
|
| if (color_space) {
|
| if (IsJPEGColorSpace(frame_->format()))
|
|
|