2013年6月13日木曜日

DVD の再生

とりあえず再生してみる

#include <dshow.h>

int main()
{
 IDvdGraphBuilder *m_pIDvdGB;
 IGraphBuilder *m_pGraph;
 IMediaControl *m_pIMC;

 CoInitialize(NULL);

 HRESULT hr;

 // DVD グラフ ビルダ オブジェクトのインスタンスを作成する。
 hr = CoCreateInstance(CLSID_DvdGraphBuilder,
  NULL,
  CLSCTX_INPROC_SERVER,
  IID_IDvdGraphBuilder,
  (LPVOID *)&m_pIDvdGB);

 // DVD フィルタ グラフを作成する。
 AM_DVD_RENDERSTATUS buildStatus;
 hr = m_pIDvdGB->RenderDvdVideoVolume(NULL, AM_DVD_HWDEC_PREFER, &buildStatus);

 // フィルタ グラフ マネージャへのポインタを取得する。
 hr = m_pIDvdGB->GetFiltergraph(&m_pGraph);

 // フィルタ グラフを全体として制御するため、
 // グラフ ポインタを使って IMediaControl へのポインタを取得する。
 hr = m_pGraph->QueryInterface(IID_IMediaControl, (LPVOID *)&m_pIMC);

 m_pIMC->Run();

 MessageBox(0, 0, 0, 0);

 m_pIMC->Stop();

 m_pIMC->Release();
 m_pGraph->Release();
 m_pIDvdGB->Release();

 CoUninitialize();

 return 0;
}

0 件のコメント:

コメントを投稿