読者です 読者をやめる 読者になる 読者になる

Pandora Pocket

MS系の備忘録と日記。三日坊主。

Windows 8でもMicrosoft DTV-DVD Video decoderは使える

Windows 8になってから標準でデコーダーが搭載されなくなりました。

 

MediaPackを購入(期間限定で無料配布していますが)すればいいわけですが、たとえMedia PackをインストールしてもTVTestでMicrosoft DTV-DVD Video decoderを利用することができませんでした。

ええいMSめ、MediaCenterだけしか使えなくしたのか馬鹿野郎!!!と思っていたんですがどうやらTVTestの問題だったようで・・・。

 

 

 

 

2ちゃんねるのTVTestスレッドによれば

836 名前:名無しさん@編集中[sage] 投稿日:2012/11/04(日) 00:32:10.71 ID:974JLHGF [1/4]

>>834

見てはいけないものを見てしまいましたね…

 

まるもスプリッター弄ってるうちに気づいたのだが

Win8でMediaCenterのDTV-DVD使えないのは単にTVTestのメディアタイプ設定バグみたい↓

--- BonTsEngine/MediaViewer.cpp.orig

+++ BonTsEngine/MediaViewer.cpp

@@ -40,6 +40,7 @@

// ビデオヘッダ設定

VIDEOINFOHEADER2 &VideoHeader = pVideoInfo->hdr;

//::SetRect(&VideoHeader.rcSource, 0, 0, Width, Height);

+ VideoHeader.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);

VideoHeader.bmiHeader.biWidth = Width;

VideoHeader.bmiHeader.biHeight = Height;

要全角スペース置換。既出かしらんがビルドのついでにパッチしとくと吉。

 

あとWin8+VS2010Expressでビルド中によく「mt.exe はコード 31 を伴って終了」しちゃうから

そういう時は一時的にWindows Defenderのリアルタイム保護切ったらいける(糞環境乙かも)

とのこと。ソースに一行追加すれば動くようになります。

 

以下備忘録

 

私はTSファイル再生にTvtPlayを利用していますがオリジナルTVTestはTvtPlayを利用すると起動時に少しの間フリーズする問題が生じていました。この問題はTvtPlayについて語るスレでTvtPlayの作者さんが解決策を掲示してくださっています。

17 名前:名無しさん@編集中[sage] 投稿日:2012/09/26(水) 20:35:10.50 id:nAM5OwYU [2/3]

affinity関連のレス読んでて、起動時フリーズ問題はクリティカルセクション関連が原因かと思って

コード色々読み返してみたら、やっぱAacDecFilter.cppが怪しいかなという感じになった。

とりあえず↓でこちらでは全く発生しなくなった。

ttp://www1.axfc.net/uploader/Sc/so/381174

こういう問題は凄く環境依存だと思うので的外してるかも。暇なときに試してみてほしいです。

 

まとめると倍速再生時のドロップ部分でのデッドロックや起動時フリーズに対しては

いまのところ上の改変TVTestが最善、設定キーRaiseMainThreadPriority=1が次善という今のところの結論

今回はこちらもfixしたTVTestをコンパイルすることにしました。

 

用意するものは

TVTest 0.80ソースコード

フリーズ問題解決ファイル

Visual Studio

Windows SDK for Windows 7

faad2

tvcas_attachment_20120915.7z

今回はWindows 8Visual Studio 2012 Ultimateでコンパイルしています。

基本的にReadme_asc.txtに載っているビルド方法と一緒です。先にlibfaad2libとbaseclassesをビルドしておき、フリーズ問題解決のファイルはTVTestのソースに上書きしておいてからVSを起動します。ファイルが古いと怒られるのでそのまま変換ウィザードにお任せします。プロパティで

構成プロパティ⇒リンカー⇒入力⇒特定の既定のライブラリの無視

へLIBCMT.libと入力しておけばあとはビルド方法に書かれたことを行うだけ。ちゃんとビルドされました。