了解しました。正常に機能しているように見えるカスタムVMR9アロケータ/プレゼンターを作成しました。ただし、ビデオフレームをアロケータ/プレゼンターサーフェスからアプリケーションサーフェスにコピーしようとすると、ビデオがちらつくように見えます。オーディオの再生は問題ないので、マシンがダウンしているなどの問題ではないと確信しています。これは、レンダリングループにあるコードです。
g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255, 0, 0, 0), 1.0f, 0);
// render the scene
if (SUCCEEDED(g_pd3dDevice->BeginScene()))
{
//g_pd3dDevice->SetRenderTarget(0, g_pd3dSurface);
g_pd3dDevice->StretchRect(vmr9_ap->renderSurface, src, g_pd3dSurface, dest, D3DTEXF_NONE);
// end the scene
g_pd3dDevice->EndScene();
}
ただし、これに変更すると(バッファのクリアをコメントアウト)
// g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255, 0, 0, 0), 1.0f, 0);
// render the scene
if (SUCCEEDED(g_pd3dDevice->BeginScene()))
{
//g_pd3dDevice->SetRenderTarget(0, g_pd3dSurface);
g_pd3dDevice->StretchRect(vmr9_ap->renderSurface, src, g_pd3dSurface, dest, D3DTEXF_NONE);
// end the scene
g_pd3dDevice->EndScene();
}
このちらつきは消えます。これはどういうわけか悪い形/ハックであり、それが解決するよりも多くの問題を引き起こす可能性があるのではないかと心配しています。この分野での経験はありますか?より良い解決策はありますか?
ありがとう!