+ if (_input_audio_device == d) {
+ return 0;
+ }
+ _input_audio_device = d;
+
+ if (d == get_standard_device_name(DeviceNone)) {
+ _input_audio_device_info.valid = false;
+ return 0;
+ }
+ std::string alsa_device;
+ std::map<std::string, std::string> devices;
+
+ get_alsa_audio_device_names(devices, HalfDuplexIn);
+ for (std::map<std::string, std::string>::const_iterator i = devices.begin (); i != devices.end(); ++i) {
+ if (i->first == d) {
+ alsa_device = i->second;
+ break;
+ }
+ }
+ if (alsa_device == "") {
+ _input_audio_device_info.valid = false;
+ return 1;
+ }
+ /* device will be busy once used, hence cache the parameters */
+ /* return */ get_alsa_device_parameters (alsa_device.c_str(), true, &_input_audio_device_info);
+ return 0;
+}
+
+int
+AlsaAudioBackend::set_output_device_name (const std::string& d)
+{
+ if (_output_audio_device == d) {
+ return 0;
+ }
+
+ _output_audio_device = d;
+
+ if (d == get_standard_device_name(DeviceNone)) {
+ _output_audio_device_info.valid = false;
+ return 0;
+ }
+ std::string alsa_device;
+ std::map<std::string, std::string> devices;
+
+ get_alsa_audio_device_names(devices, HalfDuplexOut);
+ for (std::map<std::string, std::string>::const_iterator i = devices.begin (); i != devices.end(); ++i) {
+ if (i->first == d) {
+ alsa_device = i->second;
+ break;
+ }
+ }
+ if (alsa_device == "") {
+ _output_audio_device_info.valid = false;
+ return 1;
+ }
+ /* return */ get_alsa_device_parameters (alsa_device.c_str(), true, &_output_audio_device_info);