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

Posted

技术标签:

【中文标题】libjpeg-turbo的压缩速度和我程序中的libjpeg没有区别【英文标题】:The compressing speed of libjpeg-turbo has no difference with libjpeg in my program 【发布时间】:2016-04-13 12:35:22 【问题描述】:

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

起初我使用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 buffer(out)由我自己分配和释放。

我使用的libjpeg-turbo版本是1.4.2

【问题讨论】:

问题是什么? 我的问题与libjpeg相比,libjpeg-turbo的压缩速度没有任何提升。我想看看我的程序有没有错误。 这是一个陈述,而不是一个问题。 【参考方案1】:

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

我很惊讶它竟然奏效了。我认为它(库)保留了原始代码,这可以解释为什么它甚至能够运行。

如果您正在寻找优化,您可能希望查看可以对 libjpeg 本身进行的优化。有几个文档文件,其中一个专门包含在 ARM 处理器上进行优化的说明。您还可以调整内存管理器。你会在那里找到比我在这里输入的更多的信息。

【讨论】:

以上是关于libjpeg-turbo的压缩速度和我程序中的libjpeg没有区别的主要内容,如果未能解决你的问题,请参考以下文章

Android-JNI开发系列《十》实践利用libjpeg-turbo完美压缩图片不失真

windows7 64位机上,libjpeg-turbo的安装和使用

libJPEG-turbo库使用示例代码

来自 libjpeg-turbo-1.5.1-vc.exe 的 TurboJPEG API 产生错误的输出

如何使用 libjpeg-turbo 解码 JPEG9 图像?

Go初接触之libjpeg-turbo