Always use ABitmap_compressWithGainmap in screencap
AndroidBitmap_compress() calls into ABitmap_compressWithGainmap anyways,
but has additional checks to ban private bitmap formats from the NDK.
But we still want to enable 10-bit BGRA.
Bug: 431746508
Flag: com.android.graphics.surfaceflinger.flags.readback_screenshot
Test: adb screencap --preserve-display-colors
Change-Id: I278eb237da40620234e441f2aaf8c48d580f55b9
diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp
index d3fbb01..dc8beca 100644
--- a/cmds/screencap/screencap.cpp
+++ b/cmds/screencap/screencap.cpp
@@ -217,30 +217,15 @@
info.height = buffer->getHeight();
info.stride = buffer->getStride() * bytesPerPixel(buffer->getPixelFormat());
- int bitmapResult;
-
- if (gainmapBase) {
- bitmapResult =
- ABitmap_compressWithGainmap(&info, static_cast<ADataSpace>(dataspace), base,
- gainmapBase, captureResults.hdrSdrRatio, *format,
- 100, &fd,
- [](void* fdPtr, const void* data,
- size_t size) -> bool {
- int bytesWritten =
- write(*static_cast<int*>(fdPtr), data,
- size);
- return bytesWritten == size;
- });
- } else {
- bitmapResult =
- AndroidBitmap_compress(&info, static_cast<int32_t>(dataspace), base, *format,
- 100, &fd,
- [](void* fdPtr, const void* data, size_t size) -> bool {
- int bytesWritten =
- write(*static_cast<int*>(fdPtr), data, size);
- return bytesWritten == size;
- });
- }
+ int bitmapResult =
+ ABitmap_compressWithGainmap(&info, static_cast<ADataSpace>(dataspace), base,
+ gainmapBase, captureResults.hdrSdrRatio, *format, 100,
+ &fd,
+ [](void* fdPtr, const void* data, size_t size) -> bool {
+ int bytesWritten = write(*static_cast<int*>(fdPtr),
+ data, size);
+ return bytesWritten == size;
+ });
if (bitmapResult != ANDROID_BITMAP_RESULT_SUCCESS) {
fprintf(stderr, "Failed to compress (error code: %d)\n", bitmapResult);