From patchwork Sat Sep 21 14:49:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 15206 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 C3BBE448C32 for ; Sat, 21 Sep 2019 17:49:46 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A174468A81D; Sat, 21 Sep 2019 17:49:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DD0B368A79E for ; Sat, 21 Sep 2019 17:49:39 +0300 (EEST) Received: by mail-pg1-f196.google.com with SMTP id 4so5458742pgm.12 for ; Sat, 21 Sep 2019 07:49:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=PLrzLN0Eb16pH7JtrOh2/vO0our5FCkpXE/Lvxeladw=; b=RJx7ADisgGsEe5WlOnk/GR0wjbaOGnhSIU3S96FLBTVViajZUZRRiV9YtOcllYtkBb Wpb/q3eKpCws0zxliXg7lf0nbww3fFo/+z0t4j+lbaIIknuSn5I2f1E5xoNfcBiv6ste vY0zZf/lGmUItKXNJbCP4OHzYsnvd4LcyYL7qOnAJukOvnyBxic3FnWyZxX6xvoGpWI5 O5YlaKPPecUGTkLUh3OT9rd0kqmWONGZ3Jt1aNnrwEtdu9jqe3F6KYDbCm/hXa06JY40 aZ3Y8IO45agYZVjrphem/Yg6beVtmykE2LK8Of9seOO232U/3vQ9oDuEn87KTq8OKwRO Kr4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=PLrzLN0Eb16pH7JtrOh2/vO0our5FCkpXE/Lvxeladw=; b=GlXimN89YYgS3OHQkTLSAa7ttX8WAela8Y5kDZLbdqqrGBa2rmjt03tAEgVf1zwaiJ oQnPOTV2OGjP/mKNFfUiyhhuwB18V6GwPNrHWbqykp0x5Hkgt6+I+hHensFZ2cZOLYZr pW8zXwxJzKIyNj46exFNAlg7yxjFrzVK7p8eCSvQ67kjGUe/up1EcIZfI4t3lTZ3V/bh R9XK6iv5Vz4N8a3o+mvn6EeyTO72Z4mbqfbaDUPGFvE3rQG4mRlC59SBUcsAOBsoxXll bb675NtV9c4Gb1y5uLBPtv1q0Z9Pr9HtbXDKVKHSNro1mgvop6hIfjlECxIxzcxcjPY6 HXJg== X-Gm-Message-State: APjAAAVoxPBNxSzLWM4bsy9oo1BC4qziJY5ixDFCSLDZ6GihHxH6tPtP RYE3I+LLOk9aiYkQ3GyBhVSU2//I X-Google-Smtp-Source: APXvYqwsCyaOGpjuPsD1q8MDZT0IrqFcQGsdAAAT1J8znylYV1vgYUhqRISXDmwtscoHPFrrTFzvGA== X-Received: by 2002:a63:546:: with SMTP id 67mr20796668pgf.429.1569077377940; Sat, 21 Sep 2019 07:49:37 -0700 (PDT) Received: from vpn.localdomain ([47.90.99.151]) by smtp.gmail.com with ESMTPSA id u31sm18682829pgn.93.2019.09.21.07.49.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Sep 2019 07:49:37 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Sat, 21 Sep 2019 22:49:29 +0800 Message-Id: <20190921144932.32241-1-lance.lmwang@gmail.com> X-Mailer: git-send-email 2.9.5 Subject: [FFmpeg-devel] [PATCH v1 1/4] avfilter/vf_framerate: add flags none to disable scene change detection if necessary 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 Cc: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- doc/filters.texi | 2 ++ libavfilter/vf_framerate.c | 17 +++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index bbfdad4..fce4ef4 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -10637,6 +10637,8 @@ Specify flags influencing the filter process. Available value for @var{flags} is: @table @option +@item none +Disable scene change detection @item scene_change_detect, scd Enable scene change detection using the value of the option @var{scene}. This flag is enabled by default. diff --git a/libavfilter/vf_framerate.c b/libavfilter/vf_framerate.c index 06e463e..99faf75 100644 --- a/libavfilter/vf_framerate.c +++ b/libavfilter/vf_framerate.c @@ -44,7 +44,9 @@ #define OFFSET(x) offsetof(FrameRateContext, x) #define V AV_OPT_FLAG_VIDEO_PARAM #define F AV_OPT_FLAG_FILTERING_PARAM +#define FRAMERATE_FLAG_NONE 00 #define FRAMERATE_FLAG_SCD 01 +#define CONST(name, help, val, unit) { name, help, 0, AV_OPT_TYPE_CONST, {.i64=val}, 0, 0, V|F, unit } static const AVOption framerate_options[] = { {"fps", "required output frames per second rate", OFFSET(dest_frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str="50"}, 0, INT_MAX, V|F }, @@ -53,9 +55,10 @@ static const AVOption framerate_options[] = { {"interp_end", "point to end linear interpolation", OFFSET(interp_end), AV_OPT_TYPE_INT, {.i64=240}, 0, 255, V|F }, {"scene", "scene change level", OFFSET(scene_score), AV_OPT_TYPE_DOUBLE, {.dbl=8.2}, 0, INT_MAX, V|F }, - {"flags", "set flags", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64=1}, 0, INT_MAX, V|F, "flags" }, - {"scene_change_detect", "enable scene change detection", 0, AV_OPT_TYPE_CONST, {.i64=FRAMERATE_FLAG_SCD}, INT_MIN, INT_MAX, V|F, "flags" }, - {"scd", "enable scene change detection", 0, AV_OPT_TYPE_CONST, {.i64=FRAMERATE_FLAG_SCD}, INT_MIN, INT_MAX, V|F, "flags" }, + {"flags", "set flags", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64=FRAMERATE_FLAG_SCD}, FRAMERATE_FLAG_NONE, FRAMERATE_FLAG_SCD, V|F, "flags" }, + CONST("none", "disable scene change detection", FRAMERATE_FLAG_NONE, "flags"), + CONST("scene_change_detect", "enable scene change detection", FRAMERATE_FLAG_SCD, "flags"), + CONST("scd", "enable scene change detection", FRAMERATE_FLAG_SCD, "flags"), {NULL} }; @@ -301,9 +304,11 @@ static int config_input(AVFilterLink *inlink) s->bitdepth = pix_desc->comp[0].depth; s->vsub = pix_desc->log2_chroma_h; - s->sad = ff_scene_sad_get_fn(s->bitdepth == 8 ? 8 : 16); - if (!s->sad) - return AVERROR(EINVAL); + if ((s->flags & FRAMERATE_FLAG_SCD)) { + s->sad = ff_scene_sad_get_fn(s->bitdepth == 8 ? 8 : 16); + if (!s->sad) + return AVERROR(EINVAL); + } s->srce_time_base = inlink->time_base;