Проблема при компиляции DirectShow проекта
От: B_A_D Израиль  
Дата: 04.07.03 11:31
Оценка:
У меня есть проект — 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 и все заработало,
но это как-то неэлегантно.

Как настроить проект, буду очень благодарен ?
Re: Проблема при компиляции DirectShow проекта
От: Блудов Павел Россия  
Дата: 05.07.03 05:55
Оценка: 4 (2)
Здравствуйте, 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.

Павел.
Re[2]: Проблема при компиляции DirectShow проекта
От: B_A_D Израиль  
Дата: 06.07.03 13:31
Оценка:
Спасибо , все помогло.
Re[3]: Проблема при компиляции DirectShow проекта
От: Andrew_pb Россия  
Дата: 09.07.03 07:06
Оценка:
Здравствуйте, B_A_D, Вы писали:

B_A>Спасибо , все помогло.


Дело в том, что у меня аналогичные трудности. Можно поподробнее (а то я — новичок), как вы решили данную проблему, какие типы доопределять и т.д.
заранее благодарен
Re[4]: Проблема при компиляции DirectShow проекта
От: B_A_D Израиль  
Дата: 10.07.03 11:23
Оценка:
Здравствуйте, Andrew_pb, Вы писали:

A_>Здравствуйте, B_A_D, Вы писали:


B_A>>Спасибо , все помогло.


A_>Дело в том, что у меня аналогичные трудности. Можно поподробнее (а то я — новичок), как вы решили данную проблему, какие типы доопределять и т.д.

A_>заранее благодарен


Неа, у меня чуть чуть другие — я дополнительно использую Video Mixer Renderer 9, который в свою очередь требует
D3D9, а у тебя все по-проще — я написал ответ в одной из твоих веток.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.