aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Bultel <thierry.bultel@iot.bzh>2019-01-16 14:07:21 +0100
committerThierry Bultel <thierry.bultel@iot.bzh>2019-01-16 14:07:21 +0100
commit67299f948f40afc2d506ba92e78d7066ea925485 (patch)
tree9d1f61571029bd0b9a8a3c104f3d604fba5dd30d
parent1103db258f1864b96565c3789bd91bd4ffadc7a7 (diff)
bluetooth sco: fixed the softvol open error
This fixes #SPEC-2125. The fix consists in specifying the number of channels in the softvol pcm configuration. When it is not set, the libasound detects a configuration mismatch (the default number of channels being 2), and attempts to remove the sotfvol control, which for unknown reason, (broken support on kernel side ?) randomly fails. Change-Id: I816b623715e413452e6793ee519e97fac6fdde43 Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
-rw-r--r--plugins/alsa/alsa-api-pcm.c2
-rw-r--r--plugins/alsa/alsa-plug-route.c2
-rw-r--r--plugins/alsa/alsa-plug-vol.c4
3 files changed, 5 insertions, 3 deletions
diff --git a/plugins/alsa/alsa-api-pcm.c b/plugins/alsa/alsa-api-pcm.c
index 036f158..ce74982 100644
--- a/plugins/alsa/alsa-api-pcm.c
+++ b/plugins/alsa/alsa-api-pcm.c
@@ -492,7 +492,7 @@ static void pcmChannelsDestroy(SoftMixerT * mixer, AlsaSndPcmT * pcm) {
PUBLIC void ApiPcmDelete(SoftMixerT * mixer, AlsaSndPcmT * pcm) {
- AFB_ApiDebug(mixer->api, "%s: pcm %s\n", __func__, pcm->uid);
+ AFB_ApiDebug(mixer->api, "%s: pcm %s", __func__, pcm->uid);
free(pcm->apiVerbHandle);
AlsaSndCtlT * card = pcm->sndcard;
diff --git a/plugins/alsa/alsa-plug-route.c b/plugins/alsa/alsa-plug-route.c
index ebc7074..a192e03 100644
--- a/plugins/alsa/alsa-plug-route.c
+++ b/plugins/alsa/alsa-plug-route.c
@@ -151,7 +151,7 @@ PUBLIC AlsaPcmCtlT* AlsaCreateRoute(SoftMixerT *mixer, AlsaSndZoneT *zone, int o
pcmRoute->isPcmPlug = true;
}
- // temporary store to unable multiple channel to route to the same port
+ // temporary store to enable multiple channel to route to the same port
snd_config_t **cports = alloca(zone->nbSinks * sizeof (void*));
memset(cports, 0, zone->nbSinks * sizeof (void*));
diff --git a/plugins/alsa/alsa-plug-vol.c b/plugins/alsa/alsa-plug-vol.c
index 67400a5..09025c4 100644
--- a/plugins/alsa/alsa-plug-vol.c
+++ b/plugins/alsa/alsa-plug-vol.c
@@ -32,7 +32,7 @@ PUBLIC AlsaPcmCtlT *AlsaCreateSoftvol(SoftMixerT *mixer, AlsaStreamAudioT *strea
int error = 0;
AlsaPcmCtlT *pcmVol = NULL;
- AFB_ApiDebug(mixer->api, "%s create SOFTVOL on %s", __func__, slaveid);
+ AFB_ApiDebug(mixer->api, "%s create SOFTVOL on %s (nb channels=%d)", __func__, slaveid, stream->params->channels);
if (asprintf(&cardid, "softvol-%s", stream->uid) == -1) {
SOFTMIXER_NOMEM(mixer->api);
goto OnErrorExit;
@@ -70,6 +70,8 @@ PUBLIC AlsaPcmCtlT *AlsaCreateSoftvol(SoftMixerT *mixer, AlsaStreamAudioT *strea
error += snd_config_add(controlConfig, elemConfig);
error += snd_config_imake_integer(&elemConfig, "card", sndcard->cid.cardidx);
error += snd_config_add(controlConfig, elemConfig);
+ error += snd_config_imake_integer(&elemConfig, "count", stream->params->channels);
+ error += snd_config_add(controlConfig, elemConfig);
error += snd_config_add(streamConfig, controlConfig);
if (error) goto OnErrorExit;