| 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:
|
|
|