00001
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef __Alsa_h
00030 #define __Alsa_h
00031
00032 #if HAVE_CONFIG_H
00033 #include "config.h"
00034 #endif
00035
00036 #include "AlsaEvent.hpp"
00037 #include "AlsaSoundCard.hpp"
00038 #include "AlsaMixer.hpp"
00039 #include <string>
00040 #include <vector>
00041 #include <list>
00042 #include <alsa/asoundlib.h>
00043 #include <boost/shared_ptr.hpp>
00044
00046
00048
00055 namespace Gizmod {
00056
00058
00060
00062
00064
00072 class Alsa : public AlsaInterface { friend class AlsaMixer;
00073 public:
00074
00075 void init();
00076 AlsaMixer const * getDefaultMixerSwitch();
00077 AlsaMixer const * getDefaultMixerVolume();
00078 size_t getNumSoundCards();
00079 AlsaSoundCard const * getSoundCard(int Index);
00080 void toggleMuteAllCards();
00081 virtual void onAlsaEventMixerElementAttach(AlsaEvent const & Event, AlsaSoundCard const & SoundCard, AlsaMixer const & Mixer);
00082 virtual void onAlsaEventMixerElementChange(AlsaEvent const & Event, AlsaSoundCard const & SoundCard, AlsaMixer const & Mixer);
00083 virtual void onAlsaEventMixerElementDetach(AlsaEvent const & Event, AlsaSoundCard const & SoundCard, AlsaMixer const & Mixer);
00084 virtual void onAlsaEventSoundCardAttach(AlsaEvent const & Event, AlsaSoundCard const & SoundCard);
00085 virtual void onAlsaEventSoundCardDetach(AlsaEvent const & Event, AlsaSoundCard const & SoundCard);
00086 void registerDefaultMixerPriority(std::string MixerName);
00087 void shutdown();
00088
00089
00090 Alsa();
00091 virtual ~Alsa();
00092
00093
00094
00095 private:
00096
00097 void _onAlsaEventMixerElementChange(AlsaEvent const & Event, AlsaSoundCard const & SoundCard, AlsaMixer & Mixer);
00098
00099
00100 std::list<std::string> mDefaultMixerPriorities;
00101 int mDefaultMixerVolumePriority;
00102 int mDefaultMixerSwitchPriority;
00103 AlsaMixer * mpDefaultMixerSwitch;
00104 AlsaMixer * mpDefaultMixerVolume;
00105 bool mMuted;
00106 std::vector< boost::shared_ptr<AlsaSoundCard> > mSoundCards;
00107 };
00108
00110
00111 }
00112
00113 #endif // __Alsa_h