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

Unified Diff: media/filters/skcanvas_video_renderer.cc

Issue 88403004: Add plumbing for video pixel formats with JPEG color range. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: \ Created 7 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 f0bf13d4bb8e9d0ab3cef4cb678ab59597232851..5e996c856192d700dee583512919b702e92d8089 100644
--- a/media/filters/skcanvas_video_renderer.cc
+++ b/media/filters/skcanvas_video_renderer.cc
@@ -13,7 +13,9 @@
namespace media {
static bool IsEitherYV12OrYV16(media::VideoFrame::Format format) {
- return format == media::VideoFrame::YV12 || format == media::VideoFrame::YV16;
+ return format == media::VideoFrame::YV12 ||
+ format == media::VideoFrame::YV16 ||
+ format == media::VideoFrame::YV12J;
}
static bool IsEitherYV12OrYV16OrNative(media::VideoFrame::Format format) {
@@ -80,10 +82,18 @@ static void FastPaint(
const SkBitmap& bitmap = canvas->getDevice()->accessBitmap(true);
media::YUVType yuv_type = media::YV16;
+ media::YUVRange yuv_range = media::MPEG;
int y_shift = 0;
if (video_frame->format() == media::VideoFrame::YV12 ||
video_frame->format() == media::VideoFrame::YV12A) {
yuv_type = media::YV12;
+ yuv_range = media::MPEG;
+ y_shift = 1;
+ }
+
+ if (video_frame->format() == media::VideoFrame::YV12J) {
+ yuv_type = media::YV12;
+ yuv_range = media::JPEG;
y_shift = 1;
}
@@ -171,6 +181,7 @@ static void FastPaint(
video_frame->stride(media::VideoFrame::kUPlane),
bitmap.rowBytes(),
yuv_type,
+ yuv_range,
media::ROTATE_0,
media::FILTER_BILINEAR);
bitmap.unlockPixels();
@@ -217,8 +228,14 @@ static void ConvertVideoFrameToBitmap(
(video_frame->visible_rect().y() >> y_shift)) +
(video_frame->visible_rect().x() >> 1);
}
+
+ media::YUVRange yuv_range = video_frame->format() == media::VideoFrame::YV12J
+ ? media::JPEG
+ : media::MPEG;
+
switch (video_frame->format()) {
case media::VideoFrame::YV12:
+ case media::VideoFrame::YV12J:
media::ConvertYUVToRGB32(
video_frame->data(media::VideoFrame::kYPlane) + y_offset,
video_frame->data(media::VideoFrame::kUPlane) + uv_offset,
@@ -229,7 +246,8 @@ static void ConvertVideoFrameToBitmap(
video_frame->stride(media::VideoFrame::kYPlane),
video_frame->stride(media::VideoFrame::kUPlane),
bitmap->rowBytes(),
- media::YV12);
+ media::YV12,
+ yuv_range);
break;
case media::VideoFrame::YV16:
@@ -243,7 +261,8 @@ static void ConvertVideoFrameToBitmap(
video_frame->stride(media::VideoFrame::kYPlane),
video_frame->stride(media::VideoFrame::kUPlane),
bitmap->rowBytes(),
- media::YV16);
+ media::YV16,
+ yuv_range);
break;
case media::VideoFrame::YV12A:
@@ -259,7 +278,8 @@ static void ConvertVideoFrameToBitmap(
video_frame->stride(media::VideoFrame::kUPlane),
video_frame->stride(media::VideoFrame::kAPlane),
bitmap->rowBytes(),
- media::YV12);
+ media::YV12,
+ yuv_range);
break;
case media::VideoFrame::NATIVE_TEXTURE:

Powered by Google App Engine
This is Rietveld 408576698