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

Audio Discussion :

Detecter conformité utilisation de fonctions MMSYSTEM


Sujet :

Audio

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    923
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 923
    Par défaut Detecter conformité utilisation de fonctions MMSYSTEM
    Bonjour,

    J'utilise les fonctions MMSystem pour la programmation audio ,
    j'utilise déjà les fonctions waveOutOpen,waveOutPrepareHeader,waveOutWrite,waveOutUnprepareHeader.
    Ca marche bien, mais comment je peux le savoir si je les utilisent correctement ?
    Existe t'il un logiciel qui détecte si j'utilise conformement ou pas ces API ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 525
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 525
    Par défaut
    Citation Envoyé par yann458 Voir le message
    Existe t'il un logiciel qui détecte si j'utilise conformement ou pas ces API ?
    Merci.
    le MSDN en ligne et essayer de trouver des exemples ( sur des sites comme Codeproject par exemple)

    utiliser l'API GetLastError pour voir si tout se déroule bien à chaque fois

    tester la valeur de retour qui doit être S_Ok le cas échéant si le type retourné est de type HRESULT

    Mais elle est un peu casse-pied à utiliser car il faut apper d'autres fonctions pour décoder les messages

    Sinon en fouillant sur le MSDN il doit y avoir des "samples"

  3. #3
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    MMSystem, ça marche, mais depuis Vista, il n'y a pas d'évolution significative.

    Je conseille de lire ce document pour avoir une vue d'ensemble : https://docs.microsoft.com/fr-fr/win...ore-audio-apis

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Je fais remonter cette discussion, au cas où !

    A chaque fois qu'une fonction renvoie un MMRESULT il faut tester si on est dans la situation MMSYSERR_NOERROR.
    Sinon faire écho de l'erreur.
    Cela signifie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char ErrMsg[MAX_ERRMSGSIZE+1]; 
    MMRESULT Error;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // On prépare un WAVEHDR et on remplit un bloc d'échantillons
    // puis...
    Error = waveOutPrepareHeader(.....);
    if(Error == MMSYSERR_NOERROR)
    	{
    	Error = waveOutWrite(.....);
    	if(Error == MMSYSERR_NOERROR) return; // rien à faire de plus si tout c'est bien passé !
    	}
    // gérér les erreurs
    // Error = waveOutGetErrorText(Error, ErrMsg, MAX_ERRMSGSIZE);
    // MessageBox(hwnd, ErrMsg, "WAVE OUT", MB_ICONINFORMATION | MB_OK );
    Par ailleurs, dans la callback associée au disposif, il vaut mieux ne rien faire d'autre que transmettre à une fenêtre le message reçu (celui envoyé par le dispositif).
    Celà peut paraître redondant ... mais il faut s'efforcer de rendre la callback du dispositif disponible le plus vite possible.

    Enfin pour finir, le WAVEHDR dispose d'un paramètre dwFlags qui peut prendre les valeurs suivantes :
    ( Ce paramètre doit être mis à 0 avant appel à waveOutPrepare ou waveInPrepare )

    WHDR_BEGINLOOP This buffer is the first buffer in a loop. This flag is used only with output buffers.
    WHDR_DONE Set by the device driver to indicate that it is finished with the buffer and is returning it to the application. <<< aura déclenché la callback avec un WOM_DONE
    WHDR_ENDLOOP This buffer is the last buffer in a loop. This flag is used only with output buffers.
    WHDR_INQUEUE Set by Windows to indicate that the buffer is queued for playback.
    WHDR_PREPARED Set by Windows to indicate that the buffer has been prepared with the waveInPrepareHeader or waveOutPrepareHeader function.

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