Merge commit '1173320249745eab01c901a39054fc0fced33c87'
[ffmpeg.git] / libavcodec / wavpackenc.c
index 3cc74bd..66ebf2f 100644 (file)
 #include "wavpack.h"
 
 #define UPDATE_WEIGHT(weight, delta, source, result) \
-    if (source && result) { \
-        int32_t s = (int32_t) (source ^ result) >> 31; \
-        weight = (delta ^ s) + (weight - s); \
+    if ((source) && (result)) { \
+        int32_t s = (int32_t) ((source) ^ (result)) >> 31; \
+        weight = ((delta) ^ s) + ((weight) - s); \
     }
 
-#define APPLY_WEIGHT_F(weight, sample) (((((sample & 0xffff) * weight) >> 9) + \
-    (((sample & ~0xffff) >> 9) * weight) + 1) >> 1)
+#define APPLY_WEIGHT_F(weight, sample) ((((((sample) & 0xffff) * (weight)) >> 9) + \
+    ((((sample) & ~0xffff) >> 9) * (weight)) + 1) >> 1)
 
-#define APPLY_WEIGHT_I(weight, sample) ((weight * sample + 512) >> 10)
+#define APPLY_WEIGHT_I(weight, sample) (((weight) * (sample) + 512) >> 10)
 
-#define APPLY_WEIGHT(weight, sample) (sample != (short) sample ? \
+#define APPLY_WEIGHT(weight, sample) ((sample) != (short) (sample) ? \
     APPLY_WEIGHT_F(weight, sample) : APPLY_WEIGHT_I (weight, sample))
 
 #define CLEAR(destin) memset(&destin, 0, sizeof(destin));
@@ -2482,7 +2482,7 @@ static int wavpack_encode_block(WavPackEncodeContext *s,
                                 uint8_t *out, int out_size)
 {
     int block_size, start, end, data_size, tcount, temp, m = 0;
-    int i, j, ret, got_extra = 0, nb_samples = s->block_samples;
+    int i, j, ret = 0, got_extra = 0, nb_samples = s->block_samples;
     uint32_t crc = 0xffffffffu;
     struct Decorr *dpp;
     PutByteContext pb;
@@ -2531,9 +2531,11 @@ static int wavpack_encode_block(WavPackEncodeContext *s,
 
     if ((s->flags & WV_FLOAT_DATA) || (s->flags & MAG_MASK) >> MAG_LSB >= 24) {
         av_fast_padded_malloc(&s->orig_l, &s->orig_l_size, sizeof(int32_t) * nb_samples);
-        av_fast_padded_malloc(&s->orig_r, &s->orig_r_size, sizeof(int32_t) * nb_samples);
         memcpy(s->orig_l, samples_l, sizeof(int32_t) * nb_samples);
-        memcpy(s->orig_r, samples_r, sizeof(int32_t) * nb_samples);
+        if (!(s->flags & WV_MONO_DATA)) {
+            av_fast_padded_malloc(&s->orig_r, &s->orig_r_size, sizeof(int32_t) * nb_samples);
+            memcpy(s->orig_r, samples_r, sizeof(int32_t) * nb_samples);
+        }
 
         if (s->flags & WV_FLOAT_DATA)
             got_extra = scan_float(s, samples_l, samples_r, nb_samples);