From patchwork Thu May 3 13:44:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 8763 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp1823182jad; Thu, 3 May 2018 06:52:57 -0700 (PDT) X-Google-Smtp-Source: AB8JxZr1LmbVFdLZyYe5qc8k3pwmT7QaqcykV1aeUgTsStePUZU7C7JqmeQGd1d32pNCr8J2gM5g X-Received: by 10.28.23.15 with SMTP id 15mr15226230wmx.90.1525355577216; Thu, 03 May 2018 06:52:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525355577; cv=none; d=google.com; s=arc-20160816; b=oQf0ha5tQM8olLOosvgHy0e9hvDqK//+IEpsDR36+aHdHkXtX+Zx4dW2IMZcH2nxJo Bd8hFqQc5KVC2kcvK/G5nbVoG1DtqXgbpkTUDKI7b2/bXT7lHcRqxvcmG0UhzTNHin6X udIxa59Q6Dd2Go40t/VB92qh1SuaZwpbx89EYYJNMOf6a5xpzUUnZS31n2qaY8zUYPGg XtjCGoOiVeQKRbzzWE0LVgZhxgTiSS0w0lcRUXdVyLoxE+W512WMZGWAzFbDXwHi51qt lIG/KUNsO0W6ZWxzD7TN/t4aOmqPxjkCRQDIZH7UJN0SpWC+eYIH0J0qCinSsNe8KiwB mLwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=5CyNO8RaQvuq+oatGubZTecgVIO+/F2lX3tW+Nb6zV0=; b=QJ3GpTE0Ow2MoyFxxZuy1CRBmvJ4V4Ut+vmayajGLfHazGbxKohRwo7cBQiIoWpYr4 zl8g8Lc9rYM8rYHMl/TUA9wdDY8odBKGfvsupB6xks6qQdYVTVwxZYIJgJzthOWsENgn 60fJ/F/ZtMpJ9Rgq3XgnJWM6l/kIEHBAYH8cH2//8dZvDgzs8GV8jlN9Mm9w8l9xBYEO GqUt2K25KIab00VEc0cPjY/6RGx09IJWEK5f4eApxe6c9UoyQhw1Q6LcvIpfcSodT1Yn cT6O2r6L7S7qIVH8zeVj11mFISb9zyPbAAYG5+63XtbNc58U/68pltyYpliRgMBnh0t5 WnmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=N85e55+J; 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=QUARANTINE 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 r67si9701768wmf.162.2018.05.03.06.52.50; Thu, 03 May 2018 06:52:57 -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=N85e55+J; 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=QUARANTINE 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 78FF668A49F; Thu, 3 May 2018 16:52:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7162B689CF4 for ; Thu, 3 May 2018 16:52:09 +0300 (EEST) Received: by mail-wr0-f195.google.com with SMTP id q3-v6so17701476wrj.6 for ; Thu, 03 May 2018 06:52:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=8PLlSZeqnZ+IvISR0unptzC334n5rHf/tMRhsU9YdYc=; b=N85e55+JlxpPaaYa2JW7wNHlQwSsyRuZuWhGtteksIS4QO71rzLrDpc6Nk2KLyX6/b nUz2YA5DGcfWFIpWbGO3rHc9r29jo59vMiftWCnWF+ftGykL8cKhRenMPrxyHXiyF5gE Z8C035Kt3fxYqJCmJKqly160mL6j99eECc1QwFS9eCvNpUa8actxiZ4ri3MKA04bGhiN BKMojhPyJkdDtiRbZAeM5Y8zVQMPPdlkQQGnJJNC1ANHKH/9xxvhpDWlzxOKyAsYK4lS OMPW2GFXbTRnUPOyh8yOpSqrSbbd1HU9znNkY1VDa8np7QIo2i3CgBLh7gIXtgJUnxv3 CE+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=8PLlSZeqnZ+IvISR0unptzC334n5rHf/tMRhsU9YdYc=; b=Nnh2y2VaFfbR5wg3+pqSLiFJYdUnEjHh2/G8L35gE6TE8PO0ru7xYL5JNOHbJI7Nx/ 2cxFDtutMYrbf6sJPNnVixw/oncU42qIsN+IlVWFTF3OEg4iaovWGL4JPrIbRZ+a71LO APGNA7gW33bQwUnCodBd9atrE89abrgWalsQ2AcSOqlw+6cOcZRBJMBzvycaukL9jS+D kjg0ZIY/4oJfO7i9kUQ5QUYivm0WffReewtFUSuofdN7LgOs/pi0DT2j29UDO3kCbAdS 2gUa/o1iiyKvQPpB1OsdmX6e/YzYj906T8t7x/Y6gMRPeBu2d33X+e4GMDwEc99rzmDX +yhw== X-Gm-Message-State: ALQs6tDRf1gD2J0qzy1NTro2GlqWdbpk0yRKnHG06ufr+qv98tMDfl0t VbiLT5zGT9rgzCTzUhB/zO6aIg== X-Received: by 2002:adf:9654:: with SMTP id c20-v6mr19549414wra.89.1525355094306; Thu, 03 May 2018 06:44:54 -0700 (PDT) Received: from localhost.localdomain ([94.250.174.60]) by smtp.gmail.com with ESMTPSA id k79sm18304604wmg.39.2018.05.03.06.44.53 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 May 2018 06:44:53 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Thu, 3 May 2018 15:44:42 +0200 Message-Id: <20180503134444.26738-1-onemda@gmail.com> X-Mailer: git-send-email 2.11.0 Subject: [FFmpeg-devel] [PATCH 1/3] avfilter/vf_edgedetect: add canny mode 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Paul B Mahol --- doc/filters.texi | 3 +++ libavfilter/vf_edgedetect.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/doc/filters.texi b/doc/filters.texi index 218f30ef5f..29b5a5b15f 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -8268,6 +8268,9 @@ Draw white/gray wires on black background. @item colormix Mix the colors to create a paint/cartoon effect. + +@item canny +Apply Canny edge detector on all selected planes. @end table Default value is @var{wires}. diff --git a/libavfilter/vf_edgedetect.c b/libavfilter/vf_edgedetect.c index 173f9fe161..534a302d90 100644 --- a/libavfilter/vf_edgedetect.c +++ b/libavfilter/vf_edgedetect.c @@ -35,6 +35,7 @@ enum FilterMode { MODE_WIRES, MODE_COLORMIX, + MODE_CANNY, NB_MODE }; @@ -61,6 +62,7 @@ static const AVOption edgedetect_options[] = { { "mode", "set mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=MODE_WIRES}, 0, NB_MODE-1, FLAGS, "mode" }, { "wires", "white/gray wires on black", 0, AV_OPT_TYPE_CONST, {.i64=MODE_WIRES}, INT_MIN, INT_MAX, FLAGS, "mode" }, { "colormix", "mix colors", 0, AV_OPT_TYPE_CONST, {.i64=MODE_COLORMIX}, INT_MIN, INT_MAX, FLAGS, "mode" }, + { "canny", "detect edges on planes", 0, AV_OPT_TYPE_CONST, {.i64=MODE_CANNY}, INT_MIN, INT_MAX, FLAGS, "mode" }, { NULL } }; @@ -79,6 +81,7 @@ static int query_formats(AVFilterContext *ctx) { const EdgeDetectContext *edgedetect = ctx->priv; static const enum AVPixelFormat wires_pix_fmts[] = {AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE}; + static const enum AVPixelFormat canny_pix_fmts[] = {AV_PIX_FMT_YUV444P, AV_PIX_FMT_GBRP, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE}; static const enum AVPixelFormat colormix_pix_fmts[] = {AV_PIX_FMT_GBRP, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE}; AVFilterFormats *fmts_list; const enum AVPixelFormat *pix_fmts = NULL; @@ -87,6 +90,8 @@ static int query_formats(AVFilterContext *ctx) pix_fmts = wires_pix_fmts; } else if (edgedetect->mode == MODE_COLORMIX) { pix_fmts = colormix_pix_fmts; + } else if (edgedetect->mode == MODE_CANNY) { + pix_fmts = canny_pix_fmts; } else { av_assert0(0); }