我的程序运行在android设备上,设备是支持霓虹灯的ARM系统。
首先,我使用libjpeg将RGB图像(800*480)压缩为jpeg。每张图片的速度大约是70ms,但对我来说太慢了。后来我找到了libjpeg-turbo,似乎它可以提高压缩速度的霓虹灯在ARM。
但是经过编译和测试,我发现它们的压缩速度几乎是一样的。并且传递给tjCompress2的质量和标志的更改也不起作用。我不知道我的程序中是不是出了什么问题,或者是缺了什么。代码如下:
tjhandle _jpegCompressor = tjInitCompress();
tjCompress2(_jpegCompressor, (unsigned char*)in, PARAM_WIDTH,
PARAM_WIDTH*PERSIZE, PARAM_HEIGHT, PERSIZE,
(unsigned char**)&out, (long unsigned int*)outlen, TJSAMP_444, 100,
TJFLAG_FASTDCT);
tjDestroy(_jpegCompressor);jpeg缓冲区(Out)是我自己分配和释放的。
我使用的libjpeg-turbo版本是1.4.2
发布于 2016-08-16 06:09:32
据我所知,libjpeg-turbo有针对x86处理器的SIMD,SSE2,MMX指令。我看过一些汇编代码,没有看到任何其他类型的CPU架构的代码。
我很惊讶它居然还能用。我认为它(库)保留了原始代码,这就解释了为什么它能够运行。
如果您正在寻找优化,您可能希望查看可以使用libjpeg本身进行的优化。有几个文档文件,其中一个专门包含在ARM处理器上进行优化的说明。您还可以调整内存管理器。你会在那里找到比我在这里输入的信息多得多的信息。
https://stackoverflow.com/questions/36598576
复制相似问题