xmin/xmax all 32 bits.
authorMathis Rosenhauer <rosenhauer@dkrz.de>
Fri, 24 Oct 2014 14:55:18 +0000 (16:55 +0200)
committerMathis Rosenhauer <rosenhauer@dkrz.de>
Fri, 24 Oct 2014 14:55:18 +0000 (16:55 +0200)
src/decode.c
src/decode.h
src/encode.c

index f3b94e8..d89eb2d 100644 (file)
@@ -715,11 +715,11 @@ int aec_decode_init(struct aec_stream *strm)
     }
 
     if (strm->flags & AEC_DATA_SIGNED) {
-        state->xmin = -(INT64_C(1) << (strm->bits_per_sample - 1));
-        state->xmax = (UINT64_C(1) << (strm->bits_per_sample - 1)) - 1;
+        state->xmax = UINT32_MAX >> (32 - strm->bits_per_sample + 1);
+        state->xmin = ~state->xmax;
     } else {
         state->xmin = 0;
-        state->xmax = (UINT64_C(1) << strm->bits_per_sample) - 1;
+        state->xmax = UINT32_MAX >> (32 - strm->bits_per_sample);
     }
 
     state->in_blklen = (strm->block_size * strm->bits_per_sample
index 57a2ec8..6dee669 100644 (file)
@@ -81,10 +81,10 @@ struct internal_state {
     int32_t last_out;
 
     /* minimum integer for post-processing */
-    int64_t xmin;
+    uint32_t xmin;
 
     /* maximum integer for post-processing */
-    int64_t xmax;
+    uint32_t xmax;
 
      /* length of uncompressed input block should be the longest
         possible block */
index dd72239..1c36008 100644 (file)
@@ -851,12 +851,12 @@ int aec_encode_init(struct aec_stream *strm)
     state->rsi_len = strm->rsi * strm->block_size * state->bytes_per_sample;
 
     if (strm->flags & AEC_DATA_SIGNED) {
-        state->xmax = (UINT64_C(1) << (strm->bits_per_sample - 1)) - 1;
+        state->xmax = UINT32_MAX >> (32 - strm->bits_per_sample + 1);
         state->xmin = ~state->xmax;
         state->preprocess = preprocess_signed;
     } else {
         state->xmin = 0;
-        state->xmax = (UINT64_C(1) << strm->bits_per_sample) - 1;
+        state->xmax = UINT32_MAX >> (32 - strm->bits_per_sample);
         state->preprocess = preprocess_unsigned;
     }