我使用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。 谢谢你。