Vritra 2.0

新しい映像圧縮アルゴリズムについて。
各リモートデスクトップにはコアエンジンが存在します。Brynhildr(2.x系)とGungnirは「KUGA」、Vrethragnaには「Vajra」、Brynhildr Free(3.x系)には「Vritra」の各コアエンジンが搭載されております。ここで言うコアエンジンとはVP8をベースにした映像圧縮コーデックを中心した技術です。途中にGaebolgとかもありましたね、そーいや。この手のを20年も作ってると忘れますよねー。
最新はBrynhildr FreeのVritraなんですが、Vritraの基本仕様はVP8ベースのRGB32です。RGBであることに強いこだわりを持っておりまして、RGBですと画質設定次第ではほぼ無劣化を実現できます。Vajraも従来はYUV420のみでしたがその後にRGB32を追加しました。どちらも似たような設計になってますが、やっぱり行きつくところはRGBなんですよね。
ですが、これまで実装していたRGB32のモードには弱点がありまして、CPUの負荷が大きいということです。要因は明らかで従来の色空間のYUV420から無理矢理のRGB32ですので実質2倍以上のサイズとなり負荷も大幅増ということになります。そもそもオリジナルのVP8はYUV420以外は対応しておりませんのでこの辺からお察しください。これを何とかできないものかとずっと四苦八苦しておりました。時間を見つけては模索していたのです。
やはりビジネス利用を見据えると色の滲みとかは無い方が良くて、しかもこの手のリモートデスクトップにはRGBがなかなか無いんですよね。見るからに無劣化で仕様を謳ってないのもあるのでそれはYUV444とかRGBだとは思うんですがRGBは最高峰ですのでやるからにはやはり目指したい頂なんですよね。
そしてよーやく見えてきました新しい映像圧縮アルゴリズム「Vritra 2.0」が。
何とか勘とかギュッと押し込めデータサイズは従来とほぼ同じで抑えつつもCPU負荷をなんと「約30%」も下げることに成功しました。やりました。数値上はかなりYUV420に近づきましてかなり満足の出来です。これであと5年は戦えそうです。
Brynhildr FreeのVritraはRGB32しかありませんので何とかRGB32を実用レベルにさせる必要がありました。またアセンブラを駆使したのは言うまでもないのですが、令和のこの時代にまだアセンブラを駆使するとは夢にも思いませんでしたが。速度でゴリ押しできるマルチスレッドアセンブラはつよつよです。
しかも従来のVP8で仕様か不具合とされていたキーフレームをオフにした際に差分がないのに圧縮率が上がらない問題を同時に解決しました。フレームレートも下がるし数倍のデータ量が消費するのでずーーーっと目の上のたんこぶだった課題が数年の時を経て遂に解決しました。ここ最近この現象を発見したと思ってましたけど、そーいやずっと前からあったなとふと思い出しましてね、完全に忘れてましたけど。もー歳なんでね。
ちなみに全体的な速度面とは言うと従来通りです・・・が、アルゴリズムを一新した副産物により速度を向上させることができる変身を2回も残していまして・・・。これは楽しみとして残しています、と言うのはただの言い訳でただ時間がないだけなんですが。実現できれば全てのコアエンジンをぶっちぎって過去最高速度になるはずですたぶん恐らく。ですのでこちらは期待しつつお待ちください。
そんな「Vritra 2.0」を実装した「Brynhildr 3.1.0」を間もなくリリースですのでお楽しみに!