Hallo zusammen!
Ich bin seit einiger Zeit auf der Suche nach einer Möglichkeit eine DVD auf einer Textur abzuspielen. Im Internet bin ich dabei mehrmals auf folgenden Code gestoßen zum Abspielen in einem Fenster. Wollte dann erstmal das ausprobieren, bevor ich sowas besonderen mache:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
CoCreateInstance(CLSID_DvdGraphBuilder,NULL,CLSCTX_INPROC_SERVER,IID_IDvdGraphBuilder,(void**)&m_pDVDGraph);
AM_DVD_RENDERSTATUS sRenderStatus;
m_pDVDGraph->RenderDvdVideoVolume(L"E:\\VIDEO_TS\\VTS_05_0.IFO",0,&sRenderStatus);
m_pDVDGraph->GetFiltergraph(&m_pGraph);
m_pDVDGraph->GetDvdInterface(IID_IDvdControl2,(void**)&m_pDVDCtrl);
m_pDVDGraph->GetDvdInterface(IID_IDvdInfo2,(void**)&m_pDVDInfo);
m_pGraph->QueryInterface(IID_IMediaControl,(void**)&m_pCtrl);
|
Die Erstellung des Filtergraphen funktioniert auch, aber leider wird nicht weiter beschrieben, wie das ganze dann abgespielt wird. Wenn ich es mit IDvdControl2:
layChapter versuche, bekomme ich die Fehlermeldung VFW_E_DVD_INVALIDDOMAIN. Mit IMediaControl::Run wird der Film zwar kurz gestartet, aber nach ein paar Sekunden stürzt das Programm ab (Fenster ist weiß und reagiert nicht mehr). Der Returncode ist S_FALSE.
Mit dem Debuger komme ich nicht weit - nach Initalisierung der DVD-Interfaces erscheint ein Fenster "Please turn off system debugger and run again".
Kennt jemand von euch ein guten Tutorial zu dem Thema oder weiß vielleicht selbst, wie man eine DVD per DirectShow abspielen - und eventuell auch in eine Textur bekommen - kann?
Angeblich gibt es auch ein DirectShow-Beispiel im SDK dazu. Aber das kann ich weder im Sample-Browser noch per manueller Suche finden.