可逆圧縮コーデックとしておなじみのUt Video Codec Suite、しばらく情報収集をサボってたらだいぶ変わってて驚いた。
predict gradient
まずこれまでもあったULxx系のコーデックのフレーム内予測方式にこれまでのleft
(速度優先)とmean
(圧縮率優先)のほかに、gradient
という、left
より速くてmean
ほどではないがleft
より圧縮率が高い方式が加わっていた。
或るプログラマの一生 » [UtVideo] バージョン 18.0.0
こんなことならもっと早く実装すべきだったし、もっというと Predict Left 要らなかった。
そういうわけでleft
はオワコンになった。
で、これへのffmpegの対応はというと、
が該当する。
UtVideo T2 (UMxx) ファミリ
SIMDにやさしい、AVX2とかAVX-512とかにやさしい処理を、例えばハフマン符号化ではない圧縮であったりをして(ソースコード読んでないのであれ)くれるコーデックが19.0.1(2017/12/30)で追加されました。
或るプログラマの一生 » [UtVideo] UtVideo T2 (UMxx) ファミリの詳細
とりあえず朗報としてインターレースは死にました。どうせ誰も使ってなかったし[要出典]いいよね。
YUV420には対応していません。
YUV420 を正しく扱うには人生は短すぎます。
とのこと。
気になる速度と圧縮率はというと、公開されているベンチマークのグラフを見る限りでは
- 圧縮率では
predict mean
>predict gradient
>T2
>predict left
- エンコード速度では
T2
>>predict gradient
>predict mean
>=predict left
- デコード速度では
T2
>>predict gradient
>=predict left
>predict mean
となり、
- すでに死んでたけど
predict left
はいらない子 predict gradient
も利点を見いだせない(どっち付かず)
という印象。
で、これへのffmpegの対応はというと、
[FFmpeg-devel] avcodec/utvideodec: add support for UMH2, UMY2, UMH4, UMY4, UMRA, UMRG - Patchwork
2017/12/30となんと同日に最初のpatchが作成されていて(わずか4時間後!!)、つまり正式リリース前からutvideoの公式repoの差分を追いかけているffmepgのcontributerがいたということ!?(patchwork ffmpegの方の日付がいまいちそうなると理解できないんだけど)
まだffmpegの実装の方はSIMD化されていないけれど、対応速い。
公式の初期実装がでたのが
2017/11/15のことだから、そっから作り始めたとしても1ヶ月かかってない。@BMahol氏恐ろしや。