Windows Media Playerの中央がセカンダリモニタにドラッグされた(または開始された)とき、私のDXVA2デコーダは "空白"です。ビデオは、プライマリに戻ったときに再び表示されます。 D3DPRESENTFLAG_DEVICECLIPは設定されていません。DXVA2デコーダ複数のモニタディスプレイを持つWindows Media PlayerのMFT
ハンドリングを必要としないでこれが動作する方法を見つけるのが好きですが、DXVA2_E_NEW_VIDEO_DEVICEを返すIDirect3DDeviceManager9 :: TestDevice()でこの問題の通知を受けます。使用して(だから私は新しいDXデバイスを作成しようとしました
ReleaseBuffers(); // free surfaces
SAFE_RELEASE(m_decoderService);
hr = m_pDXManager->CloseDeviceHandle(m_hDevice);
hr = m_pDXManager->OpenDeviceHandle(&m_hDevice);
hr = m_pDXManager->LockDevice(m_hDevice, &pDev, true);
hr = pDev->Reset(d3DPP); // FAILS 0x8876086c !!!!
:(MSDNがすべてのことが必須であることを示しているが)
IDirect3DDeviceManager9 :: CloseDeviceHandle/OpenDeviceHandleので、私のリセットハンドラは次のようにGOEそれをカットしていませんデスクトップをhwndとして)
m_pDXManager->ResetDevice(new_device, token);
ただし、IDirect3DDevice9 :: Reset()ではまだ喜んでいません。
私はまた、DXVA2CreateDirect3DDeviceManager9を使用して新しいIDirect3DDeviceManager9を作成しようとしましたが、役に立たないです。
ところで、私はIDirect3DDevice9を使用::リセット()私の初期化中に何の問題もなく、と後で同じD3DPRESENT_PARAMETERSを使用するので、これらが問題だと思うが、ここで彼らは(ポストコール)
d3DPP[n].BackBufferWidth = 1920;
d3DPP[n].BackBufferHeight = 1080;
d3DPP[n].BackBufferCount = 1;
d3DPP[n].BackBufferFormat = D3DFMT_X8R8G8B8;
d3DPP[n].SwapEffect = D3DSWAPEFFECT_DISCARD;
d3DPP[n].hDeviceWindow = NULL;
d3DPP[n].Windowed = true;
d3DPP[n].Flags = D3DPRESENTFLAG_VIDEO;
d3DPP[n].FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3DPP[n].PresentationInterval = D3DPRESENT_INTERVAL_ONE;
欠落しているいけませんゼロです。
私はwin8とwin10で同じ問題があります。
助けてください/ポインタがありがとうございます。