mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
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:
parent
ebc775674a
commit
c48a4bc166
5 changed files with 15 additions and 5 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue