]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/pixlet.c
vaapi_vp9: Convert to use the new VAAPI hwaccel code
[ffmpeg] / libavcodec / pixlet.c
index e78b66635939b707ec0587583b41fb2d7c6009d7..c2583b10c754dd588282c6eb82a9d300fb3190be 100644 (file)
@@ -343,21 +343,18 @@ static int read_highpass(AVCodecContext *avctx, uint8_t *ptr, int plane, AVFrame
 
 static void lowpass_prediction(int16_t *dst, int16_t *pred, int width, int height, ptrdiff_t stride)
 {
-    int16_t *next, val;
+    int16_t val;
     int i, j;
 
     memset(pred, 0, width * sizeof(*pred));
 
     for (i = 0; i < height; i++) {
-        val     = pred[0] + dst[0];
-        dst[0]  = val;
-        pred[0] = val;
-        next    = dst + 2;
-        for (j = 1; j < width; j++, next++) {
-            val       = pred[j] + next[-1];
-            next[-1]  = val;
-            pred[j]   = val;
-            next[-1] += next[-2];
+        val    = pred[0] + dst[0];
+        dst[0] = pred[0] = val;
+        for (j = 1; j < width; j++) {
+            val     = pred[j] + dst[j];
+            dst[j]  = pred[j] = val;
+            dst[j] += dst[j-1];
         }
         dst += stride;
     }
@@ -504,8 +501,14 @@ static int decode_plane(AVCodecContext *avctx, int plane, AVPacket *avpkt, AVFra
     int i, ret;
 
     for (i = ctx->levels - 1; i >= 0; i--) {
-        ctx->scaling[plane][H][i] = 1000000.0f / sign_extend(bytestream2_get_be32(&ctx->gb), 32);
-        ctx->scaling[plane][V][i] = 1000000.0f / sign_extend(bytestream2_get_be32(&ctx->gb), 32);
+        int32_t h = sign_extend(bytestream2_get_be32(&ctx->gb), 32);
+        int32_t v = sign_extend(bytestream2_get_be32(&ctx->gb), 32);
+
+        if (!h || !v)
+            return AVERROR_INVALIDDATA;
+
+        ctx->scaling[plane][H][i] = 1000000.0f / h;
+        ctx->scaling[plane][V][i] = 1000000.0f / v;
     }
 
     bytestream2_skip(&ctx->gb, 4);