Browse Source

dnxhdenc: fix access outside of image

This is the same test as for the 8bit case.
tags/n3.0
Christophe Gisquet James Almer 10 years ago
parent
commit
234369d0fd
1 changed files with 4 additions and 2 deletions
  1. +4
    -2
      libavcodec/dnxhdenc.c

+ 4
- 2
libavcodec/dnxhdenc.c View File

@@ -776,11 +776,13 @@ static int dnxhd_mb_var_thread(AVCodecContext *avctx, void *arg,
unsigned mb = mb_y * ctx->m.mb_width + mb_x; unsigned mb = mb_y * ctx->m.mb_width + mb_x;
int sum = 0; int sum = 0;
int sqsum = 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 mean, sqmean;
int i, j; int i, j;
// Macroblocks are 16x16 pixels, unlike DCT blocks which are 8x8. // 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. // Turn 16-bit pixels into 10-bit ones.
int const sample = (unsigned) pix[j] >> 6; int const sample = (unsigned) pix[j] >> 6;
sum += sample; sum += sample;


Loading…
Cancel
Save