はじめまして
現在、DX8のDirectShowを使用してDVDを再生するプログラムを作成しているんですが
どうもグラフィックカードの設定環境によって上手く動作しないようで困っています。
プログラムを実行するPCをグラフィックカードの設定でDualViewに設定しているのですが
Primary画面(1個目のディスプレイ)の方では正しく動作するものの
Secondary画面(2個目にディスプレイ)ではDVDの再生が上手く動作しません。
(症状として画面の描画が行われない)
DirectGraphicsでも同じような症状(2個目のディスプレイで正しく動作しない)は
起きるのですがこちらはディスプレイごとにCreateDeviceする事で問題は解決できました。
DirectShowの場合もSecondary画面で正しく動作させるには
ディスプレイごとに何か設定など必要だったりするのでしょうか?
もし分かる方がいらっしゃればご教授よろしく御願いします。
DVD再生部分のソースはほんとに単純で基本的なものしか組んでいません。
void CAbsxView::ShowDvd() //DVD再生関数
{
IDvdGraphBuilder *pDvdGraphBuilder;
IGraphBuilder *pGraphBuilder;
IMediaControl *pMediaControl;
CoInitialize(NULL);
CoCreateInstance(CLSID_DvdGraphBuilder,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDvdGraphBuilder,
(LPVOID *)&pDvdGraphBuilder);
AM_DVD_RENDERSTATUS stat;
pDvdGraphBuilder->RenderDvdVideoVolume(NULL, AM_DVD_HWDEC_PREFER, &stat);
pDvdGraphBuilder->GetFiltergraph(&pGraphBuilder);
pGraphBuilder->QueryInterface(IID_IMediaControl, (LPVOID *)&pMediaControl);
g_pSeek->GetAvailable(&g_Current,&g_Stop);
pMediaControl->Run();
MessageBox(再生中, dvd test, MB_OK);
pMediaControl->Stop();
pMediaControl->Release();
pGraphBuilder->Release();
pDvdGraphBuilder->Release();
CoUninitialize();
}
開発環境はWin2k VC6.0 DX8
グラフィックカードはnVIDIA GFroceFX5700を使用しています。
Secondary画面に描画用Windowを作成して、それをIVideoWindow::put_Owner()で
親Windowに指定してみる、とか。