diff --git a/sys/dev/sound/pcm/feeder_eq.c b/sys/dev/sound/pcm/feeder_eq.c --- a/sys/dev/sound/pcm/feeder_eq.c +++ b/sys/dev/sound/pcm/feeder_eq.c @@ -109,6 +109,7 @@ struct feed_eq_tone bass; struct feed_eq_coeff *coeff; uint32_t fmt; + uint32_t bps; uint32_t channels; uint32_t rate; uint32_t align; @@ -140,9 +141,9 @@ if (info->state == FEEDEQ_DISABLE) { j = count * info->channels; - dst += j * AFMT_BPS(info->fmt); + dst += j * info->bps; do { - dst -= AFMT_BPS(info->fmt); + dst -= info->bps; v = pcm_sample_read(dst, info->fmt, false); v = ((intpcm64_t)pmul * v) >> pshift; pcm_sample_write(dst, v, info->fmt, false); @@ -188,7 +189,7 @@ info->bass.o1[i] = v; pcm_sample_write(dst, v, info->fmt, true); - dst += AFMT_BPS(info->fmt); + dst += info->bps; i++; } while (--j != 0); } while (--count != 0); @@ -273,8 +274,9 @@ return (ENOMEM); info->fmt = AFMT_ENCODING(f->desc->in); + info->bps = AFMT_BPS(f->desc->in); info->channels = AFMT_CHANNEL(f->desc->in); - info->align = info->channels * AFMT_BPS(f->desc->in); + info->align = info->channels * info->bps; info->rate = FEEDEQ_RATE_MIN; info->treble.gain = FEEDEQ_L2GAIN(50); @@ -299,7 +301,7 @@ if (value < SND_CHN_MIN || value > SND_CHN_MAX) return (EINVAL); info->channels = (uint32_t)value; - info->align = info->channels * AFMT_BPS(f->desc->in); + info->align = info->channels * info->bps; feed_eq_reset(info); break; case FEEDEQ_RATE: