0

我尝试使用此指令创建 Android GraphicBuffer

新的 GraphicBuffer(160, 98, HAL_PIXEL_FORMAT_YV12, GraphicBuffer::USAGE_HW_TEXTURE | GraphicBuffer::USAGE_SW_WRITE_RARELY)

它适用于我的 Android 4.0 设备 Huawei Mediapad,但不适用于 Android 2.3 HTC Desire。那就是我得到错误:

05-28 16:53:15.994: W/GraphicBufferAllocator(3765): alloc(160, 98, 842094169, 00000120, ...) 失败 -22 (无效参数)

如果我将像素格式从 HAL_PIXEL_FORMAT_YV12 更改为 HAL_PIXEL_FORMAT_RGB_565,那么它在我的两个设备上都可以正常工作。我想 Android 2.3 不支持 YV12 但无论如何我都需要 YUV 像素的格式。

4

1 回答 1

0

如果您需要 YUV,请使用 NV21,它是 HAL_PIXEL_FORMAT_YCrCb_420_SP,所有 API 级别都支持。

虽然 YV12 是在 API 级别 9 中引入的,但仅保证从 API 12 开始的所有设备都支持它。

于 2013-09-07T20:36:51.057 回答