makes last_out int32_t
authorMoritz Hanke <hanke@dkrz.de>
Tue, 9 Sep 2014 14:40:36 +0000 (16:40 +0200)
committerMathis Rosenhauer <rosenhauer@dkrz.de>
Fri, 24 Oct 2014 14:08:26 +0000 (16:08 +0200)
src/decode.c
src/decode.h

index 099fc44..a8c0afc 100644 (file)
@@ -68,8 +68,7 @@
     static void flush_##KIND(struct aec_stream *strm)                   \
     {                                                                   \
         uint32_t *flush_end, *bp, half_d;                               \
-        int32_t data;                                                   \
-        int64_t m;                                                      \
+        int32_t data, m;                                                \
         struct internal_state *state = strm->state;                     \
                                                                         \
         flush_end = state->rsip;                                        \
@@ -79,7 +78,7 @@
                 state->last_out = *state->rsi_buffer;                   \
                                                                         \
                 if (strm->flags & AEC_DATA_SIGNED) {                    \
-                    m = UINT64_C(1) << (strm->bits_per_sample - 1);     \
+                    m = UINT32_C(1) << (strm->bits_per_sample - 1);     \
                     /* Reference samples have to be sign extended */    \
                     state->last_out = (state->last_out ^ m) - m;        \
                 }                                                       \
                 state->flush_start++;                                   \
             }                                                           \
                                                                         \
+            data = state->last_out;                                     \
+                                                                        \
             if (state->xmin == 0) {                                     \
                                                                         \
               uint32_t xmax, med, d;                                    \
               med = state->xmax / 2 + 1;                                \
-              data = (uint32_t)state->last_out;                         \
               xmax = state->xmax;                                       \
                                                                         \
               for (bp = state->flush_start; bp < flush_end; bp++) {     \
             } else {                                                    \
                                                                         \
               int32_t xmax, d;                                          \
-              data = state->last_out;                                   \
               xmax = state->xmax;                                       \
                                                                         \
               for (bp = state->flush_start; bp < flush_end; bp++) {     \
index d3c6bb7..57a2ec8 100644 (file)
@@ -78,7 +78,7 @@ struct internal_state {
     void (*flush_output)(struct aec_stream *);
 
     /* previous output for post-processing */
-    int64_t last_out;
+    int32_t last_out;
 
     /* minimum integer for post-processing */
     int64_t xmin;