Support P010 with Gralloc2 on Gralloc1 passthrough
... by updating the toYCbCrLayout function to more closely follow the requirements found in the comments of `android_flex_plane_t`. Bug: b/244411455 Test: untested. Change-Id: I1173253e25583336bf480160d4f6ac9f72882971
This commit is contained in:
parent
0068fccb41
commit
866abc15d9
1 changed files with 8 additions and 5 deletions
|
@ -259,19 +259,22 @@ class Gralloc1HalImpl : public Hal {
|
|||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
const auto& plane = flex.planes[i];
|
||||
// must have 8-bit depth
|
||||
if (plane.bits_per_component != 8 || plane.bits_used != 8) {
|
||||
// Must be a positive multiple of 8.
|
||||
if (plane.bits_per_component <= 0 || (plane.bits_per_component % 8) != 0) {
|
||||
return false;
|
||||
}
|
||||
// Must be between 1 and bits_per_component, inclusive.
|
||||
if (plane.bits_used < 1 || plane.bits_used > plane.bits_per_component) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (plane.component == FLEX_COMPONENT_Y) {
|
||||
// Y must not be interleaved
|
||||
if (plane.h_increment != 1) {
|
||||
if (plane.h_increment != 1 && plane.h_increment != 2) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// Cb and Cr can be interleaved
|
||||
if (plane.h_increment != 1 && plane.h_increment != 2) {
|
||||
if (plane.h_increment != 1 && plane.h_increment != 2 && plane.h_increment != 4) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue