25 |
|
|
26 |
namespace LinuxSampler { |
namespace LinuxSampler { |
27 |
|
|
28 |
REGISTER_AUDIO_OUTPUT_DRIVER("ALSA",AudioOutputDeviceAlsa); |
REGISTER_AUDIO_OUTPUT_DRIVER("Alsa",AudioOutputDeviceAlsa); |
29 |
|
|
30 |
/** |
/** |
31 |
* Create and initialize Alsa audio output device with given parameters. |
* Create and initialize Alsa audio output device with given parameters. |
36 |
AudioOutputDeviceAlsa::AudioOutputDeviceAlsa(std::map<String,String> Parameters) : AudioOutputDevice(CreateParameters(Parameters)), Thread(true, 1, 0) { |
AudioOutputDeviceAlsa::AudioOutputDeviceAlsa(std::map<String,String> Parameters) : AudioOutputDevice(CreateParameters(Parameters)), Thread(true, 1, 0) { |
37 |
pcm_handle = NULL; |
pcm_handle = NULL; |
38 |
stream = SND_PCM_STREAM_PLAYBACK; |
stream = SND_PCM_STREAM_PLAYBACK; |
39 |
this->uiAlsaChannels = ((DeviceCreationParameterInt*)this->Parameters["CHANNELS"])->ValueAsInt(); |
this->uiAlsaChannels = ((DeviceCreationParameterInt*)this->Parameters["channels"])->ValueAsInt(); |
40 |
this->uiSamplerate = ((DeviceCreationParameterInt*)this->Parameters["SAMPLERATE"])->ValueAsInt(); |
this->uiSamplerate = ((DeviceCreationParameterInt*)this->Parameters["samplerate"])->ValueAsInt(); |
41 |
this->FragmentSize = ((DeviceCreationParameterInt*)this->Parameters["FRAGMENTSIZE"])->ValueAsInt(); |
this->FragmentSize = ((DeviceCreationParameterInt*)this->Parameters["fragmentsize"])->ValueAsInt(); |
42 |
uint Fragments = ((DeviceCreationParameterInt*)this->Parameters["FRAGMENTS"])->ValueAsInt(); |
uint Fragments = ((DeviceCreationParameterInt*)this->Parameters["fragments"])->ValueAsInt(); |
43 |
String Card = this->Parameters["CARD"]->Value(); |
String Card = this->Parameters["card"]->Value(); |
44 |
|
|
45 |
dmsg(1,("Checking if hw parameters supported...\n")); |
dmsg(1,("Checking if hw parameters supported...\n")); |
46 |
if (HardwareParametersSupported(Card, uiAlsaChannels, uiSamplerate, Fragments, FragmentSize)) { |
if (HardwareParametersSupported(Card, uiAlsaChannels, uiSamplerate, Fragments, FragmentSize)) { |
170 |
|
|
171 |
std::map<String,DeviceCreationParameter*> AudioOutputDeviceAlsa::CreateParameters(std::map<String,String> Parameters) { |
std::map<String,DeviceCreationParameter*> AudioOutputDeviceAlsa::CreateParameters(std::map<String,String> Parameters) { |
172 |
std::map<String,DeviceCreationParameter*> result; |
std::map<String,DeviceCreationParameter*> result; |
173 |
result["CARD"] = new ParameterCard(this, Parameters["CARD"]); // additional parameter, individually for this driver |
result["card"] = new ParameterCard(this, Parameters["card"]); // additional parameter, individually for this driver |
174 |
result["FRAGMENTS"] = new ParameterFragments(this, Parameters["FRAGMENTS"]); // additional parameter, individually for this driver |
result["fragments"] = new ParameterFragments(this, Parameters["fragments"]); // additional parameter, individually for this driver |
175 |
result["FRAGMENTSIZE"] = new ParameterFragmentSize(this, Parameters["FRAGMENTSIZE"]); // additional parameter, individually for this driver |
result["fragmentsize"] = new ParameterFragmentSize(this, Parameters["fragmentsize"]); // additional parameter, individually for this driver |
176 |
return result; |
return result; |
177 |
} |
} |
178 |
|
|
259 |
} |
} |
260 |
|
|
261 |
String AudioOutputDeviceAlsa::Version() { |
String AudioOutputDeviceAlsa::Version() { |
262 |
String s = "$Revision: 1.4 $"; |
String s = "$Revision: 1.5 $"; |
263 |
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 |
264 |
} |
} |
265 |
|
|
269 |
static ParameterCard param_card(NULL); |
static ParameterCard param_card(NULL); |
270 |
static ParameterFragments param_fragments(NULL); |
static ParameterFragments param_fragments(NULL); |
271 |
static ParameterFragmentSize param_fragmentsize(NULL); |
static ParameterFragmentSize param_fragmentsize(NULL); |
272 |
available_parameters["CARD"] = ¶m_card; // additional parameter, individually for this driver |
available_parameters["card"] = ¶m_card; // additional parameter, individually for this driver |
273 |
available_parameters["FRAGMENTS"] = ¶m_fragments; // additional parameter, individually for this driver |
available_parameters["fragments"] = ¶m_fragments; // additional parameter, individually for this driver |
274 |
available_parameters["FRAGMENTSIZE"] = ¶m_fragmentsize; // additional parameter, individually for this driver |
available_parameters["fragmentsize"] = ¶m_fragmentsize; // additional parameter, individually for this driver |
275 |
return available_parameters; |
return available_parameters; |
276 |
} |
} |
277 |
|
|