]> git.sesse.net Git - ffmpeg/commitdiff
avfilter/af_hdcd: Fix undefined shifts
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Fri, 26 Mar 2021 05:22:24 +0000 (06:22 +0100)
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>
Thu, 1 Apr 2021 12:06:02 +0000 (14:06 +0200)
Affected the filter-hdcd-* FATE tests.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
libavfilter/af_hdcd.c

index 251d03229a13b4afee4da09b345630410fdbaae3..978f63599b30f006d8f191f868e0fdffc3318e49 100644 (file)
@@ -1053,7 +1053,7 @@ static int hdcd_integrate(HDCDContext *ctx, hdcd_state *states, int channels, in
 
     for (j = result - 1; j >= 0; j--) {
         for (i = 0; i < channels; i++)
-            bits[i] |= (*(samples++) & 1) << j;
+            bits[i] |= (*(samples++) & 1U) << j;
         samples += stride - channels;
     }
 
@@ -1210,7 +1210,7 @@ static int hdcd_analyze(int32_t *samples, int count, int stride, int gain, int t
     int32_t *samples_end = samples + stride * count;
 
     for (i = 0; i < count; i++) {
-        samples[i * stride] <<= 15;
+        samples[i * stride] *= 1 << 15;
         if (mode == HDCD_ANA_PE) {
             int pel = (samples[i * stride] >> 16) & 1;
             int32_t sample = samples[i * stride];
@@ -1284,13 +1284,13 @@ static int hdcd_envelope(int32_t *samples, int count, int stride, int vbits, int
                 av_assert0(asample <= max_asample);
                 sample = sample >= 0 ? peaktab[asample] : -peaktab[asample];
             } else
-                sample <<= shft;
+                sample *= (1 << shft);
 
             samples[i * stride] = sample;
         }
     } else {
         for (i = 0; i < count; i++)
-            samples[i * stride] <<= shft;
+            samples[i * stride] *= (1 << shft);
     }
 
     if (gain <= target_gain) {