大体残念な回答になっていますが。

Read the rest of this entry

Vegas Movie Studio HD Platinum 10.0 (以下 Vegas)で Ut Video Codec Suite でエンコードされた映像を素材として使っているとかなり落ちやすい、という報告を受けました。

体験版で試したところ確かに落ちるんですが、デバッガで一般保護例外を捕まえられません。Vegas はマネージドコードで動いているようなのですが、最初はマネージドコードとしてアタッチしてしまって utvideo.dll すら見えないという状態でした。これはネイティブコードとしてデバッグするように明示したらとりあえず utvideo.dll が見えるようになったのでこれに関してはOK。しかし落ちてもデバッガで例外を捕まえることができず、Vegas が内蔵しているエラーリポート機能が起動してしまいます。ブレークポイントを設定すると止めることはできますが、秘孔を突いて1発で落ちるような問題ではないので、これでは意味がありません。

これではデバッグができない…

ここしばらくは Range Coder と格闘していましたが、結果として Lagarith より圧縮率がちょっと(2%ぐらい)良くて、エンコード速度がちょっと速い(シングルスレッドの場合)ものが作れそうだ、という技術的検証まではできました(デコード処理は書いてないので不明)。まあ、Lagarith のアルゴリズムをほんのちょっとだけ改良しただけなのでこんなもんでしょう。アルゴリズムに新規性が無いのは昔からなのでその点は気にしないことにします。

Read the rest of this entry

いつものように twitter を眺めていたら、sizeof(a++) という摩訶不思議な式が。

いやまあ、sizeof の中に型名だけでなく変数名や構造体のメンバ名も書けることは知っているわけです。たとえば以下のように。

Read the rest of this entry

Ut Video Codec Suite は、開発初期の目標はともかくとして、「そこそこの圧縮率でかなりの速度の編集用コーデック」という方向にバージョンアップを重ねています。「かなりの速度」という点に関しては、アルゴリズムレベルや実装(アセンブラ)レベルでの継続的な改良により、満足できるレベルを達成できていると思っています。

Read the rest of this entry

性能向上
  • 共通: x86 でのデコードを 10% ほど高速化した。
  • 共通: x64 版をアセンブラ化し、おおむね x86 版と同程度の速度にした。

Read the rest of this entry

x86版でアセンブラ化されているところは全てx64版でもアセンブラ化したので、ここいらでまたベンチマーク結果を載せておきます。基本的にはベタ移植なので速度はほとんど同じはずですが、ハフマンデコードに関してはメモリアクセス回数削減の効果が期待されるところです。なお、x64版のアセンブラ化の過程で、どちらに対しても適用できるデコードの高速化を行ったため、x86とx64の両方を再計測しています。

Read the rest of this entry

SSE2 には MASKMOVDQU という命令があって、16バイトの長さを持つ SSE レジスタの一部分だけを書き込むことができます。

Read the rest of this entry

Ut Video Codec Suite の x64 版をアセンブラ化するために、Intel のドキュメント等で勉強してたわけですが、一般的な注意点とか自分が遭遇した落とし穴とかについて書いておきます。対象読者狭すぎw

Read the rest of this entry

  • -a オプションを使うとロスレスチェックが行われる状態になっていたのを修正。

配布ファイル (zip)

Read the rest of this entry