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

Unified Diff: source/convert_from.cc

Issue 2554213003: ConvertFromI420: use halfstride instead of halfwidth (Closed)
Patch Set: i422 and i444 as well Created 4 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
« no previous file with comments | « include/libyuv/version.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/convert_from.cc
diff --git a/source/convert_from.cc b/source/convert_from.cc
index f81054c20d2c696d221f0dcc8b28abe1435e5441..d285e98d6b2d25452eacabeb9c4bd5c938b087f9 100644
--- a/source/convert_from.cc
+++ b/source/convert_from.cc
@@ -1094,53 +1094,58 @@ int ConvertFromI420(const uint8* y,
}
// TODO(fbarchard): Add M420.
// Triplanar formats
- // TODO(fbarchard): halfstride instead of halfwidth
case FOURCC_I420:
case FOURCC_YV12: {
- int halfwidth = (width + 1) / 2;
+ dst_sample_stride = dst_sample_stride ? dst_sample_stride : width;
+ int halfstride = (dst_sample_stride + 1) / 2;
int halfheight = (height + 1) / 2;
uint8* dst_u;
uint8* dst_v;
if (format == FOURCC_YV12) {
- dst_v = dst_sample + width * height;
- dst_u = dst_v + halfwidth * halfheight;
+ dst_v = dst_sample + dst_sample_stride * height;
+ dst_u = dst_v + halfstride * halfheight;
} else {
- dst_u = dst_sample + width * height;
- dst_v = dst_u + halfwidth * halfheight;
+ dst_u = dst_sample + dst_sample_stride * height;
+ dst_v = dst_u + halfstride * halfheight;
}
- r = I420Copy(y, y_stride, u, u_stride, v, v_stride, dst_sample, width,
- dst_u, halfwidth, dst_v, halfwidth, width, height);
+ r = I420Copy(y, y_stride, u, u_stride, v, v_stride, dst_sample,
+ dst_sample_stride, dst_u, halfstride, dst_v, halfstride,
+ width, height);
break;
}
case FOURCC_I422:
case FOURCC_YV16: {
- int halfwidth = (width + 1) / 2;
+ dst_sample_stride = dst_sample_stride ? dst_sample_stride : width;
+ int halfstride = (dst_sample_stride + 1) / 2;
uint8* dst_u;
uint8* dst_v;
if (format == FOURCC_YV16) {
- dst_v = dst_sample + width * height;
- dst_u = dst_v + halfwidth * height;
+ dst_v = dst_sample + dst_sample_stride * height;
+ dst_u = dst_v + halfstride * height;
} else {
- dst_u = dst_sample + width * height;
- dst_v = dst_u + halfwidth * height;
+ dst_u = dst_sample + dst_sample_stride * height;
+ dst_v = dst_u + halfstride * height;
}
- r = I420ToI422(y, y_stride, u, u_stride, v, v_stride, dst_sample, width,
- dst_u, halfwidth, dst_v, halfwidth, width, height);
+ r = I420ToI422(y, y_stride, u, u_stride, v, v_stride, dst_sample,
+ dst_sample_stride, dst_u, halfstride, dst_v, halfstride,
+ width, height);
break;
}
case FOURCC_I444:
case FOURCC_YV24: {
+ dst_sample_stride = dst_sample_stride ? dst_sample_stride : width;
uint8* dst_u;
uint8* dst_v;
if (format == FOURCC_YV24) {
- dst_v = dst_sample + width * height;
- dst_u = dst_v + width * height;
+ dst_v = dst_sample + dst_sample_stride * height;
+ dst_u = dst_v + dst_sample_stride * height;
} else {
- dst_u = dst_sample + width * height;
- dst_v = dst_u + width * height;
+ dst_u = dst_sample + dst_sample_stride * height;
+ dst_v = dst_u + dst_sample_stride * height;
}
- r = I420ToI444(y, y_stride, u, u_stride, v, v_stride, dst_sample, width,
- dst_u, width, dst_v, width, width, height);
+ r = I420ToI444(y, y_stride, u, u_stride, v, v_stride, dst_sample,
+ dst_sample_stride, dst_u, dst_sample_stride, dst_v,
+ dst_sample_stride, width, height);
break;
}
// Formats not supported - MJPG, biplanar, some rgb formats.
« no previous file with comments | « include/libyuv/version.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698