• libaomのデコード、速くなってる

    2019年02月17日 18時47分
    v1.0.0以降でエンコードしたAV1動画を不定期にChrome CanaryとFirefox Nightlyで再生しているのだけど、
    今日Core i7 7700のChrome Canaryで実行したら止まらずに再生出来た。

    正月くらいに見た時は所々で止まってたのでまだ高速化は頑張っているようだ。

    Firefox Nightlyの方はダメだった。
    同じlibaomなのになんでだろ?まあChrome Canaryもフレームが落ちているのかもしれない。

    あと、Firefox Nightlyはlibaomだけでなくdav1dも実装されているが
    少なくともこの映像に関してはdav1dはlibaomより遅い。


    Core i7 3770でも再生してみたけどこちらはまだダメ。
    ただ、半年前よりだいぶ動いているのでもうちょっと頑張ればもしかしたら行けるかも感は出ている。
  • v1.0.0以降でエンコードしたAV1動画 2

    2018年08月07日 19時09分
    前回の動画だと再生があまりに無理すぎて面白みが無いので一段軽くした動画も作った。

    ちなみに前回の動画はCore i7 7700で再生してみたらもうちょっとな感じだったので、
    Core i7 8700とか8086Kとかなら行けるかもしれない。


    今回のソースの映像はFF14からオメガ vs 神龍をキャプチャしてきた i420 1280 * 760 6555フレーム(30fps)のデータ。

    これはCore i7 3770でリアルタイムにデコード出来たので割と新しめなCPUなら行けると思う。



    容量は114MBくらいです。
  • v1.0.0以降でエンコードしたAV1動画

    2018年08月03日 20時16分
    v1.0.0以降でエンコードしたAV1動画を試しに作った。

    ソースの映像は例によってカスタムオーダーメイド3D2をキャプチャしてきた i420 1920 * 1080 10743フレーム(60fps)のデータ。

    これをaomenc(66b7d7bc04c68b5be21190013cee06f101f317e9 2018-07-26 01:38:44 GMT)でエンコード。

    オプションはこう。
    aomenc ^
    --verbose ^
    --psnr ^
    --threads=4 ^
    --webm ^
    --codec=av1 ^
    --profile=0 ^
    --end-usage=q ^
    --passes=1 ^
    --cq-level=32 ^
    --cpu-used=8 ^
    --tile-columns=3 ^
    --tile-rows=2 ^
    --frame-parallel=1 ^
    --color-primaries=bt709 ^
    --transfer-characteristics=srgb ^
    --matrix-coefficients=bt709 ^
    --output=av1_1920x1080_i420_60fps.webm ^
    av1_1920x1080_i420_60fps.y4m


    CPUはA8-3850を使って513890859 ms(142時間)かかった。
    60fpsとはいえ実時間の2854倍である。

    参考だが最初cpu-used=0でエンコードしようとしたところ、
    残り800時間とか表示が見えてキャンセルした。
    たぶん最後までエンコードしたら1000時間オーバーだと思う。

    相変わらずというか昔より遅くなっている気もするが、
    v1.0.0以降、最適化を頑張っているみたいで「何十%早くなりました!」
    みたいなのがそこそこ入ってるから今後に期待したい。


    デコードの方は、A8-3850はもちろんCore i7 3770でもやはり間に合わない。
    まあデコーダの最適化具合を見るとかCPUのベンチマーク的に使えばよいと思う。
    Ryzen Threadripperとかなら行けるかもしれない。



    画質と容量については深く考えずに作ってしまったので3分の動画なのに391MBもある。
    とりあえずcq-level=32では過剰なようだ。
  • ブラウザのAV1対応状況

    2018年07月27日 23時54分
    ブラウザで再生可能なAV1を作るにはどんな感じの設定がいいかなーと思って対応状況をちょっと調べたのでメモ。

    Firefox Nightly 63.0a1 (2018-07-26)
    • v1.0.0以降に対応済み
    • about:configでmedia.av1.enabledをtrueにすると再生可能
    • ビットストリームのmatrix coefficients指定を無視してBT.601として変換
    • ビットストリームのcolor range指定を無視してstudio(limited)として変換

    Chrome Canary 70.0.3503.0
    • v1.0.0以降に対応済み
    • chrome://flagsで#enable-av1-decoderをEnabledにすると再生可能
    • ビットストリームのmatrix coefficients指定を無視してBT.709として変換
    • ビットストリームのcolor range指定を無視してstudio(limited)として変換
    • yuv444非対応(Profile 0のみ対応?)

    まだ細かいところが調整されていないだけで後から直されるかと思いきや
    この辺りの動作は割と雑に実装されておしまいというケースも多いのでどうだろう?
  • AV1が1.0.0になった

    2018年06月26日 21時00分
                           コングラッチュレーション
                 ,―==7     Congratulation!   コングラッチュレーション
                 |く ___ _>                    Congratulation!
                 fll`ーU+'
                 `''、 ー=|      おめでとう・・・・・・・・!
              _,,..-´:|ヽー-;ー..,,_
    .  ,-=-, ,,..-‘≡≡:| ><´|≡::|ヽ    おめでとう・・・・・・・・!  おめでとう・・・・・・・・!
    .  | l____ヽ.|≡l≡≡≡| |::| |≡:::/::|
    .  |(llー´_ヽ|≡|≡≡≡|.|:::|l≡::/::::|      1.0.0おめでとう・・・・・・・・・・・・!
    .. 4 l__`=|_|≡:|≡≡≡::||:::|'≡/≡|
    /|\,.・|::≡:|ヽ|≡≡≡≡≡:::/|≡::|                         _,,.........、
    ≡|/}:ヽ|:≡|::::|{≡≡≡≡≡:::{ .|≡::|                        ヽ_,,   ヽ
    ≡:| |:::|l≡:|≡|:|≡≡≡≡≡:::|. .|≡::|                        /_>   |
    :::≡l|:::|'≡:|≡:|::|≡≡≡≡≡:::|. .|≡::|                       |7 llう.. |
    ≡≡≡≡/|≡ヽ≡≡≡≡≡::::|. ..|≡::|.    z-..,〃、             ム__ ll´.. |
    ::≡≡≡::/ ヽ≡ヽ≡::|―、≡≡::l ..|≡::|   /    ミ              1´/ヽ==,...
    ::≡≡≡|   \≡ヽ::|  ヽ≡≡l  .ljヽl  |   刀、ミ           _,,,..-`‐三=ー-
    ::≡≡≡|    |ヽ/ー.、.. ヽ≡≡l.  .|/  |  ノ= ∠i         /ヽ、≡≡≡≡≡
    :|¬、≡≡ヽ.  |≡ゞー=ッ  |≡≡|   __/ (ll ー゜\|ヽ.       /≡::ヽ≡≡≡≡≡
    :|  ヽ≡≡ヽ |≡≡ヽミ.   |≡≡|  l|. ll7| ヽu=/l二ll二l'''ヽ  /≡:::/≡≡≡≡≡
    :|   ヽ≡≡ヽ≡≡|     |≡≡|  | | llヽ|w-ヽ/Nヽll  |  | /≡:::/≡≡≡≡≡≡


    ソースのgit
    https://aomedia.googlesource.com/aom/+/v1.0.0

    仕様書のgit
    https://github.com/AOMediaCodec/av1-spec/releases/tag/v1.0.0

    ついに1.0.0タグが打たれた。
    3月末の情報公開で1.0.0リリースって書いてるメディアが有ったけど見ての通り6月25日です。


    gitのコミットログをチラチラと見てたけど
    結構マルチスレッド処理の実装が入ってて、実際に使ってみると割とCPUが回るようになっている。
    Ryzenが欲しくなった。

    あと深層学習を使ったよみたいなのも有って期待が高まる。気がする。

    SIMD系の実装追加はx86系はあまりなくてARM(Neon)がチラホラ。
    ARMでどうにかなるようなシロモノじゃない気もするのだがどうなんだろう?


    一番重要なのは、今後「エンコードした奴がバージョン違いでデコード出来ねぇ!」が無くなるであろうところ。
    ハードウェアも作れるだろうし普及するといいな?

    ひとまずはエンコードを色々試してみたい。