pw-cat: fix DSF playback again

Make the DSD buffers a little bigger because we scale down the rate.
Read an interleaved number of samples to fill one quantum.
This commit is contained in:
Wim Taymans 2022-04-28 12:32:08 +02:00
parent ebc775674a
commit c48a4bc166
5 changed files with 15 additions and 5 deletions

View file

@ -222,6 +222,8 @@ dsf_file_read(struct dsf_file *f, void *data, size_t samples, const struct dsf_l
offset = block * f->info.blocksize * f->info.channels;
pos = f->offset % f->info.blocksize;
samples *= step;
for (total = 0; total < samples && offset + pos < f->info.length; total++) {
const uint8_t *s = f->p + offset + pos;
uint32_t i;

View file

@ -709,10 +709,11 @@ on_param_changed(void *userdata, uint32_t id, const struct spa_pod *param)
data->stride = data->dsf.layout.channels * SPA_ABS(data->dsf.layout.interleave);
if (data->verbose) {
printf("DSD: channels:%d bitorder:%s interleave:%d\n",
printf("DSD: channels:%d bitorder:%s interleave:%d stride:%d\n",
data->dsf.layout.channels,
data->dsf.layout.lsb ? "lsb" : "msb",
data->dsf.layout.interleave);
data->dsf.layout.interleave,
data->stride);
}
}