X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Faudioalsa.C;h=c8a21f6cb62053d600043201480be1a5e30538c7;hb=4b6c39e6cf4a3fd9c1b347db6de686ab55d6cac8;hp=adb6c8bb0b9d80def3eaf073477d9ea9e714f13e;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/audioalsa.C b/cinelerra-5.1/cinelerra/audioalsa.C index adb6c8bb..c8a21f6c 100644 --- a/cinelerra-5.1/cinelerra/audioalsa.C +++ b/cinelerra-5.1/cinelerra/audioalsa.C @@ -22,6 +22,7 @@ #include "audiodevice.h" #include "audioalsa.h" #include "bcsignals.h" +#include "language.h" #include "mutex.h" #include "playbackconfig.h" #include "preferences.h" @@ -58,6 +59,7 @@ public: // This is required in the top thread for Alsa to work alsa_leaks() { ArrayList *alsa_titles = new ArrayList; + alsa_titles->set_array_delete(); AudioALSA::list_devices(alsa_titles, 0, MODEPLAY); alsa_titles->remove_all_objects(); delete alsa_titles; @@ -74,9 +76,6 @@ void AudioALSA::list_devices(ArrayList *devices, int pcm_title, int mode) char string[BCTEXTLEN]; snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK; - devices->set_array_delete(); - - switch(mode) { case MODERECORD: @@ -95,7 +94,6 @@ void AudioALSA::list_devices(ArrayList *devices, int pcm_title, int mode) #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) @@ -159,6 +157,7 @@ void AudioALSA::list_devices(ArrayList *devices, int pcm_title, int mode) snd_ctl_close(handle); } +#ifdef HAVE_PACTL // attempt to add pulseaudio "monitor" devices // run: pactl list | // scan output for #n, Name: @@ -214,12 +213,16 @@ void AudioALSA::list_devices(ArrayList *devices, int pcm_title, int mode) } pclose(pactl); } +#endif } void AudioALSA::translate_name(char *output, char *input, int mode) { ArrayList titles; + titles.set_array_delete(); + ArrayList pcm_titles; + pcm_titles.set_array_delete(); list_devices(&titles, 0, mode); list_devices(&pcm_titles, 1, mode); @@ -271,7 +274,8 @@ int AudioALSA::set_params(snd_pcm_t *dsp, int 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; } @@ -279,8 +283,8 @@ int AudioALSA::set_params(snd_pcm_t *dsp, int mode, 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; } @@ -288,7 +292,8 @@ int AudioALSA::set_params(snd_pcm_t *dsp, int mode, 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; } @@ -296,8 +301,8 @@ int AudioALSA::set_params(snd_pcm_t *dsp, int mode, 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; } @@ -307,8 +312,8 @@ int AudioALSA::set_params(snd_pcm_t *dsp, int mode, (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; } @@ -382,7 +387,7 @@ int AudioALSA::open_input() 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; @@ -427,7 +432,7 @@ int AudioALSA::open_output() 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,