ラベル SVT-AV1 の投稿を表示しています。 すべての投稿を表示
ラベル SVT-AV1 の投稿を表示しています。 すべての投稿を表示

2025/11/22

v3.1系の多分バグ

夏ごろから良くSVT-AV1が落ちる(というかエンコードの最後に応答がなくなって止まってるので手動で終了させる必要がある)って現象に逢います。 
この間もその現象が発生したので、ようやく重い腰を上げて 再現する環境が作れました。
多少ランダム性がありますが、50%以上の 確率で再現してます
6664frameに対して6589frame目で止まる、っていう・・・ 
・3.1.2じゃなくても最新masterでもダメ
・debugビルドでは出ないけどRelwithDebugでは出る 
・asm 9(AVX2)でもmax(AVX512icl) でも出る(Ryzen9950X)
・preset 5や3だと出ないけどpreset 4だけ出る(これはランダム要素の一つなだけな気が)
試行回数は少ないので、 怪しいところは多いですが
  
デバッガで止めてみるとセマフォの問題っぽくて、 svt_block_on_semaphoreって関数のWaitForSingleObjectで止まってました。
Windowsのプログラムに詳しくないので何言ってんのかさっぱりだ、と思って似たような話がないのかな?とissueを見てみたら、まさしくそれっぽい話を丁度しているところでした。 
 
https://gitlab.com/AOMediaCodec/SVT-AV1/-/issues/2318 
 
モデレータの人が3.0.2で再現するか?スレッド処理を3.0.2と3.1.0で変えている、って言ってて、じゃぁそれじゃん、って思った今日この頃。
確かに僕の環境では3.0.2では発生してませんでしたね。
 
というわけで--lp 5ってしてみたら再現環境では出なくなりましたが、どうなることやら。 
まぁ、issueの方でも直してくれるでしょう。 
 
→再現できたそうなのできっと解析が進むはず
提供のあった再現スクリプトもpreset 4だったので、4に何かあるのかも・・・ 
 
 →251230 修正版のMRが出ました。
https://gitlab.com/AOMediaCodec/SVT-AV1/-/merge_requests/2572
どうもやってるのは変数(input_list_idx)の初期化っぽいです。
良くわかりませんが、デコード順を変更した場合はリスト内の処理をやり直すって直し方。
デコードリストを並べなおせばいいけどどの順になるか並列処理では不明?なので多少演算コストにペナルティがあるけど全部やり直す、ように見えます。
 
というわけで、 input_list_idx = 0;って追加したら僕の環境でも再現しなくなりました!
これでマージされたら次の版では治るでしょう。
 
ってかv4.0のチェックリストに載ってた
 https://gitlab.com/AOMediaCodec/SVT-AV1/-/issues/2325
 Fix #2318 if reproducible
 

2024/08/21

2.2になった

メインで使ってるm4の エンコード速度は上がったけど同じVMAFに対してファイルサイズが増えてたので、
2.1はスキップしてたのです。
 で、2.2が出て、サイズが2.0ぐらいに戻り、速度は向上した状態になったので、これで乗り換えられます。

あるアニメに対する Ryzen5900Xでの速度

SVT-AV1




対v2.0比
2.2  --crf 22 fps VMAF kbps fps vmaf サイズ

preset 3 13.17 97.45 2367 18.4% 1.2% 1.0%

preset 4 20.47 97.42 2397 25.7% 0.8% 0.7%

preset 5 40.18 97.34 2581 22.4% -1.3% 1.6%

preset 6 53.14 97.27 2638 34.3% -6.3% 2.5%

preset 7 52.16 97.27 2638 -2.5% 2.9% -0.2%

preset 8 58.12 97.24 2701 -0.8% 1.7% -0.5%

preset 9 61.26 97.15 2855 -0.5% 0.2% 3.1%

preset 10 66.42 96.93 2861 -1.7% 12.3% 3.2%

preset 11 69.77 96.74 2911 0.9% -1.2% 0.0%

preset 12 71.01 96.45 3076 0.5% -17.3% 5.8%
 

2024/03/16

メジャーバージョンUP

最終フレームを空フレームにするか最終画像フレームにするかで後方互換性を保たないのでメジャーバージョンアップとのこと。
 
速度は↓に公式がある
https://gitlab.com/AOMediaCodec/SVT-AV1/-/merge_requests/2179
VS2022でコンパイルするとバグる(AVX2向けでもAVX512のコードが混入する)バグはVS側で修正がかかった様子。
 
自分の環境(Ryzen5900X)でm3は3%程度だったけど、m4、m5は公式の通り。やっぱりサンプル次第か。
でも速度・サイズ共にm4とm5の段差が大きい気がする
 
 
1.8.0  --crf 22



preset 3 10.88 97.45 2347

preset 4 14.44 97.42 2372

preset 5 26.72 97.32 2461

preset 6 36.82 97.31 2507

preset 7 48.00 97.27 2586

preset 8 54.91 97.23 2632

preset 9 60.18 97.13 2727

preset 10 63.55 96.87 2745

preset 11 66.40 96.79 2926

preset 12 69.67 96.64 3061















2.0.0  --crf 22 fps VMAF kbps

preset 3 11.15 97.43 2344

preset 4 16.11 97.41 2381

preset 5 32.74 97.35 2541

preset 6 39.46 97.33 2572

preset 7 52.54 97.24 2643

preset 8 57.73 97.22 2715

preset 9 59.59 97.15 2770

preset 10 65.64 96.81 2773

preset 11 68.67 96.75 2911

preset 12 68.85 96.62 2908

2023/12/27

なんか変だけど

SVT-AV1のv1.80が出てたのですが、なんか変です。
なぜか僕の環境ではVS2022でビルドすると動作しないバイナリが出来上がります。
 build.bat 2019 avx512
とかで作ったslnからは正常にビルドできるので、build.batがなんかおかしいんでしょうね。調べてませんが。
→#2134がありました。 vs2022側の問題っぽい?
 
まぁ、それは置いておいて、インパクト的には
・Speedup CRF presets M6 to M0 by 17-53% while maintaining similar quality levels
ってのが一番です。

なんとなく並列化のボトルネックとなってた部分に手を入れた、って感じの挙動なような?変更点見てないですが・・・。
--crf 22 --preset 3 でRyzen5900Xで4.89fps→10.876fpsへ倍以上早くなってたりもしますが、preset4(M4)~6あたりはv1.60ぐらいの速度に戻った感じです。

ちなみに公式が欲しい人はビルド→パイプラインとかからアーティファクトのtagを指定して落とせます

2023/08/27

間違ってはいない

SVT-AV1のv1.70が出てました。

  • v1.7.0 M3 is now at similar quality levels as v1.6.0 M2 while being ~50% faster
  • v1.7.0 M4 is now at similar quality levels as v1.6.0 M3 while being ~40% faster
  • v1.7.0 M5 is now at similar quality levels as v1.6.0 M4 while being ~30% faster
  • v1.7.0 M6 is now at similar quality levels as v1.6.0 M5 while being ~25% faster
  •  ということで、確認をば。 
     あるソースをRyzen5900XでエンコードしてVMAFはffmpeg5.12で比較 
     
     --crf 22
      FPS VMAF bitrate
      V1.60 V1.70 V1.60 V1.70 V1.60 V1.70
    preset 3 6.1 4.9 97.44 97.50 2347 2353
    preset 4 13.9 11.3 97.39 97.42 2398 2302
    preset 5 26.4 21.9 97.32 97.37 2537 2427
    preset 6 34.3 29.3 97.31 97.34 2572 2517
    preset 7 51.3 49.1 97.18 97.28 2641 2627
    preset 8 56.8 58.2 97.14 97.21 2736 2783
    preset 9 60.1 60.5 97.10 97.17 2806 2825
    preset 10 66.8 66.1 96.87 96.93 2796 2833
    preset 11 70.3 70.7 96.66 96.73 2850 2938
    preset 12 71.5 71.7 96.61 96.65 3114 3127
     
     
    m2は試してないけど似たようなVMAFになってる・・・と言われたらそうかも?
    一方、同じプリセットで比べると速度は落ちてるのでその点は注意ですかね。
    7900Xでv1.6のpreset4はFHDソースが24fps前後のギリギリでリアルタイムエンコードができていたのですが、v1.7だと難しい感じでしょうか(横1440なら行けるのですが)。

    そういえばffmpeg6.0と5.12でVMAFのバージョンは同じ2.1.3っぽいのに評価値が変わるのは何でだろう・・・

    2022/01/22

    0.88じゃなくて0.9になった

     重要な変更がいくつかあるから0.88じゃなくて0.9にしたらしい、というSVT-AV1。
     
    encoder/decoderと詳細のドキュメントも更新されているので今読んでるところですが、超解像が加わった?のかな。
    なんか超解像って三菱のディスプレイのイメージがありますが、今調べると東芝のREGZAが出てきますね。
    4k/8k対応するにあたってエンコーダにもその技術が入れられてきてるんでしょうかね?
    と思いながらドキュメントを見てたら縦方向の解像度を落として エンコードしてでコード時に情報を復元する適な感じに書いてあります。
    ・・・nnediとかそれ系の話ですかね? 
    あとはx264並み?(similar complexity revel)のpreset9-12(x264のveryfast相当)が追加されたみたい。
    兎にも角にも遅くて使い物にならない、というのを何とかしたいのでしょうか。 

    もうちょっといじってみましょう。
     
    僕の環境では
    ・preset 8 が46fps→59fps、
    ・preset 5が6.3fps→13.7fps
    ・preset 3も2.5fps→3.0fps
    となってて、順調に最適化が進んでいるようです。とくにpreset5は使ってもいいかな、と思える速度になってきた気がします

    2021/07/29

    そういえばgitlabに移ってましたね

     
    というわけで2か月ほど前に0.87が 出てたらしいです。
    曰く
    - preset8でx265と同じような速度になったぜ!
    - メモリを2倍ぐらい効率的に使うぜ!
    - AVX2/512で最適化を進めたぜ!
    -その他もろもろ
    とのこと。

    確かに-preset 8 -q 30でエンコードしたところ、46fpsを超えました。
    0.86では29fpsぐらいなので1.5倍ぐらいになったのでしょうか。
     
    また、
    https://videocodectracker.dev/
    を見る限り、LIBAOMと同程度の品質を確保しているようです。・・・と思ったら21/2頃で止まってるのはgitlabに移った以降は機能していないとかでしょうかね。

    2020/10/17

    SVT-AV1が良くわからん

    9月ごろにver0.8.5が出ました。
    僕が使う分には0.8.4とあまり変わらない気がしますが、ちょうど良い素材があったのでいろいろと試してみました。
    ・・・が、なんかまともに動きません。
    前からなのかもしれませんが・・・

    症状
    1.メモリを異様に食う
    12core/24threadのCPUでエンコードしていると、いつの間にかコミットサイズもワーキングセットも30GBになっていたりします。
    いや、流石におかしいでしょ・・・
    自分でビルドした奴(少し進んだコミットの)がいかんのかとおもって公式のでも試したけど症状変わらず。

    2.エンコードしたものがシークしにくい
    「できない」わけではないところが良くわかりません。
    が、シークさせた時の症状としてはキーフレームがはるか彼方に飛んでるような感じで延々と演算するものの結局辿りつけず?絵が出てこない、という感じに見えます
    短いジャンプなら行けるところがまた怪しい。

    等で良くわからなかったのですが、エンコードガイドを2~3度読み返していたら
    デフォルトでopen gopになってる、ということなので、これじゃね?と思ってClosedGOPで試しています。

    ・・・いかんせんサンプルが2時間番組なもんだからエンコードに時間がかかるというのが面倒です
    とりあえず寝るか・・・

    2020/06/28

    SVT-AV1なるものがあるらしい

    もはやh264は軽いし、h265もそこまで重くない時代になりました。
    が、h265は特許を主張する輩が沢山いるせいで普及せず、ロイヤリティーフリーを標榜するAV1(AOMedia Video 1)が主流になりそうなニュースが流れてきてしばらくたちます。
    (つい最近ロイヤリティーフリーを破るようなニュースも出てきた気がしますが)
    そのせいか、h265をブラウザから直接再生はしてくれないのでなんだかな、と思っていた今日この頃。

    エンコーダが途方もなく遅い、という話を聞いていたのでとりあえずx264/x265で続けているのですが、
    AV1エンコーダーの速度と品質の比較 - ffmpeg(libaom) vs SVT-AV1
    というのを見て、SVT-AV1は意外と実用になるのでは?という気になったので試してみたお話。

    AV1のオフィシャルはlibaomらしいのですが、intelが頑張ってXeon最適化したS/Wエンコードするプログラムを作っているようで、それがSVT-AV1(Scalable Video Technology for AV1)だそうな。
    当然ryzenでも動きます。マルチスレッド最適化されていますし。