[FFmpeg-devel] [PATCH] fix issues with transparent crop. (see https://trac.ffmpeg.org/ticket/7890)
Bjorn Roche
bjorn at giphy.com
Thu May 9 19:23:11 EEST 2019
This patch should be attributed to Jacob Graff <Jacob at giphy.com>.
On Thu, May 9, 2019 at 10:37 AM Bjorn Roche <bjorn at giphy.com> wrote:
> From: Bjorn Roche <bjorn at xowave.com>
>
> ---
> libavcodec/gif.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/libavcodec/gif.c b/libavcodec/gif.c
> index 94c8b1af49..d7768b4426 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;
> }
> --
> 2.19.1
>
>
--
Bjorn Roche
Engineering Manager
bjorn at giphy.com
More information about the ffmpeg-devel
mailing list