2013年6月14日金曜日

指定されたタイトルの指定された時間から再生を開始する。

IDvdControl2::PlayAtTimeInTitle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <dshow.h>
 
int main()
{
 IDvdGraphBuilder *m_pIDvdGB;
 IGraphBuilder *m_pGraph;
 IMediaControl *m_pIMC;
 IDvdInfo2 *m_pIDvdI2;
 IDvdControl2  *m_pIDvdC2;
 
 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);
 
 // DVD ナビゲータ インターフェイスへのポインタを取得する。
 hr = m_pIDvdGB->GetDvdInterface(IID_IDvdInfo2, reinterpret_cast<void**>(&m_pIDvdI2));
 hr = m_pIDvdGB->GetDvdInterface(IID_IDvdControl2, reinterpret_cast<void**>(&m_pIDvdC2));
 
 // フィルタ グラフ マネージャへのポインタを取得する。
 hr = m_pIDvdGB->GetFiltergraph(&m_pGraph);
 
 // フィルタ グラフを全体として制御するため、
 // グラフ ポインタを使って IMediaControl へのポインタを取得する。
 hr = m_pGraph->QueryInterface(IID_IMediaControl, (LPVOID *)&m_pIMC);
 
 hr = m_pIMC->Run();
 
 /* 指定されたタイトルの指定された時間から再生を開始する。ここから*/
 DVD_HMSF_TIMECODE time;
 time.bHours = 0;
 time.bMinutes = 0;
 time.bSeconds = 0;
 time.bFrames = 0;
 
 hr = m_pIDvdC2->PlayAtTimeInTitle(5, &time, DVD_CMD_FLAG_Block, NULL);//ok
 /* ここまで */
 
 MessageBox(0, 0, L"OK", 0);
 
 m_pIDvdI2->Release();
 m_pIDvdC2->Release();
 m_pIDvdGB->Release();
 
 CoUninitialize();
 
 return 0;
}




0 件のコメント:

コメントを投稿