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

Unified Diff: media/filters/skcanvas_video_renderer.cc

Issue 222563002: Remove redundant I420-to-YV12 conversion in MediaStreamVideoTrack. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Allow I420 as acceptable default YUV format in ppapi tests. Created 6 years, 9 months 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
« no previous file with comments | « content/renderer/media/webmediaplayer_ms.cc ('k') | media/tools/player_x11/gl_video_renderer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/skcanvas_video_renderer.cc
diff --git a/media/filters/skcanvas_video_renderer.cc b/media/filters/skcanvas_video_renderer.cc
index ec3e92fe754be1cb895f0f8f64a3ff289ef6dd94..7b1ba81e1b97a23dad130ead9aca8ee89234d455 100644
--- a/media/filters/skcanvas_video_renderer.cc
+++ b/media/filters/skcanvas_video_renderer.cc
@@ -12,26 +12,23 @@
namespace media {
-static bool IsEitherYV12OrYV16(media::VideoFrame::Format format) {
+static bool IsYUV(media::VideoFrame::Format format) {
return format == media::VideoFrame::YV12 ||
+ format == media::VideoFrame::I420 ||
format == media::VideoFrame::YV16 ||
format == media::VideoFrame::YV12J;
}
-static bool IsEitherYV12OrYV16OrNative(media::VideoFrame::Format format) {
- return IsEitherYV12OrYV16(format) ||
- format == media::VideoFrame::NATIVE_TEXTURE;
+static bool IsEitherYUVOrNative(media::VideoFrame::Format format) {
+ return IsYUV(format) || format == media::VideoFrame::NATIVE_TEXTURE;
}
-static bool IsEitherYV12OrYV12AOrYV16(media::VideoFrame::Format format) {
- return IsEitherYV12OrYV16(format) ||
- format == media::VideoFrame::YV12A;
+static bool IsEitherYUVOrYUVA(media::VideoFrame::Format format) {
+ return IsYUV(format) || format == media::VideoFrame::YV12A;
}
-static bool IsEitherYV12OrYV12AOrYV16OrNative(
- media::VideoFrame::Format format) {
- return IsEitherYV12OrYV16OrNative(format) ||
- format == media::VideoFrame::YV12A;
+static bool IsEitherYUVOrYUVAOrNative(media::VideoFrame::Format format) {
+ return IsEitherYUVOrNative(format) || format == media::VideoFrame::YV12A;
}
// CanFastPaint is a helper method to determine the conditions for fast
@@ -40,13 +37,13 @@ static bool IsEitherYV12OrYV12AOrYV16OrNative(
// 2. No flipping nor mirroring.
// 3. Canvas has pixel format ARGB8888.
// 4. Canvas is opaque.
-// 5. Frame format is YV12 or YV16.
+// 5. Frame format is YV12, I420 or YV16.
//
// TODO(hclam): The fast paint method should support flipping and mirroring.
// Disable the flipping and mirroring checks once we have it.
static bool CanFastPaint(SkCanvas* canvas, uint8 alpha,
media::VideoFrame::Format format) {
- if (alpha != 0xFF || !IsEitherYV12OrYV16(format))
+ if (alpha != 0xFF || !IsYUV(format))
return false;
const SkMatrix& total_matrix = canvas->getTotalMatrix();
@@ -76,7 +73,7 @@ static void FastPaint(
const scoped_refptr<media::VideoFrame>& video_frame,
SkCanvas* canvas,
const SkRect& dest_rect) {
- DCHECK(IsEitherYV12OrYV16(video_frame->format())) << video_frame->format();
+ DCHECK(IsYUV(video_frame->format())) << video_frame->format();
DCHECK_EQ(video_frame->stride(media::VideoFrame::kUPlane),
video_frame->stride(media::VideoFrame::kVPlane));
@@ -84,6 +81,7 @@ static void FastPaint(
media::YUVType yuv_type = media::YV16;
int y_shift = 0;
if (video_frame->format() == media::VideoFrame::YV12 ||
+ video_frame->format() == media::VideoFrame::I420 ||
video_frame->format() == media::VideoFrame::YV12A) {
yuv_type = media::YV12;
y_shift = 1;
@@ -189,9 +187,9 @@ static void FastPaint(
static void ConvertVideoFrameToBitmap(
const scoped_refptr<media::VideoFrame>& video_frame,
SkBitmap* bitmap) {
- DCHECK(IsEitherYV12OrYV12AOrYV16OrNative(video_frame->format()))
+ DCHECK(IsEitherYUVOrYUVAOrNative(video_frame->format()))
<< video_frame->format();
- if (IsEitherYV12OrYV12AOrYV16(video_frame->format())) {
+ if (IsEitherYUVOrYUVA(video_frame->format())) {
DCHECK_EQ(video_frame->stride(media::VideoFrame::kUPlane),
video_frame->stride(media::VideoFrame::kVPlane));
}
@@ -211,7 +209,7 @@ static void ConvertVideoFrameToBitmap(
size_t y_offset = 0;
size_t uv_offset = 0;
- if (IsEitherYV12OrYV12AOrYV16(video_frame->format())) {
+ if (IsEitherYUVOrYUVA(video_frame->format())) {
int y_shift = (video_frame->format() == media::VideoFrame::YV16) ? 0 : 1;
// Use the "left" and "top" of the destination rect to locate the offset
// in Y, U and V planes.
@@ -227,6 +225,7 @@ static void ConvertVideoFrameToBitmap(
switch (video_frame->format()) {
case media::VideoFrame::YV12:
+ case media::VideoFrame::I420:
case media::VideoFrame::YV12J:
media::ConvertYUVToRGB32(
video_frame->data(media::VideoFrame::kYPlane) + y_offset,
@@ -306,8 +305,7 @@ void SkCanvasVideoRenderer::Paint(media::VideoFrame* video_frame,
// Paint black rectangle if there isn't a frame available or the
// frame has an unexpected format.
- if (!video_frame ||
- !IsEitherYV12OrYV12AOrYV16OrNative(video_frame->format())) {
+ if (!video_frame || !IsEitherYUVOrYUVAOrNative(video_frame->format())) {
canvas->drawRect(dest, paint);
return;
}
« no previous file with comments | « content/renderer/media/webmediaplayer_ms.cc ('k') | media/tools/player_x11/gl_video_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698