解凍せずにその場で垂直方向に反転する必要がある PVRTC 4bpp 画像データがあります。私が書いたコードはほとんど機能していますが、フリップは現在小さなアーティファクトを導入しており、正確な理由はわかりません.
PVRTC フリップ コードは、最初に 8 バイトの 4x4 圧縮ブロックを、PowerVR SDK の PVRTDecompress.cpp の TwiddleUV() 関数によって計算された反転位置に移動します。この部分は正しいようです。
次に、コードは、2bpp で格納された 4x4 変調データを含む 2 番目の 4 バイトの順序を逆にして、すべての 8 バイト圧縮ブロックを反復処理します。ブロックの最初の 4 バイトには、変更されないままのカラー データが含まれます。
これは非常に正しいように見えますが、元の画像にはなかった小さなアーティファクトが反転した画像に残り、ほとんどが小さな灰色がかった水平線として現れます。フリッピング コードが 2 回実行されると、アーティファクトはなくなり、画像は元の画像から変更されません。
PVRTC の経験がある人なら、圧縮された画像データを反転するために他に何をする必要があるか説明できますか? 問題は変調データの反転に関係している可能性があると思いますが、私が PVRTC のドキュメントを調べても、この段階では答えが得られませんでした。