k_otik
Messages postés15Date d'inscriptiondimanche 12 novembre 2000StatutMembreDernière intervention27 mars 2006
-
2 oct. 2005 à 01:22
k_otik
Messages postés15Date d'inscriptiondimanche 12 novembre 2000StatutMembreDernière intervention27 mars 2006
-
2 oct. 2005 à 16:34
Bonjour à tous,
Que ce soit une vidéo de format .avi ou autre, j'ai la nécessité actuellement de lancer une video au niveau de la présentation du jeu que je réalise actuellement avec le sdk de directx 9.0.
Or, impossible de compiler les headers de directShow il y a un problème que je n'arrive pas à résoudre ( je travail sous Dev-cpp) j'ai quand même de la repartie donc ma question est ; y a t-il quelqu'un qui ait déja réussi a compiler un programme utilisant directShow pour lire une vidéo ou alors quelqu'un connait-il une librairie excellente qui me permettrait d'en faire autant ?
Merci beaucoup pour vos réponses futures,
Salutations
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 2 oct. 2005 à 15:01
J'ai bien voulu tester ton code mais, hélas, DirectX 9
n'est pas installé sur mon pc et je n'ai pas le SDK contenant les
fichiers *.h nécessaires. Il s'agit dans ton code d'idetificateurs (ou
constantes) non reconnus par Dev-C++. Pour bien initialiser les GUIDs
tu peux ajouter comme ceci:
k_otik
Messages postés15Date d'inscriptiondimanche 12 novembre 2000StatutMembreDernière intervention27 mars 2006 2 oct. 2005 à 01:32
Ca peut, peut-etre vous aider:
C:/Dev-Cpp/include/strmif.h: At global scope:
C:/Dev-Cpp/include/strmif.h:20565: error: expected constructor, destructor, or type conversion before '(' token
C:/Dev-Cpp/include/strmif.h:20565: error: expected `,' or `;' before '(' tokenC:/Dev-Cpp/include/strmif.h:28961: error: declaration of `GUID tagVMRGUID::GUID'
C:/Dev-Cpp/include/winnt.h:1351: error: changes meaning of `GUID' from `typedef struct _GUID GUID
k_otik
Messages postés15Date d'inscriptiondimanche 12 novembre 2000StatutMembreDernière intervention27 mars 2006 2 oct. 2005 à 13:55
Merci racpp, ta source est vraiment bien, je ne l'ai pas encore compilé mais comme tu l'a présenté tu te sert de l'activeX wmp et j'ai remarqué que j'avais les memes erreurs ( à peu près) de compilation que tu as eu, notamment avec EXTERN_GUID, mais hélas je n'arrive pas à m'en défaire.
Voici mon programme de base avec directX et directShow:
#include <Windows.h>
#include <mmsystem.h>
#include <d3dx9.h>
#include <dshow.h>
//Create Media Control and Events
hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEventEx, (void **)&pEvent);
//Load a file
hr = pGraph->RenderFile(L"test.avi", NULL);
//Set window for events
pEvent->SetNotifyWindow((OAHWND)hWnd, WM_GRAPHNOTIFY, 0);
//Play media control
pControl->Run();
return S_OK;
}
void HandleGraphEvent()
{
// Disregard if we don't have an IMediaEventEx pointer.
if (pEvent == NULL)
{
return;
}
// Get all the events
long evCode;
LONG_PTR param1, param2;
while (SUCCEEDED(pEvent->GetEvent(&evCode, ¶m1, ¶m2, 0)))
{
pEvent->FreeEventParams(evCode, param1, param2);
switch (evCode)
{
case EC_COMPLETE: // Fall through.
case EC_USERABORT: // Fall through.
case EC_ERRORABORT:
PostQuitMessage(0);
return;
}
}
}
UnregisterClass( "D3D", wc.hInstance );
return 0;
}
Le programme est bon, j'en suis sur, maintenant en effet les erreurs affichés par Dev-cpp se trouve dans le fichier strmif.h
#ifndef _IAMFilterGraphCallback_
#define _IAMFilterGraphCallback_
// Note: Because this interface was not defined as a proper interface it is
// supported under C++ only. Methods aren't stdcall.
EXTERN_GUID(IID_IAMFilterGraphCallback,0x56a868fd,0x0ad4,0x11ce,0xb0,0xa3,0x0,0x20,0xaf,0x0b,0xa7,0x70);
//20565 C:\Dev-Cpp\include\strmif.h expected constructor, destructor, or type conversion before '(' token
20565 C:\Dev-Cpp\include\strmif.h expected `,' or `;' before '(' token
interface IAMFilterGraphCallback : public IUnknown
{
// S_OK means rendering complete, S_FALSE means retry now.
virtual HRESULT UnableToRender(IPin *pPin) = 0;
k_otik
Messages postés15Date d'inscriptiondimanche 12 novembre 2000StatutMembreDernière intervention27 mars 2006 2 oct. 2005 à 16:34
Merci mais çà n'a rien donner, c'est pas grave j'ai réussi à compiler en modifiant les headers et j'arrive à lire le avi :)
Pour les intéressés:
J'ai simplement mis en commentaire ceci:
// GUID GUID; ligne 28961 de strmif.h
J'ai enlevé l'inclusion de strsafe.h à la ligne 41 dans DShow.h
de la ligne 20561 de strmif.h jusqu'à la ligne 20572
//#ifndef _IAMFilterGraphCallback_
//#define _IAMFilterGraphCallback_
//// Note: Because this interface was not defined as a proper interface it is
//// supported under C++ only. Methods aren't stdcall.
//EXTERN_GUID(IID_IAMFilterGraphCallback,0x56a868fd,0x0ad4,0x11ce,0xb0,0xa3,0x0,0x20,0xaf,0x0b,0xa7,0x70);
//interface IAMFilterGraphCallback : public IUnknown
//{
// // S_OK means rendering complete, S_FALSE means retry now.
// virtual HRESULT UnableToRender(IPin *pPin) = 0;
//
//};
//#endif // _IAMFilterGraphCallback_