IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

DirectSound et le streaming


Sujet :

DirectX

  1. #1
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut DirectSound et le streaming
    Je voudrais faire du streaming avec DirectSound mais je ne trouve pas de tutoriel sur le net ni d'exemples bien faits ! Celui livré avec Direct X est pas mal sauf que je ne comprends pas cette notion d'évenement qu'ils utilisent !

    Donc si qqn pouvait m'expliquer ou me filer une bonne url, merci

  2. #2
    Membre régulier
    Profil pro
    Ingénieur R&D
    Inscrit en
    Juillet 2002
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 81
    Points : 74
    Points
    74
    Par défaut
    Ah... Bonne question... Je vais jeter un oeil...

  3. #3
    mat.M
    Invité(e)
    Par défaut
    Je voudrais faire du streaming avec DirectSound
    Qu'appelle tu Streaming avec DSound ???
    Le principe de DSound c'est un tampon principal et tampons auxiliaires circulaire sur lequel on copie des blocks ( ou chunks ) grâce aux méthodes Lock et Unlock dudit tampon lors du décortiquage d'un fichier WAVE.
    Pour faire du Streaming selon une adresse Internet par ex. il faut utiliser Direct Show plus souple pour cela

  4. #4
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    Le principe de DSound c'est un tampon principal et tampons auxiliaires circulaire sur lequel on copie des blocks ( ou chunks ) grâce aux méthodes Lock et Unlock dudit tampon lors du décortiquage d'un fichier WAVE.
    tout à fait, sauf que si le fichier wave est assez conséquent, le charger en mémoire n'est pas la meilleure solution !

    dans un exemple de Direct X, on alloue un petit tampon auxiliaire qu'on efface et remplit en cours de la lecture du fichier wav. Le tampon contient à peu près 3 sec de son, et donc son contenu est constamment rechargé.

    Voilà comment ça marche, sauf ce que j'ai pas compris vraiment bien, c'est la méthode qu'ils utilisent pour recharger toutes les 3 sec le tampon, en utilisant des 'messages'.

    C'est les 'messages' sur lesquels j'aimerai avoir des infos, si on peut les remplacer par d'autres méthodes ou si on n'est pas obligé de les utiliser dans la boucle de jeu, etc...

    j'espère avoir été + clair

  5. #5
    mat.M
    Invité(e)
    Par défaut
    Je ne connais pas ces messages apparament ils doivent êre de notification.
    Je pense qu'il est préférable d'utiliser l'architecture Direct Show qui lui permet de faire véritablement du Streaming. Ainsi un DVD , un fichier AVI pourra être lu car au-lieu d'être totalement chargé en mémoire ( un DVD
    c'est 5 Go !!!! ) , il sera bufferisé et partiellement lu.
    C'est très facile d'utiliser Direct Show , bien que la syntaxe relative à COM avec CoCreateInstance soit rebutante ; voici la base pour afficher une vidéo :


    HRESULT PlayMovie(LPTSTR lpszMovie)
    {
    IMediaControl *pMC = NULL;
    IGraphBuilder *pGB = NULL;
    IMediaEventEx *pME = NULL;
    long evCode;
    hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IMediaControl, (void **)&pMC);
    hr = pMC->QueryInterface(IID_IGraphBuilder, (void **)&pGB;
    hr = pMC->QueryInterface(IID_IMediaEventEx, (void **)&pME);
    hr = pGB->RenderFile(lpszMovie, NULL);hr = pMC->Run();
    hr = pME->WaitForCompletion(INFINITE, &evCode);
    }

  6. #6
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    il suffit seulement de ce bout de code pour lire une vidéo???

    Avec le son, ça fonctionne pareil? Car dans ce cas, je ne vais pas me casser la tête avec DirectSound

    Sinon j'aimerai savoir les formats que supporte DirectShow, si je peux utiliser des mp3 par exemple?

    Merci

  7. #7
    mat.M
    Invité(e)
    Par défaut
    il suffit seulement de ce bout de code pour lire une vidéo???
    Avec le son, ça fonctionne pareil? Car dans ce cas, je ne vais pas me casser la tête avec DirectSound
    Sinon j'aimerai savoir les formats que supporte DirectShow, si je peux utiliser des mp3 par exemple?
    Oui tout à fait car l'intérêt pour le développeur c'est que DShow englobe tous les composants de rendu multimédia , la décompression mpeg , mp3 , avi ..... On a recours à l'interface COM IGraphBuilder sur lequel on ajoute des filtres DShow permettant notamment la décompression MPEG.
    DShow ou DSound ?? Tout dépend de ce que l'on veut faire.
    Si c'est pour rendre différents types de médias , utiliser DShow.
    Si c'est un jeu d'arcade avec des sons d'ambiance DSound est préférable.
    Mais on peut utiliser les 2 ce que j'ai fait dans mon shareware....
    Avec DShow on peut lire tous les médias pourvu que les filtres adéquats soient installés ( utiliser Graphedit.exe) .
    L'exemple PlayWnd du SDK de Direct X 8.1 illustre très bien l'utilisation de DShow

  8. #8
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    bin c'est très intéressant, je te remercie pour ces infos !

    en fait j'utilise DirectSound pour jouer les sons d'un jeu, donc je pense pour les bruitages j'utiliserai Dsound, et pour la musique de fond DShow !

    merci encore

  9. #9
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    j'ai essayé d'utiliser Direct Show, mais je galère enormément !!!!

    J'ai essayé d'utiliser iGraphBuilder, mais mon compilo ne le trouvait pas (C++ Builder 3).

    j'ai du importer les fichiers "strmif.h", "control.h" et "uuids.h" qui se trouvaient dans le répertoire include de Visual C++ 5.

    Mais maintenant, la compil passe mais j'ai une erreur lors du lien :
    [LieurErreur] Unresolved external '_IID_IGraphBuilder' referenced from E:\PROG\DX\BETA 6\TSTOCKDX MANAGER\DSHOWDX.OBJ.
    [LieurErreur] Unresolved external '_CLSID_FilterGraph' referenced from E:\PROG\DX\BETA 6\TSTOCKDX MANAGER\DSHOWDX.OBJ.
    [LieurErreur] Unresolved external '_IID_IMediaControl' referenced from E:\PROG\DX\BETA 6\TSTOCKDX MANAGER\DSHOWDX.OBJ.
    je ne sais pas quoi faire maintenant !

  10. #10
    Gib
    Gib est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 26
    Points : 26
    Points
    26
    Par défaut pour compilé
    il faut ajouté strmif.lib que tu aura fait avec IMPLIB

  11. #11
    Gib
    Gib est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    IMPLIB pour compilé avec C++ Builder 3

  12. #12
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    j'ai bien tenté de rajouté la lib de Visual, mais bien entendu ça n'a pas marché !

    mais je lui donne quel dll à IMPLIB ? j'ai pas trouvé strmif.dll !

    J'essayerai de rechercher ce soir, à moins que je n'ai pas compris l'utilisation de IMPLIB !

    Merci

  13. #13
    Gib
    Gib est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    en fait la lib à ajouté est:

    strmiids.lib

    excuse pour la confusion,

    et dans Option de projet, onglet Répertoires tu met dans conditions ça
    DWORD_PTR=DWORD*;LONG_PTR=long

  14. #14
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    et strmiids.lib se trouve à disposition dans les dossiers de Builder?

    Je te remercie de ton aide, je testerai ce soir !

  15. #15
    Gib
    Gib est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    j' oublie quartz.lib qu'il faut ajouté aussi.

    Attention aux versions la strmiids.lib qui est dans Builder3 est d'une version inferieure a DX7, il vaut mieux les recréé.

    savgarde les dll avant d'utilisé IMPLIB car une inversion de parametres leurs est fatal, ça m'est arrivé

    J'ai galèré pour faire du DShow dans Builder 3 mais ça vaux la painne

  16. #16
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    je te remercie

    Je ne pensais pas trouver la solution un jour car je n'ai rien trouvé sur le net !!!!

    Merci encore

  17. #17
    Gib
    Gib est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    J'ai repris ma démache et en fait la dll strmiids n'existe pas, j'ai fait une conversion de strmiids.lib du SDK vers le format COFF de Borland avec
    coff2omf.exe, qui est dans le bin de CBuilder.

    j'ai fais ça dans un bat
    coff2omf.exe ..\strmiids.lib strmiids.lib (ici il y-a 2 répertoires)

    pour quartz.lib la dll est dans windows/system

  18. #18
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    Et bien là grandement merci Gib !!!

    Je crois bien que grâce à toi j'ai tout les élements pour que ça marche

    Merci Merci Merci

  19. #19
    Gib
    Gib est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    Plus haut j'ai écriele format COFF de Borland , mais c'est le format OMF de Borland.

  20. #20
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    sniff ça ne marche toujours pas, j'ai les mêmes erreurs !!

    J'ai rajouté les conditions dns options du projet.

    J'ai crée quartz.lib à partir de quartz.dll trouvé dans windows/system
    Je n'ai pas trouvé strmiids.lib dans le SDK, je l'ai trouvé dans les lib de Visual C++, j'ai utilisé coff2omf.exe pour créer une lib compatible.

    J'ai compilé et même erreur à l'édition des liens !

    Que dois-je faire?

Discussions similaires

  1. DirectSound Stream Player
    Par Erakis dans le forum DirectX
    Réponses: 5
    Dernier message: 05/08/2006, 17h38
  2. DirectSound...
    Par burkhard dans le forum DirectX
    Réponses: 12
    Dernier message: 21/05/2006, 12h11
  3. [directsound] boucle de traitement de son
    Par gargle dans le forum DirectX
    Réponses: 5
    Dernier message: 24/03/2003, 10h47
  4. Limitation DirectSound
    Par Sub0 dans le forum DirectX
    Réponses: 1
    Dernier message: 28/02/2003, 11h21
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo