diff options
-rw-r--r-- | tools/aif2pcm/main.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/tools/aif2pcm/main.c b/tools/aif2pcm/main.c index a2c3bcd5c..b7058f0c8 100644 --- a/tools/aif2pcm/main.c +++ b/tools/aif2pcm/main.c @@ -400,11 +400,9 @@ struct Bytes *delta_compress(struct Bytes *pcm) break; } hi = 0; - diff = pcm->data[i++] - base; - if (diff > 49) - { - diff = -diff; - } + diff = ((int8_t)pcm->data[i++]) - base; + if (diff > 49) diff = 49; + if (diff < -64) diff = -64; if (diff < 0) { for (l = 8; l < 16; l++) @@ -429,8 +427,9 @@ struct Bytes *delta_compress(struct Bytes *pcm) } for (k = 0; k < 31; k++) { - diff = pcm->data[i++] - base; - if (diff > 49) diff = -diff; + diff = ((int8_t)pcm->data[i++]) - base; + if (diff > 49) diff = 49; + if (diff < -64) diff = -64; if (diff < 0) { for (l = 8; l < 16; l++) @@ -453,8 +452,9 @@ struct Bytes *delta_compress(struct Bytes *pcm) { break; } - diff = pcm->data[i++] - base; - if (diff > 49) diff = -diff; + diff = ((int8_t)pcm->data[i++]) - base; + if (diff > 49) diff = 49; + if (diff < -64) diff = -64; if (diff < 0) { for (l = 8; l < 16; l++) |