From 0158dd14a35ff88c4837d4b463e1f393040884c9 Mon Sep 17 00:00:00 2001 From: Jacob Graff Date: Thu, 9 May 2019 16:45:56 -0400 Subject: avcodec/gif: fix issues with transparent crop Resolves issues with some transparent gifs. --- libavcodec/gif.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'libavcodec') diff --git a/libavcodec/gif.c b/libavcodec/gif.c index 9f2f30d863..8c3bfdcc46 100644 --- a/libavcodec/gif.c +++ b/libavcodec/gif.c @@ -136,7 +136,7 @@ static void gif_crop_translucent(AVCodecContext *avctx, while (*y_start < y_end) { int is_trans = 1; for (int i = 0; i < w; i++) { - if (buf[w * *y_start + i] != trans) { + if (buf[linesize * *y_start + i] != trans) { is_trans = 0; break; } @@ -148,10 +148,10 @@ static void gif_crop_translucent(AVCodecContext *avctx, } // crop bottom - while (y_end < h) { + while (y_end > *y_start) { int is_trans = 1; for (int i = 0; i < w; i++) { - if (buf[w * y_end + i] != trans) { + if (buf[linesize * y_end + i] != trans) { is_trans = 0; break; } @@ -165,7 +165,7 @@ static void gif_crop_translucent(AVCodecContext *avctx, while (*x_start < x_end) { int is_trans = 1; for (int i = *y_start; i < y_end; i++) { - if (buf[w * i + *x_start] != trans) { + if (buf[linesize * i + *x_start] != trans) { is_trans = 0; break; } @@ -176,10 +176,10 @@ static void gif_crop_translucent(AVCodecContext *avctx, } // crop right - while (x_end < w) { + while (x_end > *x_start) { int is_trans = 1; for (int i = *y_start; i < y_end; i++) { - if (buf[w * i + x_end] != trans) { + if (buf[linesize * i + x_end] != trans) { is_trans = 0; break; } -- cgit v1.2.3