Split SkYUVAInfo::PlanarConfig into PlaneConfig and Subsampling enums
Sometimes it's helpful to think about subsampling separately from
how the channels are spread across planes.
Bug: skia:10632
Change-Id: Ib03f71195f9706ef6def418b1f2125c29e0cf738
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/334102
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp
index d7b3974..6c5a28c 100644
--- a/src/codec/SkJpegCodec.cpp
+++ b/src/codec/SkJpegCodec.cpp
@@ -796,24 +796,25 @@
SkASSERT(hSampY == dinfo->max_h_samp_factor);
SkASSERT(vSampY == dinfo->max_v_samp_factor);
- SkYUVAInfo::PlanarConfig tempPlanarConfig;
+ SkYUVAInfo::Subsampling tempSubsampling;
if (1 == hSampY && 1 == vSampY) {
- tempPlanarConfig = SkYUVAInfo::PlanarConfig::kY_U_V_444;
+ tempSubsampling = SkYUVAInfo::Subsampling::k444;
} else if (2 == hSampY && 1 == vSampY) {
- tempPlanarConfig = SkYUVAInfo::PlanarConfig::kY_U_V_422;
+ tempSubsampling = SkYUVAInfo::Subsampling::k422;
} else if (2 == hSampY && 2 == vSampY) {
- tempPlanarConfig = SkYUVAInfo::PlanarConfig::kY_U_V_420;
+ tempSubsampling = SkYUVAInfo::Subsampling::k420;
} else if (1 == hSampY && 2 == vSampY) {
- tempPlanarConfig = SkYUVAInfo::PlanarConfig::kY_U_V_440;
+ tempSubsampling = SkYUVAInfo::Subsampling::k440;
} else if (4 == hSampY && 1 == vSampY) {
- tempPlanarConfig = SkYUVAInfo::PlanarConfig::kY_U_V_411;
+ tempSubsampling = SkYUVAInfo::Subsampling::k411;
} else if (4 == hSampY && 2 == vSampY) {
- tempPlanarConfig = SkYUVAInfo::PlanarConfig::kY_U_V_410;
+ tempSubsampling = SkYUVAInfo::Subsampling::k410;
} else {
return false;
}
if (supportedDataTypes &&
- !supportedDataTypes->supported(tempPlanarConfig, SkYUVAPixmapInfo::DataType::kUnorm8)) {
+ !supportedDataTypes->supported(SkYUVAInfo::PlaneConfig::kY_U_V,
+ SkYUVAPixmapInfo::DataType::kUnorm8)) {
return false;
}
if (yuvaPixmapInfo) {
@@ -824,7 +825,8 @@
rowBytes[i] = dinfo->comp_info[i].width_in_blocks * DCTSIZE;
}
SkYUVAInfo yuvaInfo(codec.dimensions(),
- tempPlanarConfig,
+ SkYUVAInfo::PlaneConfig::kY_U_V,
+ tempSubsampling,
kJPEG_Full_SkYUVColorSpace,
codec.getOrigin(),
SkYUVAInfo::Siting::kCentered,