diff options
| author | Dave Bryant <bryant@rockbox.org> | 2005-07-04 06:38:00 +0000 |
|---|---|---|
| committer | Dave Bryant <bryant@rockbox.org> | 2005-07-04 06:38:00 +0000 |
| commit | dacbc16d5b2c2a113eab6b9295db12795d98e2cc (patch) | |
| tree | 6040249a9776880f02d478532028f41065a65451 /apps/codecs/libwavpack/float.c | |
| parent | 1d5f07b0a654ca0ee0b6f4785388801ed809af33 (diff) | |
| download | rockbox-dacbc16d5b2c2a113eab6b9295db12795d98e2cc.zip rockbox-dacbc16d5b2c2a113eab6b9295db12795d98e2cc.tar.gz rockbox-dacbc16d5b2c2a113eab6b9295db12795d98e2cc.tar.bz2 rockbox-dacbc16d5b2c2a113eab6b9295db12795d98e2cc.tar.xz | |
Added lossless encoding to WavPack library. Also made a few changes to
decoding stuff in preparation for future optimization and eliminated all tabs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7009 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libwavpack/float.c')
| -rw-r--r-- | apps/codecs/libwavpack/float.c | 90 |
1 files changed, 45 insertions, 45 deletions
diff --git a/apps/codecs/libwavpack/float.c b/apps/codecs/libwavpack/float.c index 3e678e8..2208e61 100644 --- a/apps/codecs/libwavpack/float.c +++ b/apps/codecs/libwavpack/float.c @@ -1,8 +1,8 @@ //////////////////////////////////////////////////////////////////////////// -// **** WAVPACK **** // -// Hybrid Lossless Wavefile Compressor // -// Copyright (c) 1998 - 2004 Conifer Software. // -// All Rights Reserved. // +// **** WAVPACK **** // +// Hybrid Lossless Wavefile Compressor // +// Copyright (c) 1998 - 2004 Conifer Software. // +// All Rights Reserved. // // Distributed under the BSD Software License (see license.txt) // //////////////////////////////////////////////////////////////////////////// @@ -16,7 +16,7 @@ int read_float_info (WavpackStream *wps, WavpackMetadata *wpmd) char *byteptr = wpmd->data; if (bytecnt != 4) - return FALSE; + return FALSE; wps->float_flags = *byteptr++; wps->float_shift = *byteptr++; @@ -28,35 +28,35 @@ int read_float_info (WavpackStream *wps, WavpackMetadata *wpmd) void float_values (WavpackStream *wps, long *values, long num_values) { while (num_values--) { - int shift_count = 0, exp = wps->float_max_exp; - f32 outval = { 0, 0, 0 }; - - if (*values) { - *values <<= wps->float_shift; - - if (*values < 0) { - *values = -*values; - outval.sign = 1; - } - - if (*values == 0x1000000) - outval.exponent = 255; - else { - if (exp) - while (!(*values & 0x800000) && --exp) { - shift_count++; - *values <<= 1; - } - - if (shift_count && (wps->float_flags & FLOAT_SHIFT_ONES)) - *values |= ((1 << shift_count) - 1); - - outval.mantissa = *values; - outval.exponent = exp; - } - } - - * (f32 *) values++ = outval; + int shift_count = 0, exp = wps->float_max_exp; + f32 outval = { 0, 0, 0 }; + + if (*values) { + *values <<= wps->float_shift; + + if (*values < 0) { + *values = -*values; + outval.sign = 1; + } + + if (*values == 0x1000000) + outval.exponent = 255; + else { + if (exp) + while (!(*values & 0x800000) && --exp) { + shift_count++; + *values <<= 1; + } + + if (shift_count && (wps->float_flags & FLOAT_SHIFT_ONES)) + *values |= ((1 << shift_count) - 1); + + outval.mantissa = *values; + outval.exponent = exp; + } + } + + * (f32 *) values++ = outval; } } @@ -66,18 +66,18 @@ void float_normalize (long *values, long num_values, int delta_exp) int exp; if (!delta_exp) - return; + return; while (num_values--) { - if ((exp = fvalues->exponent) == 0 || exp + delta_exp <= 0) - *fvalues = fzero; - else if (exp == 255 || (exp += delta_exp) >= 255) { - fvalues->exponent = 255; - fvalues->mantissa = 0; - } - else - fvalues->exponent = exp; - - fvalues++; + if ((exp = fvalues->exponent) == 0 || exp + delta_exp <= 0) + *fvalues = fzero; + else if (exp == 255 || (exp += delta_exp) >= 255) { + fvalues->exponent = 255; + fvalues->mantissa = 0; + } + else + fvalues->exponent = exp; + + fvalues++; } } |