在我的程序中,libjpeg-turbo的压缩速度与libjpeg没有区别

时间:2016-04-13 12:35:23

标签: jpeg libjpeg libjpeg-turbo turbojpeg

我的程序在Android设备上运行,设备是ARM系统,支持NEON。

首先,我使用libjpeg将RGB图像(800 * 480)压缩为jpeg。每张图片的速度约为70毫秒,但对我来说太慢了。后来我发现了libjpeg-turbo,似乎它可以提高ARM中NEON的压缩速度。

但是在编译和测试之后,我发现它们的压缩速度几乎相同。传递给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

1 个答案:

答案 0 :(得分:0)

据我所知,libjpeg-turbo有针对x86处理器的SIMD,SSE2,MMX指令。我查看了一些汇编代码,但我没有看到其他类型CPU架构的代码。

我甚至感到惊讶,甚至工作。我认为它(库)保留了原始代码,这可以解释它为什么能够运行。

如果您正在寻找优化,您可能希望了解可以使用libjpeg本身进行的优化。有几个文档文件,其中一个专门有关于ARM处理器优化的说明。您还可以调整内存管理器。你会在那里找到更多的信息,而不是我在这里可以输入的信息。