現状、 Ut Video Codec Suite などの性能測定にはフルHDのクリップを使っています。使い始めた頃はこれでよかったのですが、UtVideo 自身の高速化や他の高速なコーデック(具体的には MagicYUV)の登場により1フレームを処理する時間が内部形式によっては1msを切る時代になり、そろそろ計測誤差を無視することができなくなってきました。そのため、次は4Kのクリップを使おうと考えています。(というか、MagicYUV の作者にそうすることを勧められた)

Read the rest of this entry

vcpkg という、 Microsoft が Visual C++ 向けに作っている(つまり、基本的にはライブラリをパッケージングするための)パッケージシステムがあります。

私は UtVideo のユニットテスト部分で boost と ffmpeg を使っているのですが、手打ちでビルドしていてかなりめんどくさいし、他人が UtVideo をビルドしようとした時に輪をかけてめんどくさいことになることが想像されるため、これが簡単になることを期待しています。

Read the rest of this entry

性能向上
  • UQxx: 全体的に高速化した。

Read the rest of this entry

i386/x86_64 向けの GCC/Clang のインラインアセンブラで "i" 制約によって定数を埋め込む時、AT&T 記法の場合だと $ プレフィックスが付きます。 AT&T 記法の場合は即値にプレフィックスを付けることになっているので、この挙動は妥当です。即値にプレフィックス付けなくてもアセンブルはできるようですが。(今試して気づいた)

Read the rest of this entry

その2の続き

2要素の場合で既にかなり残念なことになっていますが、3要素の場合はどうでしょうか。

Read the rest of this entry

その1の続き

要素の並べ替え(正確にはアンパック)を行う場合はどうでしょうか。 UtVideo では packed フォーマットと planar フォーマットの変換でこの処理が出てきます。

Read the rest of this entry

intrinsic に移行したけどそれもやっぱり辛いよね、という話を以前書きましたが、ではコンパイラによる自動ベクトル化はどれくらい使い物になるのかを調べようと思います。

Read the rest of this entry

性能向上
  • ULY0, ULH0: RGB 系フォーマットおよび YV16 での入出力を高速化した。
バグ修正
  • ULY4, ULH4, ULY2, ULH2: QuickTime で ARGB にデコードする際に誤ったアルファ値を設定していた。

Read the rest of this entry

式の置き換えを行う .equ ディレクティブの扱いが異なることがあるようです。

Read the rest of this entry

uint8_t での Predict Median で予測値を計算する際、uint8_t のままで計算すると gradient の計算でオーバーフロー(やアンダーフロー)が発生しうるため、その後に大小比較をすると不正確な結果になってしまう、という話をだいぶ前に記事にしました。

Read the rest of this entry