歴代最速
グングニルの続報でございます。ユールがその後どーゆー風になっているかを含めてご説明しよーかと。
さて。
Yule(ユール)は、Brynhildr(ブリュンヒルデ)の映像圧縮コーデック「Gaebolg(Speed)」の後継である「Gungnir(グングニル)」を実装したアプリである事は既にお伝えしたとーり。この時点で既に話がかなりややこしくなってますけど、自己満足の世界なんでややこしいと思った方はさらっと流し読みして頂いて構いません。自分用メモに近いですw
ほんでもってまずはGaebolgについて。もうかれこれ7年くらい前に作ったコーデックで、基本的なアルゴリズムがシンプルなんで圧縮率が低い代わりに高速で高画質が特徴です。
速度:★★★★★
画質:★★★★★
圧縮:★
グラフだとこんな感じです。でもさすがに圧縮率がこれじゃあと思って色々模索して5年くらい前にVP8をベースにしたコーデックを作ったんです。ちなみに懸命な読者の方はご存知の「KUGA」ってゆーのがあったと思うんですが、それはGaebolgとVP8のハイブリッドでして、Brynhildrに実装されているVP8よりも上位モデルの位置づけで厳密にはVP8とは違います。法人向けですかね。ですので本記事ではVP8とゆーとBrynhildrのVP8(Compress)を指します。
で、そんなVP8(Compress)が
速度:★
画質:★★★
圧縮:★★★★★
だったんですね。
で、YuleのコーデックであるGungnirが
速度:★★★
画質:★★★★
圧縮:★★★
なんですよね。中途半端感が半端ないですよね。
とゆーのも、GaebolgがYUV422(とYUV444のハイブリッド)でしたんで圧縮率が上がるYUV420にしようかと画策したんですね。VP8がYUV420なんでまあええんじゃないかと。そうすると予想通り圧縮率は上がりましたが、画質が下がって速度も下がりました。ガクリと。で、まーあと映像を最適化をするんですよ。離散化コサインみたいな感じに。ちょっとガタガタになりましたけどさらに圧縮率は上がりました。まーでも最適化に関してはプロトタイプでまだまだ改善の余地があったんです。でも絶対にGaebolg並みの画質にはなりませんが。
ただまーその段階で感じてしまったんですよね、こんな小手先ではしょうがないんじゃないかと。もっとトンガらないといかんのではないかと。全然モチベーションが上がりません。
ところで、GungnirってRGBとYUVの変換処理や差分処理なども作り直しているんです。プログラマーとしてかなり非常識なコーディングをしてますんでソースコードは完全に企業秘密ですけど。
かなりヤヴァイ書き方のアセンブラコードだと思います我ながら。
こんな書き方は無理やろな・・・え?いけるん?マジで?的なw
そんなGungnirと同様の処理がGaebolgとかVP8にもあるんでそれに置き換えたらどうなるんだべ?と思って年末年始のにチョイと試していたんです。するとですね。
・・・こ、これは!?
かなり速度が上がったんですよ、約1.5倍くらいに。
これいけそう。つーか当面はいけそう。あと5年は戦えそう。
つー事で、GungnirとゆーフレームワークでGaebolgとVP8を動かす方向にしたんです。なのでYuleのコーデックは忘れてください。GaebolgのYUV420なんて求められてなかったんです。そっちじゃなかったんです。
Gungnirの新しい処理に差し替えただけでGaebolgとVP8の速度が底上げされました。これまでVP8はそれほど速度が出てなかったんで求めていた要素なんですが、Gaebolgもさらに速度を上げるとゆーある意味あさっての方向へ。てかGaebolgはGungnirの技術を取り込んだ感じでほぼほぼ作り直したのに近いんですが。
で、Gungnir+VP8はこーなりました。
速度:★★★
画質:★★★
圧縮:★★★★★
で、Gungnir+Gaebolgはこーなりました。
速度:★★★★★★★
画質:★★★★★
圧縮:★
Gaebolgが歴代最速をマークですwww
で。
上の画像はGungnirのVP8の方で動作しているとこで、かなり速くなっていてなかなか上出来でございます。別PCのWindows10の画面を1280x720で60fpsを軽々とクリアです。画像では、静止画で112fpsなんですけど動画だと70~80fpsくらいですかね。双方Corei3くらいで。これだとかなり実用レベルかと。クラウドゲームとかでもいけそーな気がします。
しかもこれハードウェア支援ではなくてソフトウェアのみなんでかなり自分好みなんですよね。ハードウェア支援で速くなるってのがどーも好きじゃないんですよね。そんなん当たり前やろと思うところなんですかね。なんかこー根本的とか本質ではないよーな。アルゴリズムで勝負したいよーな。ソフトウェアのみならCPUが速くなればそれだけ速くなるとゆーが好きなんですよね。
ま、VP8をハードウェア支援に対応するのがめんどいだけとゆーのもこれまた事実ですけど。
一応、同環境でのBrynhildrのVP8も画像を張っておきますね。ペタリと。
記事が長くなってきたんで続く。