Skip to content
Permalink
Browse files

bcm2835: add fallback channel layouts if channel map API is not used

Should be more useful than just forcing stereo.

We can't match the exact legacy ALSA channel layouts, so this is a
"best effort" hack.

I'm not sure what happens if the application requests channel counts
that are not power-of-2s. The channel map API hopefully forces
applications which use the channel map API to request the correct
count by adding padding channels, but the bare API enforces
nothing. Possibly this could be added to rate_hw_constraint_channels
at a later point.
  • Loading branch information...
wm4 authored and popcornmix committed Apr 19, 2016
1 parent c401a50 commit 3c1634ffa342cf5e84e6bab12ec86ba0ca08cb36
Showing with 10 additions and 1 deletion.
  1. +10 −1 sound/arm/bcm2835-vchiq.c
@@ -598,7 +598,16 @@ int bcm2835_audio_set_params(bcm2835_alsa_stream_t * alsa_stream,
if (alsa_stream->chip->cea_chmap >= 0) {
chmap_value = (unsigned)alsa_stream->chip->cea_chmap << 24;
} else {
chmap_value = 0; /* force stereo */
/* fallback layouts for applications which do not use chmap API */
chmap_value = 0x00;
switch (channels) {
case 3: chmap_value = 0x01; break;
case 4: chmap_value = 0x03; break;
case 5: chmap_value = 0x07; break;
case 6: chmap_value = 0x0b; break;
case 7: chmap_value = 0x0f; break;
case 8: chmap_value = 0x13; break;
}
for (i = 0; i < 8; i++)
alsa_stream->chip->map_channels[i] = i;
}

0 comments on commit 3c1634f

Please sign in to comment.
You can’t perform that action at this time.