/[svn]/linuxsampler/trunk/src/drivers/audio/AudioOutputDeviceAlsa.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/drivers/audio/AudioOutputDeviceAlsa.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 484 by schoenebeck, Sat Feb 19 02:40:24 2005 UTC revision 485 by schoenebeck, Thu Mar 24 21:06:09 2005 UTC
# Line 134  namespace LinuxSampler { Line 134  namespace LinuxSampler {
134          // obtain information from given sound card          // obtain information from given sound card
135          String pcm_name       = "hw:" + Parameters["CARD"];          String pcm_name       = "hw:" + Parameters["CARD"];
136          snd_pcm_t* pcm_handle = NULL;          snd_pcm_t* pcm_handle = NULL;
137          if (snd_pcm_open(&pcm_handle, pcm_name.c_str(), SND_PCM_STREAM_PLAYBACK, 0) < 0) return optional<int>::nothing;          if (snd_pcm_open(&pcm_handle, pcm_name.c_str(), SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK) < 0) return optional<int>::nothing;
138          snd_pcm_hw_params_t* hwparams;          snd_pcm_hw_params_t* hwparams;
139          snd_pcm_hw_params_alloca(&hwparams);          snd_pcm_hw_params_alloca(&hwparams);
140          if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) {          if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) {
# Line 157  namespace LinuxSampler { Line 157  namespace LinuxSampler {
157          // obtain information from given sound card          // obtain information from given sound card
158          String pcm_name       = "hw:" + Parameters["CARD"];          String pcm_name       = "hw:" + Parameters["CARD"];
159          snd_pcm_t* pcm_handle = NULL;          snd_pcm_t* pcm_handle = NULL;
160          if (snd_pcm_open(&pcm_handle, pcm_name.c_str(), SND_PCM_STREAM_PLAYBACK, 0) < 0) return optional<int>::nothing;          if (snd_pcm_open(&pcm_handle, pcm_name.c_str(), SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK) < 0) return optional<int>::nothing;
161          snd_pcm_hw_params_t* hwparams;          snd_pcm_hw_params_t* hwparams;
162          snd_pcm_hw_params_alloca(&hwparams);          snd_pcm_hw_params_alloca(&hwparams);
163          if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) {          if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) {
# Line 227  namespace LinuxSampler { Line 227  namespace LinuxSampler {
227          // obtain information from given sound card          // obtain information from given sound card
228          String pcm_name       = "hw:" + Parameters["CARD"];          String pcm_name       = "hw:" + Parameters["CARD"];
229          snd_pcm_t* pcm_handle = NULL;          snd_pcm_t* pcm_handle = NULL;
230          if (snd_pcm_open(&pcm_handle, pcm_name.c_str(), SND_PCM_STREAM_PLAYBACK, 0) < 0) return optional<int>::nothing;          if (snd_pcm_open(&pcm_handle, pcm_name.c_str(), SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK) < 0) return optional<int>::nothing;
231          snd_pcm_hw_params_t* hwparams;          snd_pcm_hw_params_t* hwparams;
232          snd_pcm_hw_params_alloca(&hwparams);          snd_pcm_hw_params_alloca(&hwparams);
233          if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) {          if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) {
# Line 250  namespace LinuxSampler { Line 250  namespace LinuxSampler {
250          // obtain information from given sound card          // obtain information from given sound card
251          String pcm_name       = "hw:" + Parameters["CARD"];          String pcm_name       = "hw:" + Parameters["CARD"];
252          snd_pcm_t* pcm_handle = NULL;          snd_pcm_t* pcm_handle = NULL;
253          if (snd_pcm_open(&pcm_handle, pcm_name.c_str(), SND_PCM_STREAM_PLAYBACK, 0) < 0) return optional<int>::nothing;          if (snd_pcm_open(&pcm_handle, pcm_name.c_str(), SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK) < 0) return optional<int>::nothing;
254          snd_pcm_hw_params_t* hwparams;          snd_pcm_hw_params_t* hwparams;
255          snd_pcm_hw_params_alloca(&hwparams);          snd_pcm_hw_params_alloca(&hwparams);
256          if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) {          if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) {
# Line 430  namespace LinuxSampler { Line 430  namespace LinuxSampler {
430       *  Checks if sound card supports the chosen parameters.       *  Checks if sound card supports the chosen parameters.
431       *       *
432       *  @returns  true if hardware supports it       *  @returns  true if hardware supports it
433         *  @throws AudioOutputException - if device cannot be accessed
434       */       */
435      bool AudioOutputDeviceAlsa::HardwareParametersSupported(String card, uint channels, int samplerate, uint numfragments, uint fragmentsize) {      bool AudioOutputDeviceAlsa::HardwareParametersSupported(String card, uint channels, int samplerate, uint numfragments, uint fragmentsize) throw (AudioOutputException) {
436          pcm_name = "hw:" + card;          pcm_name = "hw:" + card;
437          if (snd_pcm_open(&pcm_handle, pcm_name.c_str(), stream, 0) < 0) return false;          int err;
438            if ((err = snd_pcm_open(&pcm_handle, pcm_name.c_str(), stream, 0)) < 0) {
439                throw AudioOutputException(String("Error opening PCM device ") + pcm_name + ": " + snd_strerror(err));
440            }
441          snd_pcm_hw_params_alloca(&hwparams);          snd_pcm_hw_params_alloca(&hwparams);
442          if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) {          if (snd_pcm_hw_params_any(pcm_handle, hwparams) < 0) {
443              snd_pcm_close(pcm_handle);              snd_pcm_close(pcm_handle);
# Line 512  namespace LinuxSampler { Line 516  namespace LinuxSampler {
516      }      }
517    
518      String AudioOutputDeviceAlsa::Version() {      String AudioOutputDeviceAlsa::Version() {
519         String s = "$Revision: 1.17 $";         String s = "$Revision: 1.18 $";
520         return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword         return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword
521      }      }
522    

Legend:
Removed from v.484  
changed lines
  Added in v.485

  ViewVC Help
Powered by ViewVC