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

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

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

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

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

以前こんなことをツイートしてました。

Read the rest of this entry

主に Ut Video Codec Suite の開発まわりでの、改行コードが LF の対応状況をメモ代わりに。

Read the rest of this entry

JetBrains はオープンソース開発向けに無料ライセンスを用意しています。 Ut Video Codec Suite の開発にこれを適用できないかと思いました。この場合、実際に使うのは CLion になります。

Read the rest of this entry

Ut Video Codec Suite を Linux (Unix) でも使える(ビルドできる)ようにすることを考えているわけですが、今時生の Makefile をフルに手書きしたくはありません。

今 Unix でポピュラーな Makefile 生成システムというと autotools (automake/autoconf) と CMake が考えられます。他にも SCons とかいろいろあるようですが、考えないことにします。(ググっても CMake と比較するとだいぶ少ないし)

Read the rest of this entry

一般論として、リポジトリ内の改行コードは LF がよい、ということになっているようですが、例えば Ut Video Codec Suite とかのリポジトリでは CRLF で入っています。ついでに src zip も CRLF です。

なんでそうなっているのかというと、昔は Linux 上で svn リポジトリを checkout して samba 経由で Windows から開く、ということをたまにやっていたからです。Visual Studio 2005 だといくつかのファイルは CRLF でないと正常に開けなかった(はず)ため、じゃあってんで全部 CRLF になるようにしていました。今の git リポジトリの状態はそれを踏襲したものになります。 Git for Windows の設定も autocrlf=false にしています。

今後 Linux で使えるようにしようと考えると、改行が CRLF な状態は好ましくない(リポジトリ内が CRLF でチェックアウト状態が LF という設定はできない)かなぁ、と思い始めているのですが、リポジトリ内の改行を CRLF から LF に変更するとそのタイミングで blame での変更追跡が切れる、という問題が発生します。うーん。まあ仕方ないですが…

ちなみに、svn 時代はリポジトリは公開されていなかったのですが、その頃に CRLF になっている src zip を LF に変換して fork (?) している github リポジトリがあるのを見たことがあります。

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

Read the rest of this entry

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

Read the rest of this entry