現在の Ut Video Codec Suite の圧縮はハフマン符号によって行っているのですが、ハフマン符号だと命令レベルの並列性が低いとかSIMDにやさしくないとかの問題があり、性能は頭打ちとなっています。

ここしばらくSIMDにやさしいアルゴリズムを考えていて、ある程度実装した結果まあまあ満足できる性能を達成できることが分かったので、これを正式に実装しようと考えています。実装した結果は github で見れます

実際の性能ですが、2k/RGB24 の crowd_run (ここで使っているもの)で圧縮比 1.74、 i7-2600K でエンコード 95fps デコード 150fps、 i7-4770 で 180fps/300fps 程度です(シングルスレッド時)。AMV4 DR3 と比較して圧縮比は少し高く、処理速度は少し低いという感じになります。なお、 AMV4 は時間方向に圧縮する機能があって変化の少ない映像だと高い圧縮比を達成できますが、UtVideo の方では future works ということにしたいと思います(効率よく処理する手法を思い付けていない)。

AVI を再生しようとした時に Huffyuv と UtVideo とで挙動(というか、出てくる media type の形態)が違う点について調べていたのですが、 avidemux element が FourCC に応じて自分で設定している、つまり「コンテナを処理するコードがコーデックごとに処理を変えている」ようだ、ということが分かりました。 FourCC が HFYU の場合は「知っている」ので video/x-huffyuv になり、 ULRG の場合は「知らない」ので video/x-avi-unknown; fourcc=(int)0x47524C55 になります。

Read the rest of this entry

ドキュメントは一通り読んでいて、ようやく Ubuntu Desktop 上で既存の element の挙動を調べています。

ついでに言うと Linux は今まで RedHat 系 (RHL, Fedora, CentOS) しか使ったことがないんで、Ubuntu のパッケージ命名規則に微妙に戸惑いがあります。だったら Fedora 使えと言われそうですが VM 上でなんか挙動が不審だったんで…

Read the rest of this entry

むかーしから Linux 版は無いのと言われることはあります。今だと FFmpeg/Libav に彼らが書いた UtVideo 互換実装があるので、追従にタイムラグが若干存在しますがそれを使えます。性能がどうかは調べてないので分かりませんが。

Read the rest of this entry

先日、映像作品上映イベントである FRENZ 2017 が開催されましたが、今回の上映システムでは UtVideo が使われていた — つまり、上映用の動画ファイルは UtVideo でエンコードしておいて、それをリアルタイムで再生したそうです。「そうです」と書いた通り、私はこの上映システムとは直接無関係で、そうなってることを(後で)聞きました。

Read the rest of this entry

次回のコーデックベンチマークに向けてツールを修正したりテストクリップを生成したりしていたわけですが、めんどくさくなってきました。具体的に何がめんどくさいかというと、計測結果をもとにグラフの画像を生成する部分です。

今までは Excel を使っていたのですが、Excel だとグラフの画像のサイズをピクセル単位で厳密に指定できません。ピクセル単位で指定すると mm 単位に変換され、それに応じてピクセル単位でのサイズが決まります。なので微妙な誤差が発生します。めんどくさい。あと GUI ツールなので自動化しづらいという問題があります。ベンチマークした結果でグラフを大量に生成するつもりだったので手打ちではやってられません。

コマンドラインツールでグラフを描くというと昔から gnuplot というツールがあります。ただこれ、何とビックリ、単独では横棒グラフが描けません。じゃあどうするのかというと、縦棒グラフを他のツールで90度回転させるのだそうです。しかしその場合、凡例などの文字列はあらかじめ90度回転したものを描画させることになり、しかも回転したことによる位置ズレは自力で微調整しなければいけません。今時ありえん。

てな感じで、調べれば調べるほどやる気がなくなってきました。

バグ修正
  • 一度 ICDecompressBegin に失敗すると、それ以降のファイルでデコードしようとしなくなっていた。
その他
  • 十分に -q オプションが指定されている時に ICDecompressBegin が失敗した場合、エラー表示するのではなく結果のデコード速度でハイフンを表示するようにした。

Read the rest of this entry

(This article is English translation of Japanese version)

I found that the video clips that I generated are not compressed very much. The compression ratio is 1.06 in case of AMV4/DR2. I think it is not good and have to search other clips.

Read the rest of this entry

クリップを作ってみたけど圧縮してみたら全然圧縮できないことに気づいたわけです。ちなみにこのあと AMV4 の DR2 で圧縮してみたら圧縮比 1.06 になってしまい、いやこれはさすがにダメでしょと思い、ちゃんと圧縮できるクリップを別途用意することにしました。圧縮できないクリップもそれはそれで計測価値があるので crowd_run も使います。

Read the rest of this entry

先日の記事で作った4Kのクリップをザックリ圧縮してみました。

Read the rest of this entry