- for (i = 0; i < blockstodecode; i++) {
- *samples++ = s->decoded0[i];
- if(s->channels == 2)
- *samples++ = s->decoded1[i];
+ switch (s->bps) {
+ case 8:
+ sample8 = (uint8_t *)s->frame.data[0];
+ for (i = 0; i < blockstodecode; i++) {
+ *sample8++ = (s->decoded0[i] + 0x80) & 0xff;
+ if (s->channels == 2)
+ *sample8++ = (s->decoded1[i] + 0x80) & 0xff;
+ }
+ break;
+ case 16:
+ sample16 = (int16_t *)s->frame.data[0];
+ for (i = 0; i < blockstodecode; i++) {
+ *sample16++ = s->decoded0[i];
+ if (s->channels == 2)
+ *sample16++ = s->decoded1[i];
+ }
+ break;
+ case 24:
+ sample24 = (int32_t *)s->frame.data[0];
+ for (i = 0; i < blockstodecode; i++) {
+ *sample24++ = s->decoded0[i] << 8;
+ if (s->channels == 2)
+ *sample24++ = s->decoded1[i] << 8;
+ }
+ break;