From patchwork Tue Oct 17 21:42:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 5608 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.90 with SMTP id m26csp655656jah; Tue, 17 Oct 2017 14:42:35 -0700 (PDT) X-Received: by 10.28.133.2 with SMTP id h2mr4225436wmd.67.1508276555288; Tue, 17 Oct 2017 14:42:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508276555; cv=none; d=google.com; s=arc-20160816; b=ADO4gpdeBrHkRwp1C0UbUiQlNcKsf1LbUPGjNZ3cl96iWvalTNAaIxreyq32tcDwcm /v0S5W3aV6J9YoIQzG/XJLl6fyz2GihFmlR9SMluUHgxSrNSXAV6u6aBg5CIJfhDuJ5l F86FkoHNswfPnFMPQNfD6umSeTr1DAeitluK1r7+DrMrPm49tX7OijwKYwQZrESMP3wa tOtgoh5SFGxWOmOUugQhYu7q0+HxEAhk2kUANfbLXMOpwC15S36PeOQPQWVhBZUeZIeJ D/ZVDX2UobDTm2z5FlzN+ohFPl4qB+a9cgYHdeKTOWu6H4I91ahU7SMkArEDrnIkTug9 U5XQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to :arc-authentication-results; bh=njMh/6v6k5wXwGWNcQLrqChcv6H2DwD4d0XqrYFekUY=; b=T6aSMfOY4H+vgFvC3LfnQCLIN/da5st4QIvGfYOXzBKm86nDg2YU7io55O5yq2YFeP 3dWs3F3uvJOcQtrtp/ukYhADasy6WfayAwPeKq6B9rs7DWOdnWGfU3qAl2iXCBahWYq8 UASuAtNaeJAzuRq/QkW38ibowFdEfBPHaQx4JxNUSZ6+RYRTg5CopURQXPH3nal41AuY 2G94WdCrf4TRB5esx1MVZZ4GHQOrX8xVl2gQEaC8IeA/vqTM1AClIj6jmrPQdly3xL4k uooGKIxNEKMmxa82ltqvg36Hd1q1+IZVSWL2/Cbvay1fap24Zc4W42c5L1FACC5QIOo7 xJow== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=cAkmad+4; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e137si7411843wmd.96.2017.10.17.14.42.34; Tue, 17 Oct 2017 14:42:35 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=cAkmad+4; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 83C71689FAC; Wed, 18 Oct 2017 00:42:28 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io0-f177.google.com (mail-io0-f177.google.com [209.85.223.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 68D64689E05 for ; Wed, 18 Oct 2017 00:42:22 +0300 (EEST) Received: by mail-io0-f177.google.com with SMTP id 101so3880175ioj.3 for ; Tue, 17 Oct 2017 14:42:27 -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=wT97copjmxb3TOQq0+eZC0Cq2WAlQCQtTSI7W3uc/bE=; b=cAkmad+4Av5AmtvirbbRTGfz/3fj0mYmSWAiiW5592S+tVM2Vt/pDJjJMADe4VlC1O z83Ofb1pQu/2bv52vreTe06wvV96aMM2nS98Kgh1AeHs/PHuiy+tOxecsYkALjd/BKMr Bans0BHqmEaqlzK3Na0LihqAcYbSP1fmmKCZgvlrGxsdqU24FBE9/q/2/+0snpl+OVi4 szOKKOA1ux80arOw92ljoxtPh6cv+5cdLWxvQiaxrSv7OGQMGV7RcWDJg1EaL3QDVck9 QAnQzlgjoyVrkH/pPXot00afsjT0sXxEtjyYFeSxQqCvs1J+B3Ry2abHwJGnnmPBWtBh e/YQ== 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=wT97copjmxb3TOQq0+eZC0Cq2WAlQCQtTSI7W3uc/bE=; b=EDdjIzcfkwELvPfgaZJE+clURy8SNug8484xl0CHUPwS88O9DZTuVXlmNgycMDyDss pINTR/dp12/CKxmXmMp80GB4xIL4ETp91xsZi4ejdIYvh6bTnidMTcXgRVliNJMpD7JP BfmYSxYZhTw/5mx6lyymo0jyH4e/PPV16qqwTYfQuQxKA0PQrWiGBcSA+QrZF3v/kHxY xwN/A1ajBc+4LFq70A+ujVQUMwqk7wU96NNNY2V03RYhVILNb8FfRqKMMxLiVSCt9HKU cNJWGELfgcDvYwxWGfnTrxUVcrS5NAOu4yaVFt99noAl1ldFB2MuMDTYsDM99K5/ADNj 7Hhg== X-Gm-Message-State: AMCzsaU+VsNTxuepTJF5DxkC1NqdXqz4GcLnQ6jJ1GGk87lPzUvJupgY hPM3I7O4ngxKlfA0KPgoRNFynpISr4vvZ1Drmwk= X-Google-Smtp-Source: ABhQp+QljAAc8fFzF3J2A9ZkzTit+tsEdZo3Pg0z7t34ioRNmSzeqGhYGiqnsvN7DU7/l9mOLAiJM40iZaQkMlWn54M= X-Received: by 10.107.178.81 with SMTP id b78mr18280090iof.235.1508276545736; Tue, 17 Oct 2017 14:42:25 -0700 (PDT) MIME-Version: 1.0 Received: by 10.2.134.74 with HTTP; Tue, 17 Oct 2017 14:42:05 -0700 (PDT) From: Carl Eugen Hoyos Date: Tue, 17 Oct 2017 23:42:05 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH]lavfi/palettegen: Allow setting the background colour 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" Hi! Attached patch is useful in combination with the transparency patch for paletteuse. Please comment, Carl Eugen From fc1c562748b2f7bb518df9feaa91482757ae9625 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Tue, 17 Oct 2017 23:39:59 +0200 Subject: [PATCH] lavfi/palettegen: Allow setting the background colour. --- libavfilter/vf_palettegen.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavfilter/vf_palettegen.c b/libavfilter/vf_palettegen.c index 03de317..0c74af6 100644 --- a/libavfilter/vf_palettegen.c +++ b/libavfilter/vf_palettegen.c @@ -27,6 +27,7 @@ #include "libavutil/internal.h" #include "libavutil/opt.h" #include "libavutil/qsort.h" +#include "libavutil/intreadwrite.h" #include "avfilter.h" #include "internal.h" @@ -74,6 +75,7 @@ typedef struct PaletteGenContext { struct range_box boxes[256]; // define the segmentation of the colorspace (the final palette) int nb_boxes; // number of boxes (increase will segmenting them) int palette_pushed; // if the palette frame is pushed into the outlink or not + uint32_t background; // background color for transparency } PaletteGenContext; #define OFFSET(x) offsetof(PaletteGenContext, x) @@ -81,6 +83,7 @@ typedef struct PaletteGenContext { static const AVOption palettegen_options[] = { { "max_colors", "set the maximum number of colors to use in the palette", OFFSET(max_colors), AV_OPT_TYPE_INT, {.i64=256}, 4, 256, FLAGS }, { "reserve_transparent", "reserve a palette entry for transparency", OFFSET(reserve_transparent), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, FLAGS }, + { "background", "set a background color for transparency", OFFSET(background), AV_OPT_TYPE_COLOR, {.str="white"}, CHAR_MIN, CHAR_MAX, FLAGS }, { "stats_mode", "set statistics mode", OFFSET(stats_mode), AV_OPT_TYPE_INT, {.i64=STATS_MODE_ALL_FRAMES}, 0, NB_STATS_MODE-1, FLAGS, "mode" }, { "full", "compute full frame histograms", 0, AV_OPT_TYPE_CONST, {.i64=STATS_MODE_ALL_FRAMES}, INT_MIN, INT_MAX, FLAGS, "mode" }, { "diff", "compute histograms only for the part that differs from previous frame", 0, AV_OPT_TYPE_CONST, {.i64=STATS_MODE_DIFF_FRAMES}, INT_MIN, INT_MAX, FLAGS, "mode" }, @@ -250,7 +253,7 @@ static void write_palette(AVFilterContext *ctx, AVFrame *out) if (s->reserve_transparent) { av_assert0(s->nb_boxes < 256); - pal[out->width - pal_linesize - 1] = 0x0000ff00; // add a green transparent color + pal[out->width - pal_linesize - 1] = AV_RB32(&s->background) >> 8; } } -- 1.7.10.4