Android GraphicBuffer步幅不正确

时间:2015-09-11 11:58:20

标签: android c++ android-ndk

我使用android框架的GraphicBuffer来直接获取纹理数据,而不是使用glReadPixels来获得速度提升。

我使用libjpeg-turbo将GraphicBuffer数据压缩为JPEG。但是在某些设备中,GraphicBuffer的步幅是不正确的。 例如

buf = new GraphicBuffer(buf_width, buf_height, PIXEL_FORMAT_RGBA_8888,  GraphicBuffer::USAGE_SW_WRITE_OFTEN | GraphicBuffer::USAGE_HW_TEXTURE);
tjhandle handle = tjInitCompress();
unsigned char* jpeg_buf = NULL;
unsigned long jpeg_size = 0;
int stride = buf->stride; // some devices got 480, some 640.
tjCompress2(handle, save_data, width, stride * tjPixelSize[TJPF_RGBA], height, TJPF_RGBA, &jpeg_buf, &jpeg_size, TJSAMP_420, 80, TJFLAG_BOTTOMUP);

在某些设备中会产生错误的jpeg。 谢谢你。

0 个答案:

没有答案