Widen internal API to support more complex YUV formats
Bug: skia:7901
Change-Id: I46fec08711b8b483cf58ccae733e4dc2a9689231
Reviewed-on: https://skia-review.googlesource.com/c/162280
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/tests/ImageGeneratorTest.cpp b/tests/ImageGeneratorTest.cpp
index 5c8864e..907efc0 100644
--- a/tests/ImageGeneratorTest.cpp
+++ b/tests/ImageGeneratorTest.cpp
@@ -7,9 +7,11 @@
#include "SkData.h"
#include "SkCanvas.h"
+
#include "SkGraphics.h"
#include "SkImageGenerator.h"
#include "SkImageInfoPriv.h"
+#include "SkYUVAIndex.h"
#include "Test.h"
#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
@@ -61,24 +63,32 @@
DEF_TEST(ImageGenerator, reporter) {
MyImageGenerator ig;
SkYUVSizeInfo sizeInfo;
- sizeInfo.fSizes[SkYUVSizeInfo::kY] = SkISize::Make(200, 200);
- sizeInfo.fSizes[SkYUVSizeInfo::kU] = SkISize::Make(100, 100);
- sizeInfo.fSizes[SkYUVSizeInfo::kV] = SkISize::Make( 50, 50);
- sizeInfo.fWidthBytes[SkYUVSizeInfo::kY] = 0;
- sizeInfo.fWidthBytes[SkYUVSizeInfo::kU] = 0;
- sizeInfo.fWidthBytes[SkYUVSizeInfo::kV] = 0;
- void* planes[3] = { nullptr };
+ sizeInfo.fSizes[0] = SkISize::Make(200, 200);
+ sizeInfo.fSizes[1] = SkISize::Make(100, 100);
+ sizeInfo.fSizes[2] = SkISize::Make( 50, 50);
+ sizeInfo.fSizes[3] = SkISize::Make( 25, 25);
+ sizeInfo.fWidthBytes[0] = 0;
+ sizeInfo.fWidthBytes[1] = 0;
+ sizeInfo.fWidthBytes[2] = 0;
+ sizeInfo.fWidthBytes[3] = 0;
+ void* planes[4] = { nullptr };
+ SkYUVAIndex yuvaIndices[4];
SkYUVColorSpace colorSpace;
// Check that the YUV decoding API does not cause any crashes
- ig.queryYUV8(&sizeInfo, nullptr);
- ig.queryYUV8(&sizeInfo, &colorSpace);
- sizeInfo.fWidthBytes[SkYUVSizeInfo::kY] = 250;
- sizeInfo.fWidthBytes[SkYUVSizeInfo::kU] = 250;
- sizeInfo.fWidthBytes[SkYUVSizeInfo::kV] = 250;
+ ig.queryYUVA8(&sizeInfo, yuvaIndices, nullptr);
+ ig.queryYUVA8(&sizeInfo, yuvaIndices, &colorSpace);
+ sizeInfo.fWidthBytes[0] = 250;
+ sizeInfo.fWidthBytes[1] = 250;
+ sizeInfo.fWidthBytes[2] = 250;
+ sizeInfo.fWidthBytes[3] = 250;
+ yuvaIndices[0] = { 0, SkColorChannel::kR };
+ yuvaIndices[1] = { 1, SkColorChannel::kR };
+ yuvaIndices[2] = { 2, SkColorChannel::kR };
+ yuvaIndices[3] = { 3, SkColorChannel::kR };
int dummy;
- planes[SkYUVSizeInfo::kY] = planes[SkYUVSizeInfo::kU] = planes[SkYUVSizeInfo::kV] = &dummy;
- ig.getYUV8Planes(sizeInfo, planes);
+ planes[0] = planes[1] = planes[2] = planes[3] = &dummy;
+ ig.getYUVA8Planes(sizeInfo, yuvaIndices, planes);
// Suppressed due to https://code.google.com/p/skia/issues/detail?id=4339
if (false) {