audioconvert: improve setup of quantization

Use the quantize value to specify how many bits to quantize to.
This commit is contained in:
Wim Taymans 2022-06-27 20:02:40 +02:00
parent 916050aacd
commit 67c2202044
3 changed files with 7 additions and 7 deletions

View file

@ -1396,16 +1396,16 @@ static int setup_out_convert(struct impl *this)
this->cpu_flags, out->conv.cpu_flags, out->conv.is_passthrough);
if (this->props.dither_noise > 0) {
this->dither.intensity = (calc_width(&dst_info) * 8) - 1;
this->dither.intensity -= SPA_MIN(this->dither.intensity, this->props.dither_noise);
this->dither.quantize = 32 - (calc_width(&dst_info) * 8);
this->dither.quantize += this->props.dither_noise;
this->dither.n_channels = dst_info.info.raw.channels;
this->dither.cpu_flags = this->cpu_flags;
if ((res = dither_init(&this->dither)) < 0)
return res;
spa_log_debug(this->log, "%p: dither noise:%d intensity:%d", this,
this->props.dither_noise, this->dither.intensity);
spa_log_info(this->log, "%p: dither noise:%d quantize:%d", this,
this->props.dither_noise, this->dither.quantize);
}
return 0;
}

View file

@ -79,10 +79,10 @@ int dither_init(struct dither *d)
if (info == NULL)
return -ENOTSUP;
if (d->intensity >= 32)
if (d->quantize >= 32)
return -EINVAL;
d->scale = 1.0f / (1ULL << (31 + d->intensity));
d->scale = 1.0f / (1ULL << (63 - d->quantize));
d->dither_size = DITHER_SIZE;
d->dither = calloc(d->dither_size + DITHER_OPS_MAX_OVERREAD +

View file

@ -33,7 +33,7 @@
#define DITHER_OPS_MAX_OVERREAD 16
struct dither {
uint32_t intensity;
uint32_t quantize;
#define DITHER_METHOD_NONE 0
#define DITHER_METHOD_RECTANGULAR 2
#define DITHER_METHOD_TRIANGULAR 3