Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1989)

Unified Diff: media/filters/skcanvas_video_renderer.cc

Issue 591313008: Add support for Rec709 color space videos in software YUV convert path. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clean up some bad rebasing... Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698