mirror of
https://github.com/opnsense/src.git
synced 2026-06-10 17:22:46 -04:00
Increase the allowed maximum number of audio channels from 31 to 127
in the PCM feeder mixer. Without this change a value of 32 channels is treated like zero, due to using a mask of 0x1f, causing a kernel assert when trying to playback bitperfect 32-channel audio. Also update the AWK script which is generating the division tables to handle more than 18 channels. This commit complements r282650. MFC after: 3 days
This commit is contained in:
parent
b6be31c7ca
commit
0f86d40bf5
2 changed files with 7 additions and 7 deletions
|
|
@ -131,10 +131,10 @@ static struct feed_mixer_info feed_mixer_info_tab[] = {
|
|||
sizeof(feed_mixer_info_tab[0])))
|
||||
|
||||
#define FEEDMIXER_DATA(i, c) ((void *) \
|
||||
((uintptr_t)((((i) & 0x1f) << 5) | \
|
||||
((c) & 0x1f))))
|
||||
#define FEEDMIXER_INFOIDX(d) ((uint32_t)((uintptr_t)(d) >> 5) & 0x1f)
|
||||
#define FEEDMIXER_CHANNELS(d) ((uint32_t)((uintptr_t)(d)) & 0x1f)
|
||||
((uintptr_t)((((i) & 0x1f) << 7) | \
|
||||
((c) & 0x7f))))
|
||||
#define FEEDMIXER_INFOIDX(d) ((uint32_t)((uintptr_t)(d) >> 7) & 0x1f)
|
||||
#define FEEDMIXER_CHANNELS(d) ((uint32_t)((uintptr_t)(d)) & 0x7f)
|
||||
|
||||
static int
|
||||
feed_mixer_init(struct pcm_feeder *f)
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ BEGIN {
|
|||
FXSHIFT = 16;
|
||||
FXONE = shl(1, FXSHIFT);
|
||||
|
||||
SND_CHN_MAX = 18;
|
||||
SND_CHN_MAX = 127;
|
||||
|
||||
PCM_8_BPS = 1;
|
||||
PCM_16_BPS = 2;
|
||||
|
|
@ -103,9 +103,9 @@ BEGIN {
|
|||
printf("/*\n");
|
||||
printf(" * Fast unsigned 32bit integer division and rounding, accurate for\n");
|
||||
printf(" * x = 1 - %d. This table should be enough to handle possible\n", FXONE);
|
||||
printf(" * division for 1 - 72 (more can be generated though..).\n");
|
||||
printf(" * division for 1 - 508 (more can be generated though..).\n");
|
||||
printf(" *\n");
|
||||
printf(" * 72 = SND_CHN_MAX * PCM_32_BPS, which is why....\n");
|
||||
printf(" * 508 = SND_CHN_MAX * PCM_32_BPS, which is why....\n");
|
||||
printf(" */\n\n");
|
||||
|
||||
printf("static const uint32_t snd_fxdiv_table[][2] = {\n");
|
||||
|
|
|
|||
Loading…
Reference in a new issue