HDTVtoMPEG2 海賊4
メンテナの方には内緒の方向で・・・
追記:スタティックライブラリ版P4の実行形式のみ作ってみました。(2012.10.27)
HDTVtoMPEG2-Pirated4 (H2MP4)
ファイル名に「ソ」を含む場合の不具合を修正しました。
vc2010のソリューションごと梱包。HDTVtoMPEG2-Pirated4.zip。Releaseフォルダにexeが入ってます。
おでこの「P4」が新版の目印です。修正が数箇所に渡るので、動作に問題があるやも知れません。旧版を維持してください。問題があれば、レポしていただけるとありがたいです。修正できそうならば挑戦します。
修正概要
3月6日 海賊3 に対する Shift-JISさんのコメント
ダメ文字に対応する予定とかありませんか? 「ソ」が頻繁に引っかかります >megtonさん TRIファイルはHDTVtoMPEG2.iniのTRIOutで指定すると任意の場所に保存できるようですよ TRIOut=D:\TS\temp\ のようにディレクトリの後ろに\記号を付けないと無視されます なお、右クリック→configureから設定すると\記号が付きません
Shift-JISさんのコメントに修正方法が的確に指摘されていますので、全文引用しました。
名前(Shift-JIS)もさることながら、ディレクトリの最後に「¥」を打つ、打たない問題が修正方法を端的に現しています。あとは、該当箇所を探して潰すだけでした。
「ソ」に含まれる「0x5C」は、「¥」(バックスラッシュ「\」)なので、フォルダの区切りとバッティングしてますが、H2Mでは、ファイル名を取り出すときに、strrchr(文字を後ろから探す)関数を使っていて、「ソ」の「0x5C」に誘惑されてしまったようです。そこで、shlwapi のPathFindFileName関数でリプレースしてみました。典型的には次のようにしました。
- オリジナル
char *p = strrchr(buf, '\\'); if (p) { p++; *p = '\0'; char *q = (char*)strrchr(name, '\\'); if (q) { q++; strcpy(p, q); } } else buf[0] = '\0';
- 修正後
PathAppend(buf,PathFindFileName(name));
.iniファイル内の「¥」問題は、PathAppend関数を使うことで、あってもなくても対処できるようになりました(はずです)。
累積修正箇所
「ソ」問題の修正(HDTVtoMPEG2Dlg.cpp)
- CHDTVtoMPEG2Dlg():.iniファイル名を実行モジュール名から取得生成
- ProcessCmdLine():
- .triファイル名を入力ファイル名から取得生成
- m_InputFiles(CListBox-CDragAndDropListBox)から、フォルダ名を取り出して、.iniファイルのPathInに記録しようとしています。しかし、m_InputFilesは、ファイル名しか保持していないようなので、無意味と判断し、該当部分ごっそり削除しました。
- CreateOutputFilename():PathOutの生成と、連番付加。
- OnDropFiles():.triファイル名の生成。
- CreateTSIFileName():.triファイル名の生成。
- ProcessTRIFile():.tri内のファイル名の拡張子判定。
- UpdateRegionsUI():TSファイル名の取得。
- ConvertCallback():ProcessDlgの表示用ファイル名の取得。
- OnOutputfileBrowse():出力ファイルフォルダの取得。
- SaveOutputFilePath():.iniファイルに記録するPathOutの生成。
CSliderCtrlのバグ回避(HDTVtoMPEG2Dlg.cpp)
- ConfigureRegionsUI()
- CSliderCtrlのバグ(?)回避。SetPos()で、値が変化しないとUIが更新されない問題を回避。
- 輝度調整(BrightnessSliderCtrl)で、値が「0」の場合、スライダが左に張り付いてしまう不具合。
- これに伴い、contrast、time(region marker)スライダも修正。
m_brightnessSlider.SetPos( -99 ); m_brightnessSlider.SetRange(-5, 5); m_brightnessSlider.SetPos( m_Brightness );
その他
- 不要なプロパティの削除(.vcproj、.vcxproj を手作業で編集)
- stream files の clear all ボタンに確認ダイアログを付加。
- CMスキャンで異常終了。解像度を変更した際に、不具合を与えていたようなので、これを修正。オリジナルのH2Mで確認したところ・・・CMカットされない・・・という同じ結果になったので修正ができたような、できないような・・・CMスキャンは元々うまく動かせていなかったので、何が正解かわかりません。