!!!DVD Flick猫研版のTODO DVD Flick日本語版のTODOメモ。恐らく一生やらないものも含む。''スローガンは面倒''なのでなかなか手を付けない。 !!比較的やる気のするものorやらなきゃなぁと思う(優先度高)もの *メニューテンプレートのアップローダを猫研サイトに作成。 **やればすぐなんだけど手を付けるのが億劫。 **作りかけたが、運用上の懸念でストップ。 ***恐らく著作権を侵害したテンプレートが多数アップロードされてしまう。 ***侵害の事実の確認、削除の判断基準が難しい。 *メニューテンプレートのフォント・背景画像をオーバーライド可能にする。 **比較的簡単にできるとは思うけどフォントの検索とか面倒。 *高速化(解析部)のための調査。 **ffmpegのstdout/stderrのバッファリングをoffにすればいいはず。 **ffmpegはcygwinでビルドされているかと思ったらmingwの模様。 **msvcrtからのインポートテーブルにfprintf等がない。どうやらPRINTF_EXPONENT_DIGITSというのが関係していそうで、C99/POSIXのprintf系の書式指定子をmsvcrtがサポートしていないために、mingwrt側でCライブラリの一部を実装している模様。詳細は[mingw-runtime3.15のリリースノート(MLより)|http://old.nabble.com/New-Release:-mingw-runtime-3.15-td19364210.html]にある。 **調査結果(一部) ***msvcrtをProxyDLL方式でフックしてもRtlEnterCriticalSectionで落ちる。 ***どうやら[msvcrtのフックには何か問題がある|http://www.codeproject.com/KB/system/hooksys.aspx]模様。 ***前項の参照記事はInjectionに関するもののようだがProxy方式でも問題? ***msvcrtをフックするのではなくmsvcrtが呼び出すAPIをフックしろとあるが、バッファリングはmsvcrt内部で行っていると思われるので対処のしようがない。 ***VCに#pragma comment(linker, "/export:aaa=bbb")なんて指定方法があるらしい。が、VC6.0では上手く動かない? ***MinGWでもVCでもProxyDLLを作るべく頑張ったけど、これはちょっと無理かな…? *メニューのレンダリングの質改善。 **本来優先度は低い(本家で対応して欲しい)のだが多少調査してしまったため。 **基本的にはDELETESCANS(最近傍点法)をHALFTONEで処理するように持って行く。 **透過と混合色の問題でDELETESCANSが使用されている模様。 **背景と事前に合成する方法で透過を不使用にすればOKではないか? **ただし、spumuxとDVDの仕様がフルカラーを許容することが条件。 !!将来的には手を付けたい(優先度中)もの *自動?avisynth経由読み込み。 **諦め気味、後からの変更や保存を考えるとavsをユーザに認識させないのは難しい。 **別ツールとして実装は考慮。 **ffmpegのavs対応は直ではなくvfapi経由のようなのでavisynthは別途要インストになる。 *aften対応の拡充。 **aac/dtsの5.1chのみにMPEGオーダーでac3にはAC-3オーダーで自動適用とか。 **強制的に使用できないのも困る、というケースはあるか? **ffmpegにchannel_layoutとかできてるけど順序は制御できない? ***新しいffmpegではac3のエンコーダ側が正しく対応するようになってたりしないか? *開発のベースをsourceforgeとかに移動。 **なんかいじれる人が出てきたっぽいのでアリかも。 *ffmpegのオプション。 **幾つか納得の行かないオプションがあるので考慮する。 ***minrate/maxrateをどう設定しているか調査。 ***bufsize(VBV)が不正っぽいので調査。今更記載してあるところあるかな…。 **その他自由に追加できるようにする、とか。 *高速化(結合処理を省略) **stdinをファイルにappendするツール(teeみたいだけどちょっと違う)作成。 **ダブルバッファ+非同期I/Oで実装してみたい。上手く行かなければスレッド使用。 **これをすればunti-fragmentになるしffmpegを非同期I/O化できる。 **pipeとmemcpyのオーバーヘッドがどの程度のものかが懸念。 **cascadingExecuteの変更で既存を大きく変えず上手く対応できないか? !!やる気の薄い(優先度低)もの *インターレースの自動判定(MediaInfo使用) **ffmpegのswscalerはinterlaced resizeではないのであまり有用ではない。 *アスペクト比を確認するにはプレビューが小さすぎる。 **確かにそうだとは思うけどどうやって表示すべきか…。 *LPCM/AAC/mp2/dtsのストリームコピー。 **mplexではAAC以外は問題なさそう。("MPEG layer I/II/III, DTS, AC3 and LPCM") **delaycutも"ac3, dts, mpa and wav"と言っているがmpaがAACを含むかは謎。 **LPCMやdtsの結合(concat)に専用ソフトが必要かも。 **AAC/mp2はAC3と同様に単純にcatしてもOKと思うけど。 *手動チャプタ設定 **好きなところに打てる、ただしプレビュー(映像を確認しながら)はやるつもりない。 *MP4のチャプタを調べて対応できるならする。 !!やる気の薄さがオゾン層くらい(着手するかも微妙)のもの *日本語化をより洗練させる。 **フォントの一括設定とか→面倒 **リストボックスとかリソースもの→面倒 **ImgBurn方式なら楽だが制作側は大変だから本家はやってくれないだろう。 **原文をキーにハッシュ引く方法もあるが起動が重くなりそう。 *高速化(複数同時エンコード) **en-fragmentが懸念だが上記のtee改を使用すればある程度緩和可能。 **複数の動画を投入しないと意味ない。 **管理が難しい。cascadingExecuteがものすごく変わる。 *字幕関連 **mkvから自動抽出とかdvdsub対応とか、ただしできるか不明。 ***dvdsubは、[idx+sub]は取り込めないっぽいので[sub+bmp]に変換する必要がある? ***vsconv.exeはうまく動作しない場合がある模様。dvdsubはやはり除外か? ***ffmpegではdvdsubはタイプが表示されるが、それ以外は0x0000等となってしまう模様。 !!やらないことが決定してしまったもの *スレッド数のデフォルトをコア数x1.5にしてみる。 **C2Qでテストしてもらったけど意味無いみたい。 **どちらかというと根本的な改善としてffmpeg-mtに期待した方がいいんじゃないだろうか。 *読み込みにスレッド使用とか。 **そんな設定がない。あった気がしたけどx264(--thread-input)と勘違いした? !!完了 *音声のディレイ(遅延)を手動で設定できるようにする。 **1.3.0.7では-160ms固定になってしまっている。この値の根拠は不明。 **簡易的にユーザが変更できるようにした。 *音声のディレイ検出 **MediaInfoのCLI版を同梱。 **音声のディレイは解釈が色々あるようなので注意。 **ひとまず解釈は無視してストレートに実装。以降はbugfixということで。 *ffmpegのオプション。 **Bを指定可能(音声delayとclosed-gopは取り敢えず無視)に。 **本家で14になっているNTSCのGOP長を一般的な15に。