Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

sound_dx.cpp

Go to the documentation of this file.
00001 
00002 #include "Core/precomp.h"
00003 
00004 #include <iostream>
00005 
00006 #include "sound_dx.h"
00007 #include "soundcard_dx.h"
00008 
00009 CL_SoundCard *CL_Sound_DX::cur_card = NULL;
00010 
00011 BOOL WINAPI EnumerateSoundDevices(LPGUID lpGuid, LPCSTR lpstrDescription, LPCSTR lpstrModule, LPVOID lpContext);
00012 
00013 CL_Sound_DX::CL_Sound_DX()
00014 {
00015         std::vector<SSoundCardInfo *> soundinfo;
00016         BOOL result = DirectSoundEnumerate(EnumerateSoundDevices, &soundinfo);
00017 
00018         int card_no=0;
00019 
00020         CL_Sound::cards.push_back(new CL_SoundCard_DX(card_no++, "Default device", NULL));
00021 
00022         std::vector<SSoundCardInfo *>::iterator it;
00023         int i=1;
00024         for (it=soundinfo.begin();it!=soundinfo.end();it++)
00025         {
00026                 CL_Sound::cards.push_back(new CL_SoundCard_DX(card_no++, soundinfo[i-1]->name, &soundinfo[i-1]->guid));
00027                 i++;
00028         }
00029 
00030         for (it=soundinfo.begin();it!=soundinfo.end();it++)
00031         {
00032                 delete *it;
00033         }
00034 
00035         CL_Sound_DX::cur_card = CL_Sound::cards[0];
00036         CL_Sound::preload_cards.push_back(CL_Sound_DX::cur_card);
00037 
00038         std::cout << "ClanLib: Number of sound cards: " << CL_Sound::cards.size() << std::endl;
00039 }
00040 
00041 CL_Sound_DX::~CL_Sound_DX()
00042 {
00043         for (std::vector<CL_SoundCard *>::iterator it=CL_Sound::cards.begin();it!=CL_Sound::cards.end();it++)
00044         {
00045                 delete *it;
00046         }
00047 }
00048 
00049 BOOL WINAPI EnumerateSoundDevices(
00050         LPGUID lpGuid,                                          
00051         LPCSTR lpstrDescription,        
00052         LPCSTR lpstrModule,                             
00053         LPVOID lpContext)
00054 {
00055         if (lpGuid!=NULL)
00056         {
00057                 std::cout << lpstrDescription << ", " << lpstrModule << std::endl;
00058                 SSoundCardInfo *info = new SSoundCardInfo;
00059                 memcpy(&info->guid, lpGuid, sizeof(GUID));
00060                 info->name = lpstrDescription;
00061                 ((std::vector<SSoundCardInfo *> *) lpContext)->push_back(info);
00062         }
00063         return TRUE;
00064 }
00065 
00066 CL_StreamSoundProvider *CL_Sound::get_microphone()
00067 {
00068         if (CL_Sound_DX::cur_card != NULL) return CL_Sound_DX::cur_card->get_microphone();
00069         return NULL;
00070 }
00071 
00072 CL_StreamSoundProvider *CL_Sound::get_line_in()
00073 {
00074         if (CL_Sound_DX::cur_card != NULL) return CL_Sound_DX::cur_card->get_line_in();
00075         return NULL;
00076 }
00077 
00078 void CL_Sound::select_card(CL_SoundCard *card)
00079 {
00080         CL_Sound_DX::cur_card = card;
00081 }
00082 
00083 void CL_Sound::select_card(int card_no)
00084 {
00085         CL_Sound_DX::cur_card = CL_Sound::cards[card_no];
00086 }
00087 
00088 CL_SoundCard *CL_Sound::get_current_card()
00089 {
00090         return CL_Sound_DX::cur_card;
00091 }

Generated at Wed Apr 4 19:54:03 2001 for ClanLib by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001