日々の戯言


バックナンバー

1997年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
1998年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
1999年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2000年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2001年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2002年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2003年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2004年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2005年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2006年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2007年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2008年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2009年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2010年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2011年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2012年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2013年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2014年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2015年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2016年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2017年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2018年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2019年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2020年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2021年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2022年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
バックナンバー内のリンクは無保証です

2月5日(火) 移り気

今回の m2v.vfp の更新はバグ修正のみ。TS 対応は今のところさっぱり進んでいない。一応サンプルとか資料はあるけど、週末は遊びほうけていたもので。

最近 MPEG-1 とかもコマ送りして表示したいかなという欲求が出てきたのだけど、やっぱりそれは TS の表示に対応できてから考えることにしよう。

一応今日は恒例のアレがあるので、多少は作業が進む予定。通常より 20 分ほど余計に時間があるらしいし。


2月8日(金) 面倒

あー作業が進まない。中途半端に処理速度とか汎用性とかを気にしてしまうのがいけないのだと判っているのだけど、どうしても考えてしまう。今週はちまちまとコードを書いては消し、書いては消しを繰り返していたので未だに TS の DEMUX ルーチンすら完成していない。

そのうちこんなことをしていたら時間がどんなにあっても足りないからとりあえず突っ走ってしまえ〜と汚いコードを書きはじめるのがいつものパターンだったり。いい加減このループから抜け出したい。

現時点でどこまで進んでいるかというと、TS の PID をどうやって決定するかで煮詰まっているところ。VIDEO ES を持ったプログラムの ID を一つ決定するのが目的なんだけど、アクセスユニット一つでは決定できないし、PES パケットを再構成してからとか考えてもプログラムはごちゃ混ぜになってるだろうから、一つずつチェックする場合にはいちいち戻らなきゃいけないし。

さらに嫌なのはそこまでして複数のプログラムがある場合に対応したとしても、結局1つの映像ストリームしか扱えないから、たいていの場合は TS の先頭にあるアクセスユニットの PID を使う場合と全く変わらないってところ。結局映像ストリームをもつプログラムを別に抽出しておく手間が必要なのは変わらない。

なら楽なほうで作れば良いのだろうけど、MPEG-2 VIDEO と音声(LPCM)が別プログラムになってる場合とかにも分離してやらなければいけないのが気に食わないので、ぐるぐるぐると考えだけがまわってまとまらない。ああ本当に嫌になる。


2月12日(火) 疲れているのかも

連休の間に動くところまでもっていくつもりだったのだけど、どうやらそれは無理だったようだ。まだ半分も出来上がっていない。

土曜日は寝倒して、日曜は気分がのらず、月曜はなんとか手を動かしたものの、今までの方針では無駄が多すぎることが判明してソースコード破棄。やってることに進歩が無い。できれば今度の廃棄を最後にして、今日中には DEMUX が動くように……なるといいな。

今までの分を破棄したとはいえそれなりの量のコードが書きあがってはいるのだけど、テストを済ませていないのでどの程度の進捗とかいうことは言えない。最初はこんなに苦労するとは思ってなかったんだけどな〜。毎度の事だけど見積もりが甘かった。


2月13日(水) 停滞

つい昨日から仕事の方が忙しくなってしまった。趣味のコードに掛ける時間がどんどんと削られていってしまう。半分自業自得のようなものなので誰にも文句は言えないのが悲しいところ。

せめて今作成中のあれを何とかしたいのだけど、そろそろ DEMUX が書き終わるかもといったレベルなので公開できるのはかなり先になってしまいそうな感触。まだ先頭のゴミを無視する所が残ってるんで。


2月14日(木) 世界は意外性に満ちていた

PES_packet_length - A 16-bit field specifying the number of bytes in the PES packet following the last byte of the field. A value of 0 indicates that the PES packet length is neither specified nor bounded and is allowed only in PES packets whose payload consists of bytes from a video elementary stream contained in Transport Stream packets.
ISO/IEC 13818-1 : 2000 (ITU-T H.222.0)

だそうで、一体だれがこんな例外規定(下線部)を作ったのだか。今まで PES packet の長さは 65536 以下だと思い込んでいたというのに、あっさり否定されてしまってどうしたらよいものやら。

ようやく動かせるレベルに到達した TS DEMUX のデバッグ中に気がつくのだから嫌になってしまうね。解決策は思いつくけど、コードの修正が膨大になりそうであれだ。


2月15日(金) MSN の referer

referer の解析結果で検索から飛んでくる場合と通常のリンクを見分けるのが面倒だったので、昨日実家に戻った際に新スクリプトに置き換えてきた。こういうときいちいち現場にいって作業しなければいけない windows 系はいやだな〜と思いつつ諸々の事情で未だに unix への置き換えを実行できてないとか、いっそ VNC を入れてしまうべきかなとか、いやいやそれではセキュリティがとか色々あるけれどもそれは本題ではなくて。

google や lycos の場合 utf-8 が使われていれば ie=utf-8 とか oe=utf8 とか入っているので簡単に見分けることが可能で、uconv/ruby に掛けて Shift_JIS (実際には CP932) に戻すことができるのだけど、MSN の検索からきた場合のキーワードのエンコーディングが判らない。ひょっとしたら cp=XXX がついてる場合だけ該当 CP で、それ以外は全部 UNICODE なのかとも思うのだけど、サンプルが少ないので確信が持てないでいる。

で、なんとなく昨日のアクセスの内訳。google からの検索(google.yahoo 含む)が 423 件でその他(通常リンク含む)が 526 件。圧倒的に google からのお客さんが多いんだけど、これは google ユーザが多いのかそれとも google しかこのページをインデクシングしてないのかが微妙なところ。ついでに一般リンクからだと AviUtl のページから飛んでくる方が 180 件前後でトップ。


2月20日(水) 実際のところ

某掲示板での話題を受けて、MPEG2 以下をちょこちょこと更新。TS 対応にケリがついたらとか書いてしまったけれど、実際のところ作業は完全に止まっていたりする。

ちと別方面でまったく関係ないことをやっていたりするので今週はシュガー待ちの間もあまり作業を進めることができなかった。来週もかなり少し忙しい予定なので、ますます作業が遅れそうな予感がしている。


2月21日(木) 洞察力が足りません

this->thread = _beginthreadex(); でスレッドを作成しておきつつ、スレッドの最後で delete this; とかしてて、しかもデストラクタ内部で WaitForSingleObject(this->thread, INFINITE); とかしてる罠。終わるわけ無いじゃん。

非常にほほえましいミスなので見つけた時には思わず笑い出してしまった。あー人に見つけられる前に自分で見つけることができて良かった。

とりあえず _beginthreadex() 時にスレッド ID も記録しておき、デストラクタでは スレッド ID と GetCurrentThreadId() を比較するして、一致してないときのみ WaitForSingleObject() するように修正。 非常に泥縄。


2月24日(日) 文字コードあれこれ

2/17 日に更新された doxygen-1.2.14 でウィンドウズ環境での日本語サポートにも問題が無くなった模様。ソースを Shift_JIS で書いといて OUTPUT_LANGUAGE=Japanese を指定するだけで問題なく日本語のドキュメントが作成可能。

これで、今までのように OUTPUT_LANGUAGE=English で、html_header で文字コードを直接指定という回避方法をとらなくても済むようになった。

前回の改造で google の検索キーはほぼ化けなくなってくれたのだけど、それでも一部化けるものがある。調べてみたところ、特に utf8 等が含まれていなくても utf でエンコードされている場合があるらしい。

QUERY_STRING は "hl=ja&q=m2v%E3%80%80%E3%83%84%E3%83%BC%E3%83%AB&lr=lang_ja" な感じで、検索キーを utf8 から Shift_JIS にすると「m2v ツール」となるのだが……。

さてどうやったらこれの文字コードを判別できるのだろう。化けてるのは一部なので、今のところは無視してしまってるのだが、気になって仕方がない。


2月26日(火) 転進

不具合報告がもう一件入ったので、MPEG-2 VIDEO VFAPI Plug-In を 0.5.8 に更新。変更点は closed_gop フラグへの対応と、壊れたストリームでもそれなりに誤魔化して表示するように修正。

TS 対応を諦めたという訳ではなく、あくまでも優先順位を変更しただけ。実質的には完全に作業はストップしてるけど、決して断念した訳ではないのだ。

W32/Klez というウィルスが生息しているらしい。多分 GNB さんの所と同じ人が感染してしまったのだと思うのだけど、私のところにも1通来ていた。

これだけなら無視しとけば済む話なのだけど、このウィルスは迷惑なことに From 欄と To 欄をアドレス帳から適当にシャッフルして新規メールを作成するらしく、From 欄が kazhiro@a2.ocv.ne.jp のウィルスメールが届いたという連絡が既に2件。その内1件は海外の方からだったりするので、慣れない英語で弁解のメールを書く必要まで発生してくれた。


2月27日(水) テスト不足

速攻でダメ出しされてしまったので、MPEG-2 VIDEO VFAPI Plug-In を 0.5.9 に更新。closed_gop 対応時に入れてしまったバグの修正がメイン。完全にテスト不足だったな〜。

一応報告してもらったバグは潰したつもりなのだけど、きっとまだ見落としてるバグはあるんだろう。えーと、なにか不明な動作をすることがあったら、連絡をお願いします。


2月28日(木) 信じてたのに

GOP 先頭の B ピクチャが前の GOP を参照しているのに、closed_gop フラグが付いてたら、一体どうすれば良いのだろう。

  1. closed_gop フラグなどという信用できないものは全て無視をする。ストリームの先頭の数フレームがデコードできないだけで、それ以外には一切問題が発生しない素晴らしい対処方法だ。
  2. closed_gop フラグを使用するかどうかユーザに設定させ(初期値では安全な無視側にしておく)もしも有効にした結果何か問題が発生したとしてもそれはユーザの責任にする。
  3. 通常は closed_gop フラグを読むが、エラーが発生した場合は自動で無視するように切り替える。
  4. ストリームに壊れたデータが書き込まれているのだから、その通りにデコードしてエラーを発生させるのが誠実なデコーダの行動だ。そもそもエラーを含んだストリームを出力する側が悪い。

ざっと思いつくのはこれくらいだけど、折角対応したのにまた 0.5.7 以前の処理にもどすのも面倒なので、最後の方法で我慢してもらう誘惑にかられている。この方法だと私は何もしなくて済むので。

なんでも、MediaWare Solutions の MyFlix XE でカット編集すると、出力後のストリームでは最後の GOP ヘッダの closed_gop フラグを強制 ON にしてくれるらしい。もちろんその GOP 先頭の B ピクチャは前の GOP の P ピクチャを参照したままで。浩さん報告&サンプル提供ありがとうございます。

そういう状況で書き換えられた GOP にシークすると、当然のことながら先頭の B ピクチャをデコードしようとして「不正な処理を……」で死んでしまう。これにどうやって対応しろというのだ〜〜。

M2-Edit Pro とかからの印象だと MediaWare Solutions ってもっと厳密な所だと考えていたのに、なんとなく裏切られたような気分。


1997年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
1998年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
1999年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2000年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2001年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2002年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2003年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2004年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2005年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2006年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2007年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2008年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2009年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2010年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2011年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2012年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2013年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2014年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2015年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2016年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2017年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2018年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2019年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2020年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2021年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2022年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
バックナンバー内のリンクは無保証です

[TOP]