0

私のプログラムはAndroidデバイスで実行され、デバイスはNEONがサポートされているARMシステムです。

最初に libjpeg を使用して RGB 画像 (800*480) を jpeg に圧縮しました。速度は1枚あたり70ms程度でしたが、私には遅すぎました。後で 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 自体で実行できる最適化を確認することをお勧めします。いくつかのドキュメント ファイルがあり、そのうちの 1 つには ARM プロセッサで最適化するための具体的な手順が含まれています。メモリ マネージャーを微調整することもできます。ここに入力できる情報よりも多くの情報が表示されます。

于 2016-08-15T22:09:32.393 に答える