+ /* Set the device to be opened. If set device_name is used,
+ * else device if set and lastly WAVE_MAPPER is the default */
+ device = WAVE_MAPPER;
+ if (pa_modargs_get_value_u32(ma, "device", &device) < 0) {
+ pa_log("failed to parse device argument");
+ goto fail;
+ }
+ if ((device_name = pa_modargs_get_value(ma, "device_name", NULL)) != NULL) {
+ unsigned int num_devices = waveOutGetNumDevs();
+ for (i = 0; i < num_devices; i++) {
+ if (waveOutGetDevCaps(i, &pwoc, sizeof(pwoc)) == MMSYSERR_NOERROR)
+ if (_stricmp(device_name, pwoc.szPname) == 0)
+ break;
+ }
+ if (i < num_devices)
+ device = i;
+ else {
+ pa_log("device not found: %s", device_name);
+ goto fail;
+ }
+ }
+ if (waveOutGetDevCaps(device, &pwoc, sizeof(pwoc)) == MMSYSERR_NOERROR)
+ device_name = pwoc.szPname;
+ else
+ device_name = "unknown";
+