#include "audiodevice.h"
#include "audioalsa.h"
#include "bcsignals.h"
+#include "language.h"
#include "mutex.h"
#include "playbackconfig.h"
#include "preferences.h"
// This is required in the top thread for Alsa to work
alsa_leaks() {
ArrayList<char*> *alsa_titles = new ArrayList<char*>;
+ alsa_titles->set_array_delete();
AudioALSA::list_devices(alsa_titles, 0, MODEPLAY);
alsa_titles->remove_all_objects();
delete alsa_titles;
char string[BCTEXTLEN];
snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;
- devices->set_array_delete();
-
-
switch(mode)
{
case MODERECORD:
#define DEFAULT_DEVICE "default"
char *result = new char[strlen(DEFAULT_DEVICE) + 1];
devices->append(result);
- devices->set_array_delete(); // since we are allocating by new[]
strcpy(result, DEFAULT_DEVICE);
while(snd_card_next(&card) >= 0)
snd_ctl_close(handle);
}
+#ifdef HAVE_PACTL
// attempt to add pulseaudio "monitor" devices
// run: pactl list <sources>|<sinks>
// scan output for <Source/Sink> #n, Name: <device>
}
pclose(pactl);
}
+#endif
}
void AudioALSA::translate_name(char *output, char *input, int mode)
{
ArrayList<char*> titles;
+ titles.set_array_delete();
+
ArrayList<char*> pcm_titles;
+ pcm_titles.set_array_delete();
list_devices(&titles, 0, mode);
list_devices(&pcm_titles, 1, mode);
err = snd_pcm_hw_params_any(dsp, params);
if (err < 0) {
- fprintf(stderr, "AudioALSA::set_params: no PCM configurations available\n");
+ fprintf(stderr, "AudioALSA::set_params: ");
+ fprintf(stderr, _("no PCM configurations available\n"));
return 1;
}
params,
SND_PCM_ACCESS_RW_INTERLEAVED);
if(err) {
- fprintf(stderr, "AudioALSA::set_params: failed to set up "
- "interleaved device access.\n");
+ fprintf(stderr, "AudioALSA::set_params: ");
+ fprintf(stderr, _("failed to set up interleaved device access.\n"));
return 1;
}
params,
translate_format(bits));
if(err) {
- fprintf(stderr, "AudioALSA::set_params: failed to set output format.\n");
+ fprintf(stderr, "AudioALSA::set_params: ");
+ fprintf(stderr, _("failed to set output format.\n"));
return 1;
}
params,
channels);
if(err) {
- fprintf(stderr, "AudioALSA::set_params: Configured ALSA device "
- "does not support %d channel operation.\n",
+ fprintf(stderr, "AudioALSA::set_params: ");
+ fprintf(stderr, _("Configured ALSA device does not support %d channel operation.\n"),
channels);
return 1;
}
(unsigned int*)&samplerate,
(int*)0);
if(err) {
- fprintf(stderr, "AudioALSA::set_params: Configured ALSA device "
- "does not support %u Hz playback.\n",
+ fprintf(stderr, "AudioALSA::set_params: ");
+ fprintf(stderr, _(" Configured ALSA device does not support %u Hz playback.\n"),
(unsigned int)samplerate);
return 1;
}
translate_name(pcm_name, device->in_config->alsa_in_device,MODERECORD);
//printf("AudioALSA::open_input %s\n", pcm_name);
- err = snd_pcm_open(&dsp_in, device->in_config->alsa_in_device, stream, open_mode);
+ err = snd_pcm_open(&dsp_in, pcm_name, stream, open_mode);
if(err < 0) {
dsp_in = 0;
return 1;
}
- set_params(dsp_out, MODEPLAY,
+ err = set_params(dsp_out, MODEPLAY,
device->get_ochannels(),
device->out_config->alsa_out_bits,
device->out_samplerate,