[FFmpeg-cvslog] dnxhdenc: fix access outside of image

Christophe Gisquet git at videolan.org
Tue Oct 13 23:53:48 CEST 2015


ffmpeg | branch: master | Christophe Gisquet <christophe.gisquet at gmail.com> | Tue Oct 13 22:02:41 2015 +0200| [234369d0fd04f1ddfc10d6a73a1a0aa5cb7ea17c] | committer: James Almer

dnxhdenc: fix access outside of image

This is the same test as for the 8bit case.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=234369d0fd04f1ddfc10d6a73a1a0aa5cb7ea17c
---

 libavcodec/dnxhdenc.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c
index 1e14b8c..f4a7b98 100644
--- a/libavcodec/dnxhdenc.c
+++ b/libavcodec/dnxhdenc.c
@@ -776,11 +776,13 @@ static int dnxhd_mb_var_thread(AVCodecContext *avctx, void *arg,
             unsigned mb  = mb_y * ctx->m.mb_width + mb_x;
             int sum = 0;
             int sqsum = 0;
+            int bw = FFMIN(avctx->width - 16 * mb_x, 16);
+            int bh = FFMIN((avctx->height >> ctx->interlaced) - 16 * mb_y, 16);
             int mean, sqmean;
             int i, j;
             // Macroblocks are 16x16 pixels, unlike DCT blocks which are 8x8.
-            for (i = 0; i < 16; ++i) {
-                for (j = 0; j < 16; ++j) {
+            for (i = 0; i < bh; ++i) {
+                for (j = 0; j < bw; ++j) {
                     // Turn 16-bit pixels into 10-bit ones.
                     int const sample = (unsigned) pix[j] >> 6;
                     sum   += sample;



More information about the ffmpeg-cvslog mailing list