From patchwork Sat May 11 10:19:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Nagy X-Patchwork-Id: 13070 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 894024482E0 for ; Sat, 11 May 2019 13:19:43 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 61B9868A72C; Sat, 11 May 2019 13:19:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yw1-f42.google.com (mail-yw1-f42.google.com [209.85.161.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5FF986882B3 for ; Sat, 11 May 2019 13:19:36 +0300 (EEST) Received: by mail-yw1-f42.google.com with SMTP id t5so948655ywf.10 for ; Sat, 11 May 2019 03:19:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=exYavNQVyxZhn9kB+3s7XL23KjBHu2aLgY7vDCJHmx8=; b=hgszaeFeBEUjOK0kBHr6MMJdc6nGGqumpwnUsU0oCrHKhoB3pIs9BhM3k573nBinzg OqK2Rgz6i4JLSGz+SVXxhgD97U2DmCosMLl3aas2qSnxecYWhWCYvUIGX2NOx8NnbSJH fqZ0HtS1LrFrS3DivWtUOTYLFOZGOsxU/a/iUaz7haDFQ1kR6Hv7SZgAhRpwj808l3Ya O7QvwLbJSVCjUDKLEshYOugQvPGVBEiN4sUnXY17GaSkFFznK7H139q2/ZjxxzuRBgI0 8HxeMbm8S0FbQhyenYVu5CrWMnwXbGm//X7FEao9m3aJ1b4umSrAsgVWojZQv+aRA4Vf zNVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=exYavNQVyxZhn9kB+3s7XL23KjBHu2aLgY7vDCJHmx8=; b=b9OCnACvgGU6Szjq8jdGFD/o4DaN5/NlTeP/As5OzaCn6DpkhVC2Tg8Bz7oyrCiaVz cEY8tZXqhT01hAs8BhdzOkDqWvqTgbQazroO2bYzggYGRfZ1XovQ7kK+ZJKFwTjAcjmI 80Wk0pKO7A4BKhkfBnB4OOnDUW+0XnQGzBWlV4ugYXj9H9rIk+VxrqXtOCyCo46yvbAX CIsn1rCMkLKiMYSHipoz0j8XH6N818sb6PUKGSss9rki7pLI/CZ8Nmwyokyl9cueS/eD dvctQArC27Ku382o0Z0x/FKxM3r+MaNJZ3vQeFbIn7Dz0iV3/986/1HQTVGGuaFnKTuO yD/g== X-Gm-Message-State: APjAAAUYUDY9tz96f9Fi2DeGMPuKbCODvoYJy4EOUj/lspNI5ayxdtZf pgAx6rbCId2k9S5T+Z/zGQtncoLaqjWlnRJ/MjuWe0k2sBnjVA== X-Google-Smtp-Source: APXvYqxRytQaXykPW0DnAvwu/Sn5ancJDQqkGNhzUKUcj9uh/0PSGRY6Y0v6d5IIkXGY1CD/QkU9egsB+FOZ4l7jniQ= X-Received: by 2002:a81:7092:: with SMTP id l140mr8313730ywc.316.1557569974564; Sat, 11 May 2019 03:19:34 -0700 (PDT) MIME-Version: 1.0 From: Robert Nagy Date: Sat, 11 May 2019 12:19:22 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] vf_thumbnail: support alpha X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavfilter/vf_thumbnail.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) // keep a reference of each frame s->frames[s->n].buf = frame; @@ -143,9 +144,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) // update current frame RGB histogram for (j = 0; j < inlink->h; j++) { for (i = 0; i < inlink->w; i++) { - hist[0*256 + p[i*3 ]]++; - hist[1*256 + p[i*3 + 1]]++; - hist[2*256 + p[i*3 + 2]]++; + hist[0*256 + p[i*stride ]]++; + hist[1*256 + p[i*stride + 1]]++; + hist[2*256 + p[i*stride + 2]]++; } p += frame->linesize[0]; } @@ -197,6 +198,7 @@ static int query_formats(AVFilterContext *ctx) { static const enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24, + AV_PIX_FMT_RGBA, AV_PIX_FMT_BGRA, AV_PIX_FMT_NONE }; AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts); diff --git a/libavfilter/vf_thumbnail.c b/libavfilter/vf_thumbnail.c index 0effdc91e9..30bb0dfdb8 100644 --- a/libavfilter/vf_thumbnail.c +++ b/libavfilter/vf_thumbnail.c @@ -136,6 +136,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) AVFilterLink *outlink = ctx->outputs[0]; int *hist = s->frames[s->n].histogram; const uint8_t *p = frame->data[0]; + int stride = frame->format == AV_PIX_FMT_BGRA || frame->format == AV_PIX_FMT_RGBA ? 4 : 3;