diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-11-06 22:19:59 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-11-06 22:19:59 +0100 |
commit | b0a61bc09119ead66532a7af64c0a018969bb690 (patch) | |
tree | cb9c442618539019da198db911c0f0cc25eea303 | |
parent | 61269254d0d5cc8e8e425cfb47774ec830dec2a3 (diff) | |
parent | a60001871e67311f413affdca45039f1734b206a (diff) |
merge
-rw-r--r-- | sys/src/cmd/audio/mp3dec/main.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/src/cmd/audio/mp3dec/main.c b/sys/src/cmd/audio/mp3dec/main.c index 50a000e06..1aef43e0c 100644 --- a/sys/src/cmd/audio/mp3dec/main.c +++ b/sys/src/cmd/audio/mp3dec/main.c @@ -46,7 +46,7 @@ output(void *, struct mad_header const* header, struct mad_pcm *pcm) rate = pcm->samplerate; chans = pcm->channels; - snprint(fmt, sizeof(fmt), "s32r%dc%d", rate, chans); + snprint(fmt, sizeof(fmt), "s%dr%dc%d", MAD_F_FRACBITS+1, rate, chans); if(ifd >= 0){ close(ifd); @@ -82,6 +82,13 @@ output(void *, struct mad_header const* header, struct mad_pcm *pcm) p = buf + j*4; for(i=0; i < pcm->length; i++){ v = *s++; + + /* clipping */ + if(v >= MAD_F_ONE) + v = MAD_F_ONE-1; + else if(v < -MAD_F_ONE) + v = -MAD_F_ONE; + p[0] = v, v>>=8; p[1] = v, v>>=8; p[2] = v, v>>=8; |