※2024/07/27追記 OS・ソフトの更新等による状況の変化や当方のミス・知識不足により、このページの内容にはかなり誤りがあります。
こちらのページで内容を修正して公開しているため、以下の情報は参考にしないようお願い致します。
※2023/10/28追記 排他無効時でAFMFが動作するのはHDR動作の場合のみだったため、関連部分を修正。
まえがき
前回までのあらすじ。
レトロPCゲームにAMD Fluid Motion Frames(以下AFMF)とWindows Auto HDR(以下オートHDR)を使うという、およそレトロゲーに適しているとは思えない謎環境が出来上がった。
以上。
ところでこちらの話は皆さんご存じでしょうか?
要約すると、MPC-HCにDXVKを導入してVulkanで動かし、AFMFがつかえたという話です。
前回までの記事をご覧頂いた方ならば、もう何をしようとしているかお分かりのことと思います。
そうです。
SDRの動画にオートHDRを適用し、尚且つAFMFを使用します。あとついでにYoutube HDR動画にもAFMF使えるようにします。今回の記事こそが本命です。
注意
第三者のツールによるWinodwsのレジストリ編集を行います。 操作を誤ってOSの動作がおかしくなっても私は一切の責任を負いませんので、実行する場合はリスクを把握したうえで行ってください。
いやSVPか旧Fluid Motionで良くない?
それを言っちゃあ…
AFMFは元FPSの2倍が上限なので、今や30fpsを100越えで出力が可能なSVPや旧Fluid Motionと比較されるとそこで試合終了してしまいます。
でも旧Fluid Motion環境を誰でも保持しているわけではありません。SVPはi7-12700でもフルHDすら大分CPUを食うので、倍表示でいいならAFMFのほうが大人しいです。60fpsの動画だと処理落ちで120から乱高下するが、仕様的にしゃーない。
とにかく、現代のRadeonハードでも利用可能な方法を模索したのが今回の記事になります。
必要なもの
記事作成当初想定していた手順の大多数が不要であることが分かったので、かなり淡白な説明となります。ご了承ください
最終的にYoutubeのHDR動画でフレーム生成することが目的なので、以下を用意してください。
- MPC-BE 今回は64bit版で説明
- MPC Video Renderer MPC-BEのインストーラーから導入する場合は不要
- Choum28/AutoHDR 前回記事で導入は終わっているものとします
今回ラッパーは使いません。
導入方法
とりあえずMPC-BE、MPC Video Rendererをインストールし、MPC-BEのexeファイルをAdrenalinに登録します。
MPC-BEを強制オートHDRの対象にする
以下の画像を参考に設定して下さい。
この時BufferUpgradeEnable10bitは絶対にチェックせずに登録してください。
HDRの動画再生時に支障が出る場合があります。
仕様の都合により、10bitのSDR動画に関してはまったく考慮しないものとします。(見たことないけど)
MPC-BEの設定をする
MPC-BEを起動し、ビデオレンダラーをMPC Video Rendererに設定したらプロパティを開き、少なくとも以下の画像の赤枠で囲ってある部分だけは必ず同じ設定にします。
映像のbit数は自動検出、ハードウェアデインタレースを無効にし、オートディプレイHDRを無効にしてHDRをパススルーすれば、SDR動画にオートHDRをかけた動画も、通常のHDR動画も正常に出力できるはずです。
YoutubeのHDR動画にAFMFを使う方法はこの手しか知りません。
HDRのスクリーンショットをそのまま表示する手段を知らないため、結果はご自身の目で確かめてみて下さい。
どうにもなってないもの
書いておいたほうがよさそうなことが幾つかあるので、纏めて書きます。
-
デインタレースは?
MPCVRのハードウェアデインタレースは使用できません。AFMFが無効化されます。どうしてもデインタレースを使用したい場合は、動画のデコーダーにLAV Video Decoderを使用するようにして、そちらのソフトウェアデインタレースを使用するくらいしかないのが現状です。
-
排他スクリーンにしないとシークバー表示のたびにAFMFが切れる
それはその通りなのですが、それでも排他スクリーンはお勧めしません。超高頻度でソフト落ちるようになります。
-
MadVRじゃダメなの?
駄目でした… DX9モードならば設定によっては動画のフレームレートで再生ソフトの動作が可能なのですが、DX11モードだと必ず動画のフレームレートが無視されます。 これはDX11モード実装当初からずっとそうらしく、何とかならないかとかなり粘って策を弄しましたが、大人しく諦めたほうが身のためであると結論付けました。DX9じゃSDR動画しか再生できないんで…
ちなみにSDRの動画にオートHDR掛けてAFMF使うだけならば可能でした。
-
排他フルスクなしだとAFMF効かないんだけど?
効くようになるまでグラフィックドライバ再起動するかPC再起動するかして頑張って直してください。 グラフィックドライバ再起動は例のごとくWin+Shift+Ctrl+Bでどうぞ。もしくは一番お勧めできない方法ですが排他フルスクリーン有効化で何とかしてください。 前回の記事で触れた強制DX12起動という手もあるんですが、AV1が再生できなかったのでお勧めしません。
-
HDR非対応環境なんだけどこの通りやってもAFMFが使えない
HDR動作時にしか使えません。 非HDR環境でMPCVRを使用して動画にAFMFを適用するには、MPCVRの
Use DirectX11チェックを外し、DXVKでVulkanとして起動し再生する必要があります。 基本的にMPC-BEを使い非HDR環境で動画にAFMFを適用するには、レンダラーをDirectX9として起動するようにし、DX9ラッパーを利用する必要があります。(MadVRの場合DX9 + dgVoodooでAFMF適用可)
あとPC再起動したらたまにオートHDR効かなくなるけど、頑張って直してください。(PCがHDRのまま再起動すると発生?)
あとがき
問題が起こらなければこれで無事MPC-BEでAFMFとオートHDRが使えると思うんですが、
本当にやりたかったのはこれじゃないんですよ…
本当はfoo_youtube入れたfoobar2000でMadVR使って、AFMFでYoutubeのSDRとHDRどっちも見るのが目的だったんです。 でも肝心のAFMFが上で書いた通りどうにもならないんです。165hzのモニターで165fpsで表示されてるものを2倍のフレームレートで表示しても、生成遅延が発生する以外に何の効果もないんです…
なんでfoobar2000かって言うと、動画の音声をvstエフェクトで弄るのにこれが一番楽だったからです。 MPC-BEでも然るべき方法取って実現はできましたが大分回りくどいのと、MPC-BEは普段音声ファイルの素の音聞くのに使っていたので、どうしてもfoobarが良かったんです。
でもどうあがいても無理だったので実質敗北なんです…
…まあ、こんなレアケースに苦しむオッサンは私一人でしょう。
こういうことも出来ますよということで、今度こそこの話を締めたいと思います。
計3回でお送りしたこの突発企画、どなたかの参考になれば幸いです。
それでは…


