いちおー m2v.vfp は 422 -> 444 補間無しで C 版が動作するようになったのだけど、アセンブラコードを書く気力が沸いてこない為、まだ公開できるレベルに達していない。連休中に少しは進めておきたいところ。
スライスヘッダのエラー処理を厳密化して落ちないようにした修正も、その時入れる予定なんだけど、エラーブロックが目立つのでもちっと何とかしたいなと考えてる。
AviUtl プラグインの方は、色タイミング補正で、自動補正機能って付けてたら便利かな〜と一瞬考えたのだけど、パターン認識もちっと理解してからじゃなきゃ実現できないじゃんという訳で頓挫。それでも YUV 毎にエッジ検出して細線表示とかつけたら多少調節が楽になるかもと妄想中。
時々冗談で黒ベタ化フィルタとか作りたくなるんだけど、流石に誰も笑ってくれなそうだよな〜。圧倒的低レートを実現、ブロックノイズ・モスキートノイズ一切無し、再生負荷極少、脳内フィルタで超高画質再生とかうたって教えてクンに勧めたいんだけど。人間性を疑われそうだから止めておこう。
連休を潰した引き換えに手に入れた仕合せだと考えると、感慨深いものがある。積み重なっていた洗濯物の埃を払い、アイロンを掛けて、クローゼットに吊るし、掃除機を掛け、ゴミを出す。言葉にするとこれだけのことなのに、どうして3日間まるまるかかってしまったのだろう。
折角手に入れた仕合せなので出来れば手放したくはないのだけど、何となくすぐに維持できなくなってしまいそうな予感。
2回目の冬を前に暖房器具を購入。夏はエアコン一台で耐えることができるのだけど、冬はそれだと寒すぎたので。毛布に包まり、かじかんだ手を紅茶のカップで温めてキーボードを叩くのはもう嫌だ。
D-VHS 購入がまた遠くなってしまったけど、それは仕方が無いと諦めよう。そのうち HDD / D-VHS 混成モデルが……まず出ないだろうけど、出るかもしれないし。
昨日あんなことを書いたばかりだというのに、Rec-POT S シリーズ 発表ですか。
うー 240 G あればかなりの量を貯めとけるし、非常に心が揺れるのだけど。IO-DATA の製品とはあまりめぐり合わせが良くないからな。人柱報告を待って判断することにしよう。
SONY の cocoon に IEEE1394 があって HS モードの TS がそのまま記録できるか、松下の NV-HVH1 の HDD 容量が 100G 以上で S 入出力端子がついてれば、迷わずそちらにするのだけど。どーしてこう中途半端な製品ばかりなのだか。
アセンブラコードを書く気力はまだ起きないので、422 -> 444 補間を止めるついでで、1 GOP のデコード結果を全部バッファリングするという頭の悪い仕様を何とかすることにした。出力周りのアセンブラコードは補間を止めた時点でどのみち書き直しが決定してるわけで、C のコードだけになった身軽な今のうちに構造の変更を済ますことにした。
フレームにリファレンスカウンタ付けて、参照フレームから外すときに出力バッファに渡すのではなく、前方参照フレームにまわってフレーム番号が確定した時点で出力バッファに回すように修正し、出力バッファに保存する最大フレーム数を設定。一応、某家庭用ゲーム円盤由来の GOP 内フレーム数3桁という狂気の MPEG ファイルでもメモリサイズ 30 M 以下で処理できるようになった。
頭の悪い制限を追放できたのは嬉しいけど、これでもうアセンブラコードを書かずに済ます逃避先は失われてしまったのが悲しい。書かなきゃいけないのは 420 -> 422 補間と 422 -> RGB 変換、422 -> YUY2 変換、444 -> RGB 変換、444 -> YUY2 変換の5個……。土日で済むといいのだけど。
恐ろしい。昔は YUV444 -> RGB への変換関数一つをアセンブラで書くのに3日もかかったというのに、土曜日1日だけでアセンブラ関数3つも仕上げることができるとは。慣れってのは本当に恐ろしい。
そういうわけで MPEG-2 VIDEO VFAPI Plug-In 0.6.11 を公開しました。今回の変更点のポイントは YUV 422 -> YUV 444 への補間を削除したことです。テストは済ませたのであからさまなバグは残っていないと思いますが、何か問題が発生した場合は連絡をお願いします。
この変更で、720x480 MP@ML MPEG-2 で 5 fps も高速になりました。私の環境で MME.EXE でベンチマークを取った場合の実測値です。0.6.10 では 25 fps 前後だったのですが、0.6.11 では 30 fps が出るようになりました。(当然ながら、アスペクト比無視・AP-922 IDCT・CPU 拡張全て ON で、です)
また金曜に書いたように、バッファリングするフレーム数に最大値制限をつけたので、長い GOP を持つファイルを入力した場合もメモリ不足エラーはおらなくなっているはずです。
ふらふらと移転を繰り返すのは良くないと思った。折角、書籍で紹介してもらったのにごめんなさい。古いアドレスで紹介されてしまった「めざせあにぺぐ」の話です。あれを読んで、検索してここまでたどり着いた方、余計な手間を取らせてごめんなさい。今のアドレスは、よっぽど困窮しない限り維持します。たとえ月あたりに購入可能な DVD が2本減るとしても。
MPEG-2 VIDEO VFAPI Plug-In 0.6.11 を公開してから、1日しかたっていないというのに既に2件のバグレポート。落ち込むのはバグ修正が終わってからにしようと思いつつも奮い立たせる気力はなし。
そのうち1件(ブロックノイズ)は原因も判って、すぐに修正可能だからいいけど、もう一件のメモリリークが未だに再現方法がつかめていないので困ってる。他にも 0.6.11 でメモリリークされてる方がいたら、何でもいいので情報をください。
MPEG-2 VIDEO VFAPI Plug-In 0.6.12 を公開しました。今回修正されたバグのうち、SSE/SSE2 MC のバグというのは、B ピクチャの色差信号の動き補償を行うコードにバグがあり、色が下に伸びるようなブロック状のノイズが出ていた現象です。0.6.7 以降で SSE/SSE2 を有効にしていた場合に発症していました。
また、P ピクチャの No MC マクロブロックでの MC のバグは、ISO/IEC 13818-2 の 7.6.3.5 の処理が motion vector predictor のリセットを除いてまるまる抜けていたというものです。P ピクチャで櫛状のノイズが発生し、それが I ピクチャでリカバリされるまで GOP 内を引きずられるという症状が出ます。
最後のフィールドピクチャでのスキップマクロブロックの MC バグは、参照フィールドの指定が不定になるというバグだったのですが、普通の、フィールドピクチャをサポートしないエンコーダしか使っていない場合は無関係です。
この二つのバグは 0.1.0 の公開時から入っていたもので、今回 422 プロファイルでフィールド構造ピクチャのストリームを入手した際に発覚したので修正したものです。
と、たくさんのバグ修正が行われたわけなのですが、0.6.12 は非常に短命なものになります。0.6.11 でのメモリリークがサンプルファイル提供していただけたことによって原因判明したので、今日中に 0.6.13 を公開することになりましたから。
昨日まで連絡も無かったし、今年は幕張に行かずに済むとばかり思っていたのだけど、11/19 に駆り出されてしまうらしい。11/22 には行かずに済ませたいのだけどうまく押し付けることはできるだろうか。
MPEG-2 VIDEO VFAPI Plug-In 0.6.13 で、422 -> 444 補間削除関連の作業がひと段落したことになるわけなのだけど、次は何をしようかと考え中。やっといた方がいい作業としては、以下のようにたくさんあるのだけど、どれも面倒なので躊躇してる。
あー、領域複写プラグインに追加バグ報告が入ってたのを忘れてた。これから調べます。再現性が低そうなので現象をつかむのに苦労しそうですけど。
BIND に穴が見つかって面倒だな〜と思いつつ、パッチが出たらしいので修正作業をしようと、落とすパッチを調べるためリモートから named -v でバージョンを調べる。と、BIND 9.2.1 との表示が。
穴の無いバージョンじゃないか、これならアップデートしないで済むというわけで、5ヶ月前の自分を褒めてあげることにした。ああ、あの時思い切って BIND 9 に移行しておいて良かった。
P4 環境以外で MPEG-2 VIDEO VFAPI Plug-In 0.6.14 を使うと落ちます。ごめんなさい。今はコンパイラが手元にないので無理ですけど、帰宅したらすぐになおして 0.6.15 出します。0.6.14 はできれば落とさないでください。
アルコールと眠気につかった脳が書いたコードって駄目ですね。ソースを確認して、if(simd & 3) ってなんじゃそりゃと自分の目を疑いました。自分で書いたはずのコードなんですけど。
昨日の朝、更新かけた直後に 422P@ML の MPEG-2 でアクセス違反起こすことに気がついて慌てて引っ込めて、修正してから出したバージョンだというのに、なんと言うていたらく。しくしく。
回避失敗。22 日の幕張行き決定。くそう、じゃんけんに負けた。
金曜に公開した MPEG-2 VIDEO VFAPI Plug-In 0.6.15 で SSE2 が強制使用されるバグ(恥)も除去され、おおむね問題なく動くようになりました。しかし……肝心の追加 SSE2 コードによる最適化の効果が、無いに等しいのが悲しいところです。
P4 環境で SSE2 のみ有効にして、0.6.13 と 0.6.15 を実際に動かして比較してみると判りますが、SSE2 コードによる高速化は 1 fps にも満たないことが判るはずです。この程度の効果しかない最適化のために、0.6.14 であんな無様なバグを入れたのかと思うと、脱力具合もいや増してしまいますが、それは本題ではありません。
SSE2 コードによる最適化の効果が薄い原因は、コードが駄目だからです。P4 の SSE2 命令は、MMX 命令と比較すると、レジスタ幅2倍、スループット(消費クロックで)2倍、レイテンシ2倍という素晴らしい実装なのです。これはかなり乱暴な比較ですが、加算・減算・乗算・シフトといった一般的な命令では、この比較は正しいものです。単純に、レジスタ幅の広がった MMX 命令として使っているかぎり、SSE2 命令では劇的な最適化を望めないのです。
SSE2 コードによる最適化の効果を最大限にしたい場合、2倍になってくれたレジスタ幅を最大限に活用して、2倍になってしまったスループットによるパイプラインのストールがなくなるように、実行ユニットを考慮に入れながらペアリングをしてあげなければいけなくなるのです。当然ですが 0.6.14 で追加された SSE2 コードでは、こんな面倒な作業はやっていません。
という訳で、私は SSE2 が嫌いです。より厳密に言うと、P4 の SSE2 が嫌いなのですが、現状 P4 以外では SSE2 が使えないので SSE2 が嫌いだと言い切ってしまいます。ああ、VTune の試用ライセンスファイルを再入手する手続きをしておかなきゃ。
というわけで、InterBEE の準備に行ってきました。忙しくてあまり他のところは見てこなかったのですが、はす向かいのかのぷ〜ブースではデモのリハーサルに余念がなく、気合の入り方がちがうなーとの感想を抱きました。あと、この手の展示会にしては珍しく、Panasonic のお姉さま方が魅力的な服装をされていたとかゆー話も聞いたので、金曜に時間があれば覗いてこよーと思いました。
がーん、9/1 から施行された改正特許法から、プログラムも「物」の特許になってて、しかもソース配布も「物の生産にのみ使用する物」ということで特許侵害扱いになってたのね。油断してて知らなかった。
とりあえず「テスト目的」という言い訳についてはまだ有効性が失われていないから当面は大丈夫だけど、窮屈になってきたな〜。そもそもああいうところで仕事してる人があんなものを作っていて良いのかという問題もあるけど、余暇にソフトを作る分には前例があるから大丈夫だろう。多分。仕事先の人にはこのページもう知られてるはずだし、まだ何も言われてないから。
「A君(17)の戦争」4巻読了。ここまでやられてしまうと、もはや文句のつけようもありません。1巻を読んだ時に、佐藤大輔の劣化コピーとかいう評価を下したことを許してください。よっぽど詰まらない作品を出さない限り、著作を買い続けることにします。
「全ての物語は聖書のパクリ」という発言には「タケシくんもやってるじゃないか、どうしてボクだけが怒られるんだ」という発言に共通する頭の悪さを感じたりするから、私は支持しない。
気づかれないように行われたパクリなら、実際に気づかれなければ問題ない。ばれても楽しめるように行われたパクリなら、実際に楽しめればやっぱり問題はない。それだけのことだ。
つまらないものを作ってしまった。auf に追加した崩壊フィルタのこと。フィルタを有効にして数フレーム送ってみると何をするフィルタなのか、また、使い道がどこにもないということも、すぐに判るはず。420 出力プラグインの方が用途は限られるとはいえまだ有用なプラグインだといえる。
何でこんなものを作ったかというと、C マガ 12 月号を眺めていて、結構簡単につくれそうかもと邪念を抱いてしまったため。別に AviUtl を M@D 作成ツールに育て上げようという野望が……無いわけじゃないけど、AviUtl のインターフェースはそういうのに向いてないということを判断する程度の能力はある。
まー作ってみれば勉強になるもので「プラグイン側からプロファイルの有効範囲を知る方法がないじゃーん」とか「どうにかして背景を単一色で塗りつぶすのではなく、動画に変更してトランジッション風味にできないかなー」とか色々と考えることはあるので、全くの無駄だったという訳ではない。さて、少しは真面目なこともやることにしなければ。
これで最後だと思いたい MPEG-2 VIDEO VFAPI Plug-In のバグ。0.6.11 でのエンバグがもう一つ見つかり、修正されました。長い GOP のファイルで逆方向のフレーム送りをすると、途中で無限ループに落ちます。という訳で、修正版 0.6.17 が公開されています。報告&サンプル提供ありがとうございました。
うー、そうだった、1 GOP 分キャッシュされてる訳じゃないんだ。シークの条件判定直すの忘れてた。知性が低すぎる。
何となく珍しかったので。
屁理屈。「DVD リッピングは違法行為です」という指摘は、DVD リッピング関連の書き込みではないのだろうか……。
何でスレッドが1つ立っただけで 900 件も referrer が入るんだろう。もう2ページ目に落ちてるから今日はそんなに人は来ないと思うけど、通常の2倍以上のアクセスがあると流石にびっくりする。
一週間ほどとらハ時空に囚われていたけど、ようやく帰ってこれた。つーかこれは中毒性が高くて危険だ。まだ2と3が残っているが、暫く間をあけてから手をつけることにしよう。本気で帰ってこれなくなると困るので。
データシートを探して WEB めぐり。SONY は作ってないみたいなので除外するとして、富士通、日立、松下、東芝、シャープ、三菱電気、Agilent、Micron、OmniVision、Kodak、Hynix、ICMedia、Motorola、National Semicondactor、ST と一巡り。
さて、問題です。私はどんなチップのデータシートを探していたのでしょう? 一つ、専業メーカが入ってるのでその筋の方ならすぐに判るはずです。正解しても何も出ませんけど。
んで、探していての感想。発表が半年前のチップのデータシートが置いていないのは仕方が無いとして、一年前のチップの PDF すら置いてないってのはどうなんだろう。ファイルはあるんだから、WEB もきちんと更新して欲しい。