У меня есть проект — Video capture Application со следующим графом:
WDM Capture Source -> ISampleGrabber -> NullRenderer
|
-> IVideoMixerRenderer9
Описание класса выглядит примерно так:
#include <dshow.h>
#include <D3d9.h>
#include <Vmr9.h>
#include <d3dx9tex.h>
#include <qedit.h>
class CDxVideoWindow9
{
public:
CDxVideoWindow9();
~CDxVideoWindow9();
public:
IVMRFilterConfig9* m_pVMRFilterConfig;
IVMRMixerBitmap9* m_pVMRMixerBitmap;
IVMRMixerControl9* m_pVMRMixerControl;
IVMRMonitorConfig9* m_pVMRMonitorConfig;
IVMRWindowlessControl9* m_pVMRWindowlessControl;
IBaseFilter* m_CapSource;
ISampleGrabber* m_pSG;
}
.......................
Получаю ошибку при компиляции:
c:\DXSDK9\Include\d3drmobj.h(274): error C2061: syntax error : identifier 'LPDIRECT3D'
c:\DXSDK9\Include\d3drmobj.h(299): error C2061: syntax error : identifier 'LPDIRECT3DDEVICE'
c:\DXSDK9\Include\d3drmobj.h(314): error C2061: syntax error : identifier 'LPDIRECT3D'
Без Qedit.h все компилируется, но в нем описание ISampleGrabber, который мне нужен.
В МSDN говорится , что QEdit.h несовместим со старыми версиями D3D, но у меня новая — DirectX SDK9.
C DirectX8 c обычным Video Renderer проект пашет уже 2 года, с Video Mixing Renderer 9 тоже все Ок,
но как только пытаюсь довавить описание ISampleGrabber, вперестает компилироваться.В новом SDK какая то несостыковка Direct Show и Direct3D.
В принципе, в этом же модуле я вставил описание ISampleGrabber, выдернутое из Qedit.h и все заработало,
но это как-то неэлегантно.
Как настроить проект, буду очень благодарен ?
Здравствуйте, B_A_D, Вы писали:
B_A>Получаю ошибку при компиляции:
B_A>c:\DXSDK9\Include\d3drmobj.h(274): error C2061: syntax error : identifier 'LPDIRECT3D'
B_A>c:\DXSDK9\Include\d3drmobj.h(299): error C2061: syntax error : identifier 'LPDIRECT3DDEVICE'
B_A>c:\DXSDK9\Include\d3drmobj.h(314): error C2061: syntax error : identifier 'LPDIRECT3D'
B_A>Без Qedit.h все компилируется, но в нем описание ISampleGrabber, который мне нужен.
B_A>В МSDN говорится , что QEdit.h несовместим со старыми версиями D3D, но у меня новая — DirectX SDK9.
Проблемма в том, что QEdit.h повязан с dxtrans.h, а тот жить не может без D3DRM.
В свою очередь, D3DRM это ошибка природы и официально не поддерживается Майкрософт.
За чем они ее прикрутитли к DirectXTramsform я не знаю.
Лечил я подобную проблему путем добавления
#define __D3DRM_H__
перед
#include <dxtrans.h>
и доопределением всех типов, которые DirectXTramsform использует для D3DRM.
Павел.