Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Nombre de sorties d'une carte son [ Windows / Multimédia ] (Mastersam)

jeudi 3 janvier 2008 à 16:09:30 | Nombre de sorties d'une carte son

Mastersam

Bonjour je cherche à lister les infos des périphériques audio connectés à un PC, j'en suis à l'étape de test pour connaitre le nombre de sorties et d'entrées disponibles pour un périphérique.

J'ai donc fait une petite fonction :

int AudioDrivers::TestAudioDriver(LPAUDIODRIVERSLIST audiodrv,unsigned int channels,double SampleRate,int Resolution){
    if(audiodrv)
if(audiodrv->type==AUDIO_TYPE_WDM){        
                 
            WAVEFORMATEXTENSIBLE wfxs;
            
            wfxs.Format.wFormatTag=WAVE_FORMAT_EXTENSIBLE; 
            wfxs.Format.nChannels=0;
            unsigned int channelmask=channels;
            while( channelmask != 0 ){
                wfxs.Format.nChannels += ( channelmask & 1L );
                channelmask >>= 1;
            }
            
            wfxs.Format.nSamplesPerSec=(DWORD)SampleRate;
            wfxs.Format.wBitsPerSample=8*(1+(int)(Resolution/8)); 
            wfxs.Format.nBlockAlign=wfxs.Format.wBitsPerSample*wfxs.Format.nChannels/8;
            wfxs.Format.nAvgBytesPerSec=wfxs.Format.nBlockAlign*wfxs.Format.wBitsPerSample;
            wfxs.Format.cbSize=sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX);
            
            wfxs.Samples.wValidBitsPerSample=Resolution;
            wfxs.Samples.wSamplesPerBlock=512;
            wfxs.Samples.wReserved=0;
            wfxs.dwChannelMask=channels; 
            wfxs.SubFormat=KSDATAFORMAT_SUBTYPE_PCM;
            
            MMRESULT open;
            if((open=waveOutOpen(NULL,audiodrv->drvID,(LPCWAVEFORMATEX)&wfxs,0,0,CALLBACK_NULL|WAVE_FORMAT_QUERY))==MMSYSERR_NOERROR)return 1;
            else if(open==MMSYSERR_ALLOCATED)strcpy(audiodrv->errorMessage, "Specified resource is already allocated.");
            else if(open==MMSYSERR_BADDEVICEID)strcpy(audiodrv->errorMessage, "Specified device identifier is out of range.");
            else if(open==MMSYSERR_NODRIVER)strcpy(audiodrv->errorMessage, "No device driver is present.");
            else if(open==MMSYSERR_NOMEM)strcpy(audiodrv->errorMessage, "Unable to allocate or lock memory.");
            else if(open==WAVERR_BADFORMAT)strcpy(audiodrv->errorMessage, "Attempted to open with an unsupported waveform-audio format.");
            else if(open==WAVERR_SYNC)strcpy(audiodrv->errorMessage, "The device is synchronous but waveOutOpen was called without using the WAVE_ALLOWSYNC flag.");
       
        }
    
    }
    return 0;
}

que j'appelle de la façon suivante (ici test pour du 7.1 par exemple):

if(TestAudioDriver(audiodrv,SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER|SPEAKER_LOW_FREQUENCY|SPEAKER_BACK_LEFT|SPEAKER_BACK_RIGHT|SPEAKER_SIDE_LEFT|SPEAKER_SIDE_RIGHT,44100.,16))audiodrv->OutputChannels=8;


Le soucis est que sur une carte audio qui dispose de 2 sorties, cet exemple donne quand même un résultat positif. Je voudrais savoir comment obtenir plus concrètement les infos d'une carte son, puis l'utiliser en se servant le moins possibles des fioritures de windows.


Merci d'avance



jeudi 3 janvier 2008 à 17:17:04 | Re : Nombre de sorties d'une carte son

Arnotic

Administrateur CodeS-SourceS
Regarde ma source : http://www.cppfrance.com/codes/AUDIODETECT_20037.aspx. Je pense qu'elle répondra à tes questions.

@+
Arnotic,
Admin CS,
[ Lien ]
MVP Visual C++

jeudi 3 janvier 2008 à 21:13:10 | Re : Nombre de sorties d'une carte son

Mastersam

Bonjour Arnotic,

J'utilise déjà au préalable waveOutGetDevCaps pour récuperer les noms, mais je n'étais pas satisfait du : waveOutGetDevCaps.wChannels 65535 qui n'a à mes yeux pas d'utilité car aucune carte son n'a 65535 sorties réelles or les 3 cartes son connectées à mon PC donnent ce même nombre (deux d'entres elles sont des 7.1, la troisième une stéréo).

J'ai l'impression que waveoutgetdevcaps donne plutot les capacités du bus audio associé à la carte et non pas les capacités physiques de la carte. De plus wChannels est cencé prendre les valeurs 1 pour mono ou 2 pour stéréo selon la msdn, et malheureusement on ne parle pas de ce qui ce passe pour des cartes son plus récentes 5.1 et 7.1 par exemple.

Moi je cherche à récuperer les infos précises : nombre de canaux, samplerates acceptés en entrée et en sortie ...

Mais pour l'instant je suis un peu perdu dans les infos complexes de la msdn.

Si tu as une piste pour aller un peu plus loin je suis preneur.


jeudi 3 janvier 2008 à 22:31:56 | Re : Nombre de sorties d'une carte son

Arnotic

Administrateur CodeS-SourceS
Je vais essayer de regarder tout cela d'un peu plus près.

@+
Arnotic,
Admin CS,
[ Lien ]

mercredi 27 février 2008 à 16:41:48 | Re : Nombre de sorties d'une carte son

rachmasse

Salut,

j'ai une question pour toi Arnotic, j'ai recuperé ton code et j'essaye de la faire marcher en C.
Hors j'ai une erreur que je ne comprends pas si tu pouvais m'eclairer ca serait sympa.
Autre question est ce qu'il est possible de faire la meme chose avec les peripheriques video, je pense à la webcam par exemple ????

erreur :   [Linker error] undefined reference to `waveInGetNumDevs@0'

@+

mercredi 27 février 2008 à 18:06:39 | Re : Nombre de sorties d'une carte son

Arnotic

Administrateur CodeS-SourceS
Link avec ton projet : Winmm.lib
Pour la vidéo je ne connais pas.

@+
Arnotic,
Admin CS,
[ Lien ]

dimanche 2 mars 2008 à 12:41:03 | Re : Nombre de sorties d'une carte son

rachmasse

Ah dommage! merci quand meme!!!

@++



Cette discussion est classé dans : format, open, if, wfxs, audiodrv


Répondre à ce message

Sujets en rapport avec ce message

lecture d image au format jpeg [ par a-sophie ] Salut,Je souhaite lire et sauvegarder des images au format jpeg avec visual c++ .Si jamais quelqu un a des conseils ou des pistes a me donner, ce sera Où installer les librairies Open GL?? [ par Budweiser ] Il m'est impossible de compiler un seul programme avec les librairies d'Open GL car il ne trouve jamais le fichier à inclure.Ma question c'est où copi CDatabase::Open() [ par julok2 ] Bonjour à tous,déjà je suis désolé d'envoyer autant de messages sur le forum mais j'ai beaucoup de mal à me documenter correctement sur ODBC avec les CDatabase::Open() [ par julok2 ] Bonjour à tous,déjà je suis désolé d'envoyer autant de messages sur le forum mais j'ai beaucoup de mal à me documenter correctement sur ODBC avec les format de dateet heure [ par tertulia ] comment modifier le format de la date et de l'heure.je m'explique je recupere la date et l'heure grace aux fonctions suivantes _tstrdate(datebuf);_ts Open Image file in MFC [ par kais ] Comment je peux ouvrir une image dans application avec menu et boite de dialogue Si c'est possible une image TIFF MERCI Format de fichier : très étrange [ par GoldenEye ] Bonjour à tous J'ai un problème très bizarre: je viens de revenir sur un programme de compression (Huffman sur ce site) et je m'aperçois qu'il ne fonc Sauvegarde du rendu ds un fichier image [ par titeufxp ] Bonjour,J'aurai besoin d'aide pour sauvegarder le contenu de ma fenetre opengl ds un format image genre BMP ou JPG.J'arrive a faire un fichier image a Format dans les fstream [ par Cyrik ] Bien le bonjour tout le monde,Ca fait maintenant 2 jours que je cherche sur le net, la façon de formater "habituelle" en C++. Je m'explique, j'ai tjrs conversion d'un format png en image bmp [ par REk2002 ] bonjour je cherche un programme simple permettant de convertir une image png en bmp. merci d'avance au revoir


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.