昨年末から引きずっていた風邪が悪化。元日は何とか起きていられたものの、2日は沈没。熱が上がって床を離れることができなかった。実家に帰るたびに体調を崩すのは何故なんだろう。軟弱ゆえに空調の不十分な実家環境に耐えられないのではないかということは薄々感じてはいるのだが。
今日は少し熱も下がり、活動する余地もできたので、みぞれ交じりの雪の舞う中秋葉原へ。渡辺製作所&TYPE MOON の「Melty Blood」が委託開始されていたので購入し、Matrox 最後の VGA との噂も高い Parhelia 512 と、年末にくたばってくれた IC35L060AVER 代替の 6Y080L0 を購入。
購入した Pharhelia は 128M のバルク版。半分ネタ(半分は G450 の 1600x1200 でのオーバーレイ制限に耐えかねて)とはいえ、コアクロック1割高いだけのリテールや、メモリを無駄につんだ 256M 版には手を出せなかった。一応主目的だった 1600x1200 環境での YUY2/UYVY/YV12 オーバレイは全て成功し、ついでに G450 環境では 30fps @ 720x480 が限界だった MME.EXE のベンチマークも 54fps @ 720x480 まで出るようになったので、それなりに満足。
すっげー潔い仕様だな〜。Pharhelia って YUY2/YV12 では stride が 256/512/1024/2048 と 2 の乗数で固定になっている。素敵だ。今作ってる変換フィルタにゴミが乗るようになってしまったので、とりあえず修正。
さて、PowerDVD VR-X では YUY2 接続だったので、下手したら HW 動き補償に対応していないのかもと不安になったけれど、WinDVD では DXVA_ModeMPEG2_B で接続に成功している模様。ただ DXVA の On/Off を切り替えても CPU 負荷の変化が見えないのが気になる。MC の分 CPU が丸々浮くものと思っていたのだけど、そんなにうまい話ではなかったりするのだろうか。
今作ってるフィルタも、せめて接続してプローブぐらいはできるようにしたいのだけれども、残り二日でどこまでできることやら。何とかするしかないとはいえ、寝込んでいた2日間と再インストール2回で1日潰れた HDD 障害が痛い。
禁断症状に耐え切れず土日月と潰してとらハ DVD 完全読了。おまけシナリオまで読み終わり。あー疲れたけど楽しかった。つまらなかったら、あの分量は読みきれませんって。流石に4年以上経ってまだ名前が残っているものだけのことはある出来。
旧作のうちでは2しかやってみたことはないのでそれとの比較になるけど、内容ほぼそのままでシステムが大幅にマシになっているのに感動。後は OP の歌が聞けるものになってた点とか。
さて、箱が邪魔繋がりで次は家族計画絆箱に手を出してみますか。こっちはリメイク前のを全部読み終わってるからいまいち楽しめるかどうか不安なのだけど、その場合は真面目にプログラムを再開すればいいだけのこと。
今日から書店にも並んでるはずなので。「トランジスタ技術 2003年 2月号」(CQ 出版)に記事を書きました。CCD/CMOS センサの特集の一記事として ITU-R BT.601 や ITU-R BT.656 等のデジタルビデオ関連規格の解説をしてます。8月から10月にかけてちろっと書いてた某副業とはこれのことでした。
他の方々の記事も素晴らしいものばかりですので、よろしければ是非お買い上げください。あと、2002年12月号から2003年2月号まで短期連載されていた「ビデオ信号の評価テクニックを学ぼう」という記事も、NTSC の波形モニタやベクトルスコープの見方などが詳しく書かれていてあにぺぐな方々にもおすすめです。
再びの後悔。やっぱりシークは PTS ベースにしておくべきだったのかもしれない。デジタル放送で番組/CM 間に GOP タイムコードが非連続になるとのことで、サンプルを提供してもらい調べてみたところ PTS は連続していてくれた。
最初に作り始めたときは Video ES しか考えてなかったから仕方がないこととはいえ、いい加減作り変えるべきときが来てるのかも。手を入れるとしたら5月の連休かな。
とりあえず、当面は GL ファイルを強制作成するオプションをつけるぐらいしか逃げ道がないのが悲しいところ。ついでだから GL ファイルの作成中はプログレスダイアログを出すように改造してしまおう。プラグイン側でダイアログを出すのは VFAPI 仕様に反してるから今までやってなかったのだけど、どう考えても出した方が親切だろう。
ぐ。致命的なバグ発覚。砂嵐を松下系 MPEG チップ(MVR-D2000/MTV-1000/MTV-2000 等)でエンコードしたファイルが入力されると MPEG-2 VIDEO VFAPI Plug-In が落ちる。
ちゅうかエンコーダが破綻してるのではないかと思うのだけど、どんなに腐ったストリームを入れられても、絵が出るところまでは保証できなくても、少なくとも落ちることだけはないようにしようという方針で作ってるので、致命的。
三連休の間は司馬遼太郎「歳月」(江藤新平転落記)を読んだ勢いでついつい「飛ぶが如く」まで再読開始してしまい D-VHS 直キャプチャ時の問題については作業が進まなかった。仕事も微妙に忙しいので週末まで延ばそうかと思ってたけど、こりゃやっとかなくちゃ仕方が無い。
最近 big@boss.com からの "Re: Here is that sample" ウィルスメールがうざい。つーか実にひねりの無い拡張子 PIF ウィルスなんで来てもちっとも楽しくなかったりするのだけど。これは流行ってるのだろうか。先週末から今日までで9通も届いてくれたのだけど。
vcdhelp.com からのリンクを検出してからそろそろ1ヶ月。順調に海外からのお客様も増え、referrer を辿ると独語・仏語などが主言語の BBS などに行き当たることも増えてきたのだけど、流石にタイ語は想像の外だった。
流石に1日当たり 500 件もの referrer をもたらしてくれるサイトの影響力は大きいなぁと感慨も深いのだけど。あまり喜んでばかりも居られなかったり。
「被告は、試験目的と称して特許物を頒布していたが、その利用者の大半は日本語で記載された利用条件等が読まれることを期待できない海外の人々であり、エラー発生時の報告などが行われていたか大いに疑問である。このような頒布方法は明らかに試験目的を逸脱するものであり……云々」
そこまで考えなければいけないのかと思うかもしれないけど、そこまで考えておくべきだと私は判断している。最悪の状況は想定しておくべきだから。
そーゆーわけで、せめて英語で disclaimer of warranties ぐらいさらさらと書けるようになっておきたかったなぁと今更ながら後悔している。いや、後悔してる暇があったら、例文なりなんなり探すべきなんだけど。
MPEG-2 VIDEO VFAPI Plug-In 関連。とりあえず、GL ファイル強制作成用のオプションは追加完了。ついでに、GL ファイルのフォーマットを変えて、シーケンスヘッダも保持するように改造。さらに「エラーで落ちる」と提供してもらったファイルも原因は判明して修正完了。
ただ、GOP List 作成中のダイアログがまだ完成してないので 0.6.18 の公開は明日以降になりそう。昨日寝てないせいで今晩は作業する体力が残っていそうにない。
MPEG-2 VIDEO VFAPI Plug-In 0.6.18 を公開しました。主な変更点は、GOP リストの作成をオプションで強制実行可能にしたのと、動きベクトルがフレーム外を参照しないようにチェックを強化したことなどです。
設定ツール(m2vconf.exe)に GOP リストというブロックが追加されていて「GOP タイムコードを使わない」「GL ファイルを保存しない」という二つのチェックボックスが追加されています。
「GOP タイムコードを使わない」にチェックを入れると、GOP タイムコードベースのシークを行わなくなり、常に全ファイルを解析した GOP リストを作成するようになります。これは、GOP タイムコードがファイルの先頭や最後では一応連続しているけれども、途中で不連続になっているファイル等で問題が発生する方々の為に用意したオプションです。
こういったファイルは Digital 放送を IEEE1394 経由で Digtal フォーマットのまま取り込んでいる場合に作成されることがあるようなのですが、こういったファイルでは GOP タイムコードが信用できるか、できないかをプラグイン側から判断する方法が思い浮かばなかったため、ユーザ側でオプションを設定することにより対処してもらうことにしました。またアナログキャプチャ環境の方でも、GOP 単位編集ソフトなどで編集した後の MPEG ファイルでは、GOP タイムコードが不連続になっている可能性が存在するため「GOP タイムコードを使わない」は常に ON にしていた方が安全になります。最初にファイルを開く際に多少時間がかかるようになりますが、そこを我慢できる方はチェックを付けるようにしてください。
「GL ファイルを保存しない」にチェックを入れた場合、GOP リストを作成した際にその結果を GL ファイルに保存しなくなります。常に固定パラメータでエンコードするだけなので、MPEG ファイルは1度しか開かないから GL ファイルを作成されても邪魔なだけだという方は、これにチェックを入れてください。
最初は UNIX 汎用とか聞いてたのに、この辺 向けにコンパイルしようとしたら STL 周辺で問題が発生したから何とかしてと言われても。つーか std::string と std::list ぐらい使わせてくれい。
DirectX VA の API を眺めて思いついた逆量子化処理の SIMD 化を試してみたところ、かえって遅くなってしまった。VLC デコード後に直接逆量子化するのではなく、パックした量子化係数と重みを配列化して MMX 命令で並列処理ともくろんだのだけど、まるで効果なし。効果がないどころか遅くなる始末。
DCT 係数が少ない低レートのファイルでは効果がないのかと考え 15Mbps のファイルで試してみてもやっぱり遅くなっている。1つのループを3つに分けたのがいけなかったのか、それともメモリに書き出す処理が重いのか。どっちらにしても作業が徒労に終わったことは間違いなく、やる気は減退する一方。
そんなこんなで今週は死に掛けてた。多分来週も似たようなものだろう。そういえば、仕事で出さなきゃいけないドキュメントの締め切りも来週末だったっけ。
日曜に libjpeg のソースを眺めること半日、AAN を半分程度理解できた。既に Intel のページから消えてた AP-528 も google さんに見つけてもらって SIMD 実装法も判明。
あらかじめ 8x8 ブロックの各係数に個別の係数を掛けておくことで、変換の際の乗算を 5 個に減らそうという趣旨な訳ね。量子化行列に手を入れて、逆量子化の際にプリスケールを済ませればそれなりに速くなるだろう(うまくやれば AP-922 よりも)けど、面倒が増えるしあまり使いたくないなというのが正直な感想。
プリスケール後の係数を 16 bit に収めようとすると精度が取れなくなってしまったので AP-528 ではどうやってるのか不思議だったのだけど、どうやら単純に係数側のビット数を増やすことで対処するらしい。そこまでやってもピーク誤差に 3 が出てしまって IEEE 1180 に適合しなくなってしまう。こういうのを見てると SIMD で PMULLD/PMULHD が欲しくなってくるんだが、さっぱり追加される気配がないし。
もう1月も終わりなのか。ついさっき年が変わったばかりのような気もするし、既に年が明けてから半年ぐらい過ぎてるような気もする。みんな忙しすぎるのがいけないんだ。
一応今月末までの仕事予定はこなしきった(少なくとも私の層では、その上の層については知らん)ので今日一日はまったり風味に行こうかと考えてる。
自宅に戻ってから PC に火を入れるのは久しぶりだけど、昨晩は MELTY BLOOD を実行しつつ、左手の親指が痛くなった時点で風呂に入って就寝。ぬるゲーマーの私には難易度を5まであげるとなかなか CMP に勝てなくて、しばらく楽しめそう。
さて、来月からは趣味のコードに手を入れる余裕(気力&時間)が確保できるのだろうか。逆量子化で試してみたい最適化も思いついてるのだけど、試す暇が無いのが悲しい。