DirectShow sous Vista ?

DirectShow sous Vista ? - C++ - Programmation

Marsh Posté le 25-02-2007 à 13:27:38    

Bonjour,
 
Le problème n'est pas vraiment un problème lié à C++ mais je ne sais pas trop ou poster sinon.
 
Je développe actuellement un lecteur vidéo en C++ grâce à directshow. J'ai commencé ce projet sous XP avec VC2005, ca marchait pas trop mal puisque je pouvais lire des vidéos sans problème.  
Je suis passé sous Vista hier, et miracle, je n'ai plus le son !  
 
J'ai installé le PSDK que j'utilisais avant ainsi que le DirectX 9 SDK bien que sous Vista je sois sous DX10 évidemment.
 
Quelqu'un aurait une idée du pourquoi du comment je n'ai plus de son tout en ayant quand même l'image ? :( Il faudrait que j'utilise les headers de DX10 ? (je n'ai pas envie de me replonger dans du code de base, donc j'aimerais autant rester avec ceux de DX9 ... ).
 
Merci de votre aide :)
 
:hello:

Reply

Marsh Posté le 25-02-2007 à 13:27:38   

Reply

Marsh Posté le 25-02-2007 à 14:50:39    

Pour isoler le problème et être sûr que ca vient bien de DirectX, utilise comme render audio le "AudioWaveOut Renderer" en l'ajoutant dans le filtre (cf CLSID_AudioRender), si ça ne fonctionne toujours pas, alors le problème ne vient pas de DirectX mais de la pile audio de Vista qui doit surement nécessiter une adaptation.

Message cité 1 fois
Message édité par karlkox le 25-02-2007 à 14:51:51
Reply

Marsh Posté le 25-02-2007 à 15:31:04    

karlkox a écrit :

Pour isoler le problème et être sûr que ca vient bien de DirectX, utilise comme render audio le "AudioWaveOut Renderer" en l'ajoutant dans le filtre (cf CLSID_AudioRender), si ça ne fonctionne toujours pas, alors le problème ne vient pas de DirectX mais de la pile audio de Vista qui doit surement nécessiter une adaptation.


OK merci je vais regarder de ce coté là ;)

Reply

Marsh Posté le 25-02-2007 à 15:55:44    

Je suis pas sur de faire les choses bien.  
 
Voilà comment je fais, en gros.

Code :
  1. CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph);
  2. CoCreateInstance(CLSID_AudioRender, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)&pWaveRenderer);
  3. pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
  4. pGraph->QueryInterface(IID_IMediaEventEx, (void **)&pEvent);
  5. //pGraph->QueryInterface(IID_IBasicAudio, (void **)&pAudio);
  6. pGraph->QueryInterface(IID_IMediaPosition, (void **)&pPosition);
  7. pGraph->QueryInterface(IID_IVideoWindow,(void **)&pVideoWindow);
  8. pGraph->AddFilter(pWaveRenderer,NULL);


 
Ca ne fonctionne pas. D'ailleurs avant (sous XP) j'arrivais à lire un fichier mp3 ou autre, mais là il m'envoie bouler au moment ou je fais :
pGraph->RenderFile(_fileName, NULL);
 
 
Donc en résumé j'ai bien l'image, et renderFile marche quand j'essaye d'ouvrir une vidéo, mais ca ne fonctionne jamais avec le son.


Message édité par did-54 le 25-02-2007 à 15:56:16
Reply

Marsh Posté le 25-02-2007 à 16:41:33    

Code :
  1. pGraph->AddFilter(pWaveRenderer,L"AudioWaveOut Renderer" );

Reply

Marsh Posté le 25-02-2007 à 17:02:41    

Ca ne change rien :(

Reply

Marsh Posté le 25-02-2007 à 17:26:56    

Les vidéos fonctionnent avec tes players ? Utilise GSPot pour voire le graphe qu'il produit pour le rendering, ça te permettra de savoir lesquels sont utilisés.

Reply

Marsh Posté le 25-02-2007 à 17:28:03    

Toutes les videos marchent, et je viens de me rendre compte qu'il lit correctement les .wav
 
Je vais regarder ce qu'est GSPot.

Reply

Marsh Posté le 25-02-2007 à 17:31:33    

Gspot plante au chargement, enfin il me dit qu'il a fait planter DirectShow.
J'ai quand meme réussi à tester un fichier, mais je ne vois pas en quoi ca m'aide... Au niveau du son c'est du MP3...
 
Je viens de tester avec les wma et ca fonctionne aussi. J'ai pas le codec mp3 ou quoi ? :D
 


Message édité par did-54 le 25-02-2007 à 17:39:12
Reply

Marsh Posté le 25-02-2007 à 17:41:09    

C'est pas bon signe, si GSpot plante c'est que le support DirectShow est soit à adapter spécifiquement sous Vista soit qu'il faut passer par une autre API qui doit surement exister.
Dans GSpot, en bas à droite, tu as "GSPOT" --> "1" pour la vidéo et l'audio, clique sur le "2" de l'audio, tu devrais avoir à droite le graphe utilisé et le device audio utilisé et le "3" pour jouer l'audio.
Winamp utilise son propre moteur et ne passe pas par DirectShow ;)


Message édité par karlkox le 25-02-2007 à 17:41:58
Reply

Marsh Posté le 25-02-2007 à 17:41:09   

Reply

Marsh Posté le 25-02-2007 à 17:50:15    

Je ne vois pas ca, enfin en bas j'ai la partie "proposed codecs" etc mais il me dit que le rendering est désactivé dans les options. Quand j'essaye d'activer il me dit que DirectShow a planté.
Le codec mis en cause selon lui est "Unknown codec #7".
 

Reply

Marsh Posté le 25-02-2007 à 17:51:22    

Ce que je comprends pas, c'est pourquoi seulement l'audio foire. Encore ca serait audio et vidéo, je dis pas, mais là...

Reply

Marsh Posté le 25-02-2007 à 18:16:50    

Ca vient du fait qu'il existe des codecs audio ET vidéo, windows utilise ceux dont il dépend selon le fourcc du contenu du média donc un codec vidéo peut tres bien fonctionner malgré le fait que le codec audio, lui, soit défaillant.
Sinon, tu as bien téléchargé la dernière version ? Il s'agit d'une mise à jour majeure.

Reply

Marsh Posté le 25-02-2007 à 18:21:19    

Si tu parles de GSpot en effet j'ai pas la dernière, j'ai pris la premiere venue sur google mais ils ont sorti une vista compliant y'a 3 jours.


Message édité par did-54 le 25-02-2007 à 18:29:13
Reply

Marsh Posté le 25-02-2007 à 18:32:30    

Je viens donc de tester et en Audio il me met MPEG-1  Layer 3 et stat "Codec not installed" ...
J'ai peur de comprendre :D Ca veut dire que j'ai rien pour décoder du mp3 ?


Message édité par did-54 le 25-02-2007 à 18:58:53
Reply

Marsh Posté le 25-02-2007 à 20:00:49    

Tout à fait  :D  
Installe ffdshow, il a tout ce qu'il faut pour l'audio et la vidéo ;)

Reply

Marsh Posté le 25-02-2007 à 20:08:21    

Ca fonctionne ! :)
Quelle problème de merde :| M'enfin le principal c'est que ca roule maintenant. Merci beaucoup du coup de main en tout cas :)
 

Reply

Marsh Posté le 25-02-2007 à 20:57:35    

Au plaisir  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed