2023-11-13 Fred Gleason <fredg@paravelsystems.com>

* Fixed a bug in caed(8) that could cause play-outs from different
	hosts to cross-talk into each other's outputs when using a shared
	caed(8) instance.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason
2023-11-13 14:51:09 -05:00
parent 8d9e5e8005
commit fb8228914f
9 changed files with 72 additions and 11 deletions

View File

@@ -709,14 +709,16 @@ bool DriverAlsa::initialize(unsigned *next_cardnum)
setCardName(*next_cardnum,snd_ctl_card_info_get_longname(card_info));
snd_ctl_close(snd_ctl);
}
rda->station()->
setCardInputs(*next_cardnum,
alsa_capture_format[*next_cardnum].
channels/RD_DEFAULT_CHANNELS);
rda->station()->
setCardOutputs(*next_cardnum,
alsa_play_format[*next_cardnum].
channels/RD_DEFAULT_CHANNELS);
alsa_input_port_quantities[*next_cardnum]=
alsa_capture_format[*next_cardnum].channels/RD_DEFAULT_CHANNELS;
rda->station()->setCardInputs(*next_cardnum,
alsa_input_port_quantities.value(*next_cardnum));
alsa_output_port_quantities[*next_cardnum]=
alsa_play_format[*next_cardnum].channels/RD_DEFAULT_CHANNELS;
rda->station()->setCardOutputs(*next_cardnum,
alsa_output_port_quantities.value(*next_cardnum));
card++;
if(!pcm_opened) {
return card>0;
@@ -731,6 +733,18 @@ bool DriverAlsa::initialize(unsigned *next_cardnum)
}
int DriverAlsa::inputPortQuantity(int card) const
{
return alsa_input_port_quantities.value(card);
}
int DriverAlsa::outputPortQuantity(int card) const
{
return alsa_output_port_quantities.value(card);
}
bool DriverAlsa::loadPlayback(int card,QString wavename,int *stream)
{
#ifdef ALSA