From patchwork Thu Sep 12 10:22:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 15045 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 DA122449A89 for ; Thu, 12 Sep 2019 13:23:13 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AE0FA688074; Thu, 12 Sep 2019 13:23:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 59B15687F68 for ; Thu, 12 Sep 2019 13:23:07 +0300 (EEST) Received: by mail-pl1-f196.google.com with SMTP id s17so6683880plp.2 for ; Thu, 12 Sep 2019 03:23:07 -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=mTBpp8VHkjF04smxPdVDJ3hOsAQfbxaLDN1So+lvIWY=; b=o+r2X1Ygac6k+MWiAV9MZ6XDJXxg4ehaVEaO1/xdOPiIJ+lfVweNUw+p6WOP71xqTb Yj1xQhzJ/l1fnDuR4XqA0buL5RKCZ9Do3jPPAt3exTtzgLWWmKcOJPSrYk3NqkP5isM3 QVnMAQ19iTUUJpI0DBAaKhSylCgrXmfn0e6FIP10q3sj6oBzP3SA1lMYz/n6Ak3SEGbz I8WAVA8IFPOAS138hT5R+D0SwBql4L0wevYZ5OUoA02xyDK95LqEclAknBI1vgY7xZgM S1UWZaie/6uWzfoB5SFNnatxfnbmG0tvZyfx3dLAbKmFnpLASRHIlv+T4HsSUmz+6y/4 21FQ== 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=mTBpp8VHkjF04smxPdVDJ3hOsAQfbxaLDN1So+lvIWY=; b=X5P2dDFKx5TtNJjmbRFfuwBLnJbfSoKaAw6KmcKYScNcDhZc4NPpsE5n191bU5/Rpe NPJnTFVAWkt9ey4wMAGCClJdCdg8hh06BeG/N/sT9Lp0lNlJHxdlfZJ8B7ZW5R8HM914 ndXjrGv1l2Y+Fwt/gfNHDapv+v4dUXD/EPP0eaE+P6RakoGyuQOKGD/URNU6/LAheIDO 3gj9rOA0g8pSZAZ8GSH9ceC6iT62BI4bmp5weO+aGlrFzXgsTKxSXmOw64GrvSBWvksx n2N95Fc2Ulj20A+/fa4HLH/7P+vPY94Yn+E2z4eRpFhgECKnFRWHCfV/XwBvZkPKy4uu DlQA== X-Gm-Message-State: APjAAAWiTRJ/V0BxQbdPz4Mk6lu870x+XRZiQpV3t1Yw7E4oqD/AKawD ONy92RZhnCCZCSS/dCqEa6P+q+La X-Google-Smtp-Source: APXvYqyQdWajz4NUYKdSoQChmQdjrtURATiwNBZ3Ja4gO+RoCYTz1yStEby871gCRAHG63ErWQWdSg== X-Received: by 2002:a17:902:d90c:: with SMTP id c12mr28117418plz.106.1568283785328; Thu, 12 Sep 2019 03:23:05 -0700 (PDT) Received: from vpn.localdomain ([47.90.99.151]) by smtp.gmail.com with ESMTPSA id t6sm21593053pgu.23.2019.09.12.03.23.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 12 Sep 2019 03:23:04 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Sep 2019 18:22:59 +0800 Message-Id: <20190912102259.16630-1-lance.lmwang@gmail.com> X-Mailer: git-send-email 2.9.5 Subject: [FFmpeg-devel] [PATCH v1] avfilter/vf_framerate: make the scene change detection calculation method consistent with f_select filter 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 Have been tested by fate-suite/svq3/Vertical400kbit.sorenson3.mov and the testing results are consistent. If it is acceptable, I want to move get_scene_score() to the public function and make the scene change detection calculation method of the relevant module consistent. Signed-off-by: Limin Wang --- doc/filters.texi | 4 ++-- libavfilter/vf_framerate.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index 9d500e44a9..1c2e86b635 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -10626,10 +10626,10 @@ the default is @code{240}. @item scene Specify the level at which a scene change is detected as a value between -0 and 100 to indicate a new scene; a low value reflects a low +0 and 1.0 to indicate a new scene; a low value reflects a low probability for the current frame to introduce a new scene, while a higher value means the current frame is more likely to be one. -The default is @code{8.2}. +The default is @code{0.25}. @item flags Specify flags influencing the filter process. diff --git a/libavfilter/vf_framerate.c b/libavfilter/vf_framerate.c index 06e463e4d7..def3f19f55 100644 --- a/libavfilter/vf_framerate.c +++ b/libavfilter/vf_framerate.c @@ -51,7 +51,7 @@ static const AVOption framerate_options[] = { {"interp_start", "point to start linear interpolation", OFFSET(interp_start), AV_OPT_TYPE_INT, {.i64=15}, 0, 255, V|F }, {"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 }, + {"scene", "scene change level", OFFSET(scene_score), AV_OPT_TYPE_DOUBLE, {.dbl=0.25}, 0, 1.0, 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" }, @@ -77,9 +77,9 @@ static double get_scene_score(AVFilterContext *ctx, AVFrame *crnt, AVFrame *next ff_dlog(ctx, "get_scene_score() process\n"); s->sad(crnt->data[0], crnt->linesize[0], next->data[0], next->linesize[0], crnt->width, crnt->height, &sad); emms_c(); - mafd = (double)sad * 100.0 / (crnt->width * crnt->height) / (1 << s->bitdepth); + mafd = (double)sad / (crnt->width * crnt->height) / (1ULL << (s->bitdepth - 8)); diff = fabs(mafd - s->prev_mafd); - ret = av_clipf(FFMIN(mafd, diff), 0, 100.0); + ret = av_clipf(FFMIN(mafd, diff) / 100., 0, 1); s->prev_mafd = mafd; } ff_dlog(ctx, "get_scene_score() result is:%f\n", ret);