Fehler beim einbinden von directshow
-
Hallo zusammen!
Ich möchte gerne Frames eines mpg-Videos (MPEG 1/2, mpgv) einzeln einlesen und die Pixel erarbeiten.
Dafür benutze ich die aktuelle Version des Borland/embarcadero C++-Builders.Nachdem ich viel recherchiert habe, macht man das wohl üblicherweise mit directShow.
Zur Benutzung habe ich dieses Programm gefunden:
http://www.codeproject.com/Articles/1353/Extracting-bitmaps-from-movies-using-DirectShowAllerdings gab es bereits beim einbinden der 3 include-Dateien Fehler:
#include <atlbase.h> // For atl smart pointers #include "dShow.h" // DirectShow header #include "Qedit.h" // SampleGrabber filter
Wenn ich das richtig verstanden habe, werden die atlbase-pointer so nicht mehr benutzt und sind mit was anderem zu ersetzen.
Für dShow.h habe ich mir erstmal das directx-sdk heruntergeladen und installiert... Allerdings gab es in der irgendwie damit verbundenen dxtrans.h und d3dmobj.h den include d3d.h, welchen ich mit d3d10.h ersetzt habe, da die irgendwann Versionsnummern an den Dateinamen geschrieben haben.
Nur gibt es weiterhin Fehler:
d3d bis 11 ergibt einen E2293-Fehler in der d3dmobj.h, der wohl darauf zurückgeht, dass LPDIRECT3D nicht mehr definiert wird.
ab d3d11.h gibt es hingegen in der d3d11.h einen Fehler:[BCC32 Fehler] d3d11.h(930): E2500 __declspec(selectany) ist nur für initialisierte und extern sichtbare Variablen
Vollständiger Parser-Kontext
testrauschen.cpp(13): #include c:\programme\embarcadero\rad studio\9.0\include\windows\sdk\Qedit.h
Qedit.h(499): #include c:\programme\embarcadero\rad studio\9.0\include\windows\sdk\dxtrans.h
dxtrans.h(279): #include c:\programme\embarcadero\rad studio\9.0\include\windows\sdk\d3drm.h
d3drm.h(21): #include c:\programme\embarcadero\rad studio\9.0\include\windows\sdk\d3drmobj.h
d3drmobj.h(17): #include C:\Programme\Microsoft DirectX SDK (June 2010)\Include\d3d11.hLeider habe ich damit nicht so viel Erfahrung...
Gibt es vielleicht aktuellere Beispiele, directshow zu benutzen, oder ist das der ganz falsche Ansatz?^^
-
Falsches Forum, 'n Mod verschiebt dich gleich
-
Das Februar-Release 2005 (!) war das letzte, das dshow beinnhaltete (http://msdn.microsoft.com/en-us/library/windows/desktop/dd375454(v=vs.85).aspx).
Einfach das aktuelle Windows-SDK runterladen, Pfade entsprechend setzen und <dshow.h> einbinden.
<atlbase.h> wird auch nicht benötigt, da die Expressversionen von MSVS weder ATL noch MFC unterstützen.
-
@Hacker: mmh, danke für den Hinweis... welches wäre denn richtiger gewesen? ist das nicht ein allgemeines c++-Problem?
@mapper:
Vielen dank für die Infomation und den Link!
Ich habe jetzt das windows sdk installiert, erhalte jetzt aber den Fehler in der winnt.h:[BCC32 Fehler] winnt.h(366): E2257 , erwartet Vollständiger Parser-Kontext Project1.cpp(3): #include c:\programme\embarcadero\rad studio\9.0\include\windows\vcl\vcl.h vcl.h(10): #include c:\programme\embarcadero\rad studio\9.0\include\windows\vcl\basepch0.h basepch0.h(62): #include c:\programme\embarcadero\rad studio\9.0\include\windows\rtl\System.hpp System.hpp(18): #include c:\programme\embarcadero\rad studio\9.0\include\windows\rtl\DE\sysmac.h sysmac.h(103): #include C:\Programme\Microsoft SDKs\Windows\v7.0A\Include\windows.h windows.h(155): #include C:\Programme\Microsoft SDKs\Windows\v7.0A\Include\windef.h windef.h(177): #include C:\Programme\Microsoft SDKs\Windows\v7.0A\Include\winnt.h
mmh... Borland unterstützt atl dann auch nicht? (MSVS=Microsoft visual studio?)
Kann ich dann z.B. normale pointer benutzen?