HDTVtoMPEG2の改変

(2011.11.07追記:HDTVtoMPEG2の改竄を参照)

症状

特定の番組で切り出しができないことがある。

原因

TSパケットサイズ188バイトを超えるセクション長が現れたときに不正アクセスする。

対策

VC2010評価版でソースコードを改変します。ついでに、日本語が表示されるようにします*1

VC2010評価版コンパイルエラー

ProgressDialog.cpp 94〜100行をコメントアウトする。

 94// Note: we add support for IID_IProgressDialog to support typesafe binding
 95//  from VBA.  This IID must match the GUID that is attached to the 
 96//  dispinterface in the .ODL file.
 9798// {269D387C-75C8-40D4-B253-8D505A36FF8B}
 99//static const IID IID_IProgressDialog =
100//{ 0x269d387c, 0x75c8, 0x40d4, { 0xb2, 0x53, 0x8d, 0x50, 0x5a, 0x36, 0xff, 0x8b } };

文字化け防止

リソースエディタで、IDD_HDTVTOMPEG2_DIALOGの[フォント][Use System Font]を"True"に変更。

不正アクセス防止

mpeg2stuff.cppの9867行のbuf2[188]をbuf2[1024]に変更する。

9867: unsigned char buf2[1024]; // temp buff for holding the "stream_type" data

補足

文字化け防止の変更は正当なものと判断できますが、不正アクセス防止の変更は本質的なものではありません。あくまでも対症療法です。いつかちゃんと直す?無理かな?無理っぽいな・・・

ついでに、Release、DLL版でビルドすれば、exeのサイズが300KBになります*2

  • オリジナル:Process中に異常終了。また出力ファイル名が文字化け

  • 変更版:正常に処理される。また出力ファイル名の文字化けが修正されている*3

(7/14追記)
・・・だけど、まだフリーズする番組があるんだな、これが・・・
HDTVtoMPEG2(改).exe バイナリ ダウンロード

*1:日本語化パッチと違って、出力ファイル名の文字化けを修正するだけ

*2:元は900KB

*3:日本語化パッチと異なり、ボタン名などは英字のまま