link-u / cavif

avif encoder, using libaom directly.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

--tuneでdaala-distとcdef-distが有効にならない

ledyba-z opened this issue · comments

daala-distとcdef-distの実装自体はたしかに存在する。しかし、呼ばれていない。

有効にするには、

https://aomedia.googlesource.com/aom/+/refs/tags/v1.0.0-errata1-avif/build/cmake/aom_config_defaults.cmake#115

set_aom_config_var(CONFIG_DIST_8X8 0 "AV1 experiment flag.")

というコンパイルフラグを有効にしないといけない。

まず、これを利用者側で変更する方法がわからない。それを調査する。

さらに、ここを無理やり1に書換えてビルドしたものの、

[2020/01/29 02:20:07 INFO ] cavif
[2020/01/29 02:20:07 INFO ] libaom ver: 1.0.0-errata1-avif
[2020/01/29 02:20:08 INFO ] Encoding: hato.png -> test.avif
cavif: /home/psi/umi/src/github.com/link-u/cavif/external/libaom/av1/encoder/rdopt.c:3425: search_txk_type: Assertion `block_mse_q8 != UINT_MAX' failed.

となって動かない。

masterブランチでなら有効になっているのかどうかをチェックし、もし大丈夫そうなら、自動テスト環境を整えた上で、masterブランチに引き上げる。

libaomを上げたところさらに増えたのでフラグだけ追加してみて実際に使われるか調べます

/*!\brief Model tuning parameters
 *
 * Changes the encoder to tune for certain types of input material.
 *
 */
typedef enum {
  AOM_TUNE_PSNR,
  AOM_TUNE_SSIM,
  AOM_TUNE_CDEF_DIST,
  AOM_TUNE_DAALA_DIST,
  AOM_TUNE_VMAF_WITH_PREPROCESSING,
  AOM_TUNE_VMAF_WITHOUT_PREPROCESSING,
  AOM_TUNE_VMAF_MAX_GAIN
} aom_tune_metric;

VMAFは別ライブラリが更に必要らしい、、、うーむ

VMAF can indeed be run on two images. In this case, compute_motion will return 0 value. The implication is that it will treat the single image as a static video shot.

意味は無くはなさそう

Can vmaf wrapper support compare 2 images · Issue #286 · Netflix/vmaf
Netflix/vmaf#286

https://aomedia.googlesource.com/aom/+/8afb8548a5153dfa5cf6436fa17bc4bf716f6a77

「使ってないenum消したぜ!」のコミットが入ったのでcavifからも消しました。