0

我的程序在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

4

1 回答 1

0

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

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

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

于 2016-08-15T22:09:32.393 回答