]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/dnxhdenc.c
Theora 3.4 doesn't exist; these fields were misunderstandings of the spec
[ffmpeg] / libavcodec / dnxhdenc.c
index db0f09dd78605adc751b7827eeab7c9ceebcc309..dbe9e083b1cf5c27ae1997d21cb302be333c73d4 100644 (file)
@@ -414,7 +414,7 @@ static int dnxhd_calc_bits_thread(AVCodecContext *avctx, void *arg, int jobnr, i
         dnxhd_get_blocks(ctx, mb_x, mb_y);
 
         for (i = 0; i < 8; i++) {
-            DECLARE_ALIGNED_16(DCTELEM, block[64]);
+            DECLARE_ALIGNED_16(DCTELEM, block)[64];
             DCTELEM *src_block = ctx->blocks[i];
             int overflow, nbits, diff, last_index;
             int n = dnxhd_switch_matrix(ctx, i);
@@ -574,9 +574,11 @@ static int dnxhd_encode_rdo(AVCodecContext *avctx, DNXHDEncContext *ctx)
             last_higher = FFMAX(lambda, last_higher);
             if (last_lower != INT_MAX)
                 lambda = (lambda+last_lower)>>1;
+            else if ((int64_t)lambda + up_step > INT_MAX)
+                return -1;
             else
                 lambda += up_step;
-            up_step *= 5;
+            up_step = FFMIN((int64_t)up_step*5, INT_MAX);
             down_step = 1<<LAMBDA_FRAC_BITS;
         }
     }