HDTVtoMPEG2 改竄

HDTVtoMPEG2の改変は、VisualStudio2010評価版で行いましたが、この度はVisualStudio2008評価版で行いました。VS2008のソリューションごと梱包しました。
PiratedHDTVtoMPEG2.zip

(11/11追記:解像度を上げてみたものもあります=>海賊版2・・・画質は下がりましたけど・・・orz)

改竄内容

  • セクション長が188バイトを超えた場合の不正アクセスする問題をとりあえず回避する。
    • 「188バイトを超えるセクション長が現れて不正アクセスする」というのは、仕様の解釈を誤っているためではなかろうか?という疑問を解消しないまま、とにかく、異常終了を回避させました。ファイルが壊れることになるかも知れないけど、僕には全然わからない。
  • プレビューが240×135ピクセルだと、眼精疲労が激しいので、480×270ピクセルに拡張する。
    • プレビューは大きくなっただけで、解像度は240×135ピクセルのままだから、画が粗い。恐らく高速化のために1/8でデコードしているような感じだと思いますが、どうやっているのか、今の僕にはさっぱり判らない*1

(11/9追記:小さくてもくっきりしているオリジナルの方が目に優しいという事実に気づく・・・)

改竄箇所

全部PiratedHDTVtoMPEG2.zipに梱包したので、改めてここで書かなくてもいいのですが、一応。

  • ProgressDialog.cpp
149 m_BMIH.biWidth = 240 480; // oh look, a hard coded size
150 m_BMIH.biHeight = 135 270; // 240x135 = 1920x1080 / 8 (1 pixel per block)
352 int height = 135 270; //m_previewRect.Height();
  • HDTVtoMPEG2Dlg.cpp
487 m_BMIH.biWidth = 240 480; // oh look, a hard coded size
488 m_BMIH.biHeight = 135 270; // 240x135 = 1920x1080 / 8 (1 pixel per block)
985 int height = 135 270; //m_previewRect.Height();
  • mpeg2stuff.cpp
9867 unsigned char buf2[188 2048]; // temp buff for holding the "stream_type" data

あと、リソースエディタでダイアログを改竄。

*1:11/9追記:デバッガで見たところ、IDCTの輝度(Y)のブロックが8x8ピクセル分同じですね。これは正常なのだろうか?さっぱりわからない。