2017年12月にいただいた寄付は以下の1件です。ありがとうございました。

日付 お名前 金額
12/11 紳士MMDer 3,000円

バージョン 19.0.1 で追加された UtVideo T2 (UMxx) ファミリの詳細などです。

Read the rest of this entry

機能追加
  • 速度を重視した新しいコーデック (FourCC: UMRA, UMRG, UMY4, UMY2, UMH4, UMH2) を追加した。QuickTime コンポーネントではデコードのみ。

Read the rest of this entry

1つのベクタレジスタ(たとえば __m128i のこと)を返すラムダはきれいにインライン展開される(つまり、妙な一時変数がメモリ上に取られたりしない)ことは分かっているんですが、複数のベクタレジスタを返す普通の(=ラムダではない)関数がインライン展開されるときはどうなのか、というのが気になりました。

Read the rest of this entry

std::tuple の要素アクセスで std::get はあっても std::set がないのはなんでだろうか、と思ってたんだけど、 std::get は参照を返すのでそこに代入すればそれでいい、ということに気づいた。

あと std::set はコンテナクラスである…

ゆーむさんじゅうちょめちょめさい、というネタが使えなくなりました。

「伊400」「しおん」「しおん->伊400」「佐渡」「対馬」「涼月」「スリガオ」「海峡章」を追加しました。

ダウンロードはこちら / readme

なお、小官は12個目の甲種勲章を取得できなかったので退役します。そのため、致命的な誤りがない限り、今後の辞書の更新はありません。以後は github から fork するなりして各自何とかしてください。

2017年11月にいただいた寄付は以下の2件です。ありがとうございました。

日付 お名前 金額
11/06 Robert M Cargill $5.00
11/11 星風P 20,000円

なお、2017年10月には寄付はありませんでした。

現在の 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 ということにしたいと思います(効率よく処理する手法を思い付けていない)。

そういや C++ で算術右シフト (arithmetic right shift) するにはどう書けばいいんだろう、 intrinsic ないよなぁ…と思ってたんですが、「ほとんどのコンパイラでは」符号付き整数を右シフトすれば算術右シフトになるようです。

ただ、(負の)符号付き整数を右シフトした時の動作は処理系定義なので、論理右シフトになる処理系をうっかり踏むかもしれません。以下のような static_assert を書いておけば安心でしょう。

static_assert(-1 >> 1 == -1, "signed right shift is not arithmetic.");

ちなみに負の整数をシフトした場合は未定義動作らしいです。怖い。