2年半ぐらい前にちょっと実験したもののその後放置していたハフマンデコードの高速化ですが、最近なんかやる気が出て来たので当時やってなかったアセンブラルーチンを書きました。

Read the rest of this entry

その1の続き

コーデックにデバッグログを仕込んで出力を眺めていましたが、Ut Video Codec Suite 側には問題はなく、呼び出し方に問題があるという結論に達しました。頻繁に内部バッファをフラッシュする指示を送ってきながら、その直後にデコード済みフレームの取得を行っています。フラッシュされているので当然取得できず、その場合に透明なフレームとして表示されているように見えます。

とはいうものの、使えない状態で放っておくのもどうかと思うので、アプリケーションごとに特定のインターフェースを無効にする機能ぐらいは作ってもいいかと思います。今回の例では、HitFilm では DMO インターフェースを無効にし、VCM インターフェースでのみ Ut Video Codec Suite を使用するように設定すると回避できることが分かっています。なお、今すぐ何とかしたい場合は、 C:\Windows\System32\utv_dmo.dll を削除すると何とかなります(副作用があるかもしれません)。

性能向上
  • ULY4,ULH4: RGB 系フォーマットからのエンコードを高速化した。
  • ULY4,ULH4: RGB 系フォーマットへのデコードを高速化した。

Read the rest of this entry

Twitter をエゴサーチしていると、Windows 10 の Windows Update の後で Ut Video Codec Suite が消える(使えなくなる)、とツイートしている人をそれなりに見かけます。(再インストールすると使えるようになるようです)

最初は Anniversary Update 時特有の現象だと思っていて放っておいた(「ご不便をおかけしております」で済ます)のですが、今月になってもまだツイートがあるので、これはホントに毎月消えるんじゃ?と思って手元でテストしました。結果、そのような現象は確認できませんでした。

全員が勘違いしているとは考えづらく、何が起きているのか分からず気持ち悪いところです。とりあえずこれから毎月確認してみます。

以前書いた記事で intrinsic の欠点をいくつか述べていますが、このうちコンパイラが古いと最近の命令を使えない、という重大な点については、Visual C++ 2015 や Xcode 7 に移行することにより既に解決してしまいました。将来的にも、OSS開発 and/or 個人開発 であれば Visual C++ も無料で Pro 版相当の機能のものが使えるようになってしまいましたし(新しいコンパイラを追いかけるのに費用が掛からない)。

一部の命令が無い点については解決されうるものではなさそうですが、そういうところは相変わらずアセンブラで書いておけば良いかと思います。Ut Video Codec Suite 的に一番重要なハフマン符号処理がこれなのがちょっと残念ですが。

なんで今更こんなこと言っているかと言うと、いい加減「ほとんど同じかと思いきや結構違う2つのアセンブラソース (x86/x64) をメンテする」のはもういやだ、と思ったからです。思うのが遅いという話はあります。

Intel IPP (Integrated Performance Primitives) という、画像処理、信号処理、データ処理(圧縮・暗号化)において良くある処理を収録した Intel 製のライブラリがあります。Intel 製なので、Intel CPU に対して特に最適化されているはずです。(AMD CPU についてはどの程度かはよく分からない)。IPP はコミュニティサポートでいいのであれば最近はロイヤリティフリーで使えるため、IPP を UtVideo で使ってみようかと考えました。

Read the rest of this entry

機能追加
  • 内部保持形式が YUV444 8bit のコーデック (FourCC: ULY4, ULH4) を追加した。RGB 入出力の場合はあまり速くない。

Read the rest of this entry

Windows Defender が Ut Video Codec Suite のインストーラをマルウェア扱いしてブロックするようです。Microsoft Security Essentials はブロックしないようです。他のウイルス対策ソフトも反応しないようです(VirusTotal調べ)。

Read the rest of this entry

今のところ、ユニットテストは映像の内容そのものではなく、せいぜいフォーマットのネゴシエーションぐらいまでしか行っていないのですが、いい加減エンコード/デコードそのもののテストに取り掛からないといけないと感じています。

Read the rest of this entry

バグ修正
  • 「インターレース映像としてエンコード」オプションを有効にするとエンコーダがクラッシュしていた。
その他
  • Windows の QuickTime 版のコーデックを削除した。

Read the rest of this entry