From patchwork Fri Jun 28 20:15:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yigithan Yigit X-Patchwork-Id: 50206 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp540284vqv; Fri, 28 Jun 2024 14:32:52 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCX/Hlu6z0UCNHe5kFrIxbp2/GNFfX1fz9In+rilUt0zK0kBMb5e+j1GymqKKY8j53lSYWBEu/aXAnXtmCWOLHIUM038BrgAHoD3MQ== X-Google-Smtp-Source: AGHT+IGpoOsICwidibpojPpn6JSLpU9ZND4lrrPAgcbbPNyUSCMa3YWEiLp9N2b5htQpKDI5p+a8 X-Received: by 2002:a2e:95c8:0:b0:2ec:4d48:75ec with SMTP id 38308e7fff4ca-2ec5b3394d2mr112961911fa.22.1719610371582; Fri, 28 Jun 2024 14:32:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1719610371; cv=none; d=google.com; s=arc-20160816; b=Q1FEEolUf4EY+OaJRnmWv5JV7viGGwDqSAy+ul/teS+ZlIdX00oVfI36CziXkmdTsI 2L/Ty4/GlDQhduzYV/N/eAKRD0qxBrVuO6pt5sPO0CSn7Pmd8Vrl/UCAeB5C4oUqg5d8 GXaqG2HQivbl1xCqLxKhn9LYbb3Ihfq6r6xFgYCE6IicQ897/Pw2j3P8LLHOcOLyWCNY 1/dmRlXsGAUm2tQvJivgjCjhoTeFFvw9Gvi90Gyg5sbCvqLg3a4C1ww94ONTZAWXlavE K0DaldqNz99qpP9WQqe+wWhfNpAkNoDQulV5XtOau/79/NPf3XlbT8IobE1wzqznp0Vk smDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=3YkYVlThul3unmWtoV9oafPIERiOFeVfu5lA3hWYPuI=; fh=oYrUj4vT4ivb560z23e71q/pal11/Mm+yKMO8RKszaM=; b=ypmxP/rkIS78nxIG7pD8eTxRfohuQQJowoMFcF/0kk8pGEZmVkzUwzFUw+WDWxgJQl QW5t/cAwi/lnH+saW6vfJnqGEMEgJKnw4i7cM+wLcTw/0LPYpxGqr40scmWzXLE803YS bXxZssq4mi9VQYAB68iazdyo+0WUNP71/Ro8xpiGVvYbwjHdGufwQgKZghdeje/2IoMD UDdVI1z65k83AY9SOfXFfSK6DMZP7GkfR0yvAExAqjc71DXUWHeGZAbLoSznNBzW/mDW n3yMgmWQi5z4oj/yLZp43Xnvp0a9Vgw2Z6AGLX1SOGGqxPd6h7zvxX6zFszojNrQ08is 1tbA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=m1+k4fRY; 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 4fb4d7f45d1cf-58615071f0esi1119113a12.410.2024.06.28.14.32.51; Fri, 28 Jun 2024 14:32:51 -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=20230601 header.b=m1+k4fRY; 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 2BF0C68D68A; Fri, 28 Jun 2024 23:15:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 73BA468D66D for ; Fri, 28 Jun 2024 23:15:29 +0300 (EEST) Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-42562fde108so8276515e9.0 for ; Fri, 28 Jun 2024 13:15:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719605728; x=1720210528; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3RhGsvsh1Ce/Ozyp1mKulVT3T+PIeKLeYedx+PXjycg=; b=m1+k4fRYQ5OuB1mEGTakaOW3WKSrtE4qui9g6J5UEbz1DnLN77F8AIbGyBVswEFQ6+ VywgBcY+g1nE+gA85ZkwzFDnWXnbyKMJjvz5SDas+u1bG+BwnkT9bkGWOPVk0UbPoufA yEIxb9UDhc2TYuWwY0dzxv39+vNrII1MVaoo398nsu5qNohvOopJPMKGKI+yBfUMEUTv y/mRA9VnXK62TIGsa9tE6QSYa/7VALdpb/VKtOxLlqxP5HYxCArazp77mFLIDKrQkmmp 8c3IUmpi8/U2CgfDL/FHtR1sc33lZ7u36fXH8AojI5FjyL8X9Wmfff8S5zeCy2J+5ZT0 bDBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719605728; x=1720210528; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3RhGsvsh1Ce/Ozyp1mKulVT3T+PIeKLeYedx+PXjycg=; b=oHQ8xgip45NQI85AmOjqljb28BSgJQYi7VzK56E4oqgi8Y374NQ5b/qvBoOXiViqEW aBfl5wZgMNBpr/z4aa5tuLg5Nmy++i3HGHjVN19GXuWnNCfmQvCxR+NMz5e4Qo0yR63Q mVc+OiANlJ+C1rGmBWIfX2zmpMteCA0i38cQWtzguwGAJE8PlXrIf0a3RGVuiCMjBHIn YiEKoFASEFJ9HEKJzP/eOhQbMTN62ax67yAloGwUPMOtal4cM3old6qaPYgK78C5vC+B MDXWinTTGDUwV9r0M4eG9VavMabF3HaxuzJPcFuiAjOjK2NRind1NDc2JwqeWHiGACS9 2DzQ== X-Gm-Message-State: AOJu0YzDtKDWdYIVGTNJPXF6cBH11cRDAYewB20X60iZ2hOep5rD2Gts nfh8y4fYaWNQIQEn6n1afQUOUSjs6yckUeF20zbtFmAsYRbxcLe9a7C2vw== X-Received: by 2002:adf:a1cc:0:b0:362:b5d7:8116 with SMTP id ffacd0b85a97d-366e9497da7mr10259202f8f.28.1719605728239; Fri, 28 Jun 2024 13:15:28 -0700 (PDT) Received: from localhost.localdomain ([2a02:e0:8bea:ef00:1561:d557:9aa3:53f4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3675a0cd4a1sm3249164f8f.23.2024.06.28.13.15.27 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 28 Jun 2024 13:15:27 -0700 (PDT) From: Yigithan Yigit To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Jun 2024 23:15:20 +0300 Message-ID: <20240628201523.23612-2-yigithanyigitdevel@gmail.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240628201523.23612-1-yigithanyigitdevel@gmail.com> References: <20240628201523.23612-1-yigithanyigitdevel@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/4] avfilter/af_volumedetect.c: Move logdb function X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: thilo.borgmann@mail.de, yigithanyigitdevel@gmail.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: bKAHp0hWi/dU --- libavfilter/af_volumedetect.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/libavfilter/af_volumedetect.c b/libavfilter/af_volumedetect.c index 8b001d1cf2..327801a7f9 100644 --- a/libavfilter/af_volumedetect.c +++ b/libavfilter/af_volumedetect.c @@ -24,6 +24,8 @@ #include "avfilter.h" #include "internal.h" +#define MAX_DB 91 + typedef struct VolDetectContext { /** * Number of samples at each PCM value. @@ -33,6 +35,14 @@ typedef struct VolDetectContext { uint64_t histogram[0x10001]; } VolDetectContext; +static inline double logdb(uint64_t v) +{ + double d = v / (double)(0x8000 * 0x8000); + if (!v) + return MAX_DB; + return -log10(d) * 10; +} + static int filter_frame(AVFilterLink *inlink, AVFrame *samples) { AVFilterContext *ctx = inlink->dst; @@ -56,16 +66,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *samples) return ff_filter_frame(inlink->dst->outputs[0], samples); } -#define MAX_DB 91 - -static inline double logdb(uint64_t v) -{ - double d = v / (double)(0x8000 * 0x8000); - if (!v) - return MAX_DB; - return -log10(d) * 10; -} - static void print_stats(AVFilterContext *ctx) { VolDetectContext *vd = ctx->priv; From patchwork Fri Jun 28 20:15:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yigithan Yigit X-Patchwork-Id: 50203 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp508821vqv; Fri, 28 Jun 2024 13:15:59 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWyrIl5iM6AsGZapYZ2HVYtE5SYALggxqznc11YlBxKLg6miaXQM3I4YKp5rrtbz8o1rnPOj/DWmWjQvWuNR10xfqluS12j0LyfHw== X-Google-Smtp-Source: AGHT+IGJAAys2jl/cG1Pc4W5dAk7H23JxSBFrAinw6xT/N9qar3ocZgjqh6nNJqxHBkAuFtX1diO X-Received: by 2002:a50:bae1:0:b0:57c:a701:2311 with SMTP id 4fb4d7f45d1cf-57d4bdbfcafmr12840252a12.26.1719605758955; Fri, 28 Jun 2024 13:15:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1719605758; cv=none; d=google.com; s=arc-20160816; b=GPxMKoYEXjiVgADj1SKiPRhciFShXsbOeFZGqlaWrV5CJ96ViVMNVZiTkqBH2IGgBH 0fRDvCO57bpsA5iQ+njhYzG6S/+fada5Z30m+HhKd0mNnd0GPciyMhpibRquCSC0ujQ0 89S+EQ8Zdk+GwO7Cot7NQC9dYk3Pu85Vx7fO8ma2wjXnTG7yCu5scmiLXdjBNEGeCzEX GxT9Hs3HKCw6Uuziqk1vKa+oBBtm2FjjeHhr9bryjcArmKEyLrek1rWB3B3CSGxLd1Pg GnzQ2Ybwt5xwAVf4pDPqpAQ0/GbAIWH7rkOqVl6VuGObKuQ+jgCjAI8LShPbiYrxoDib qEYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=4cLdGQ5CUVIOGKH5K/+2ZvXPSZvGYpnsWzn6/C46z+g=; fh=oYrUj4vT4ivb560z23e71q/pal11/Mm+yKMO8RKszaM=; b=Z+rrfYvtx1m/XLs0CeFWc0XCmlK5dtVNF35RAr9tmKCXi/UHgWCTfpabVuHxjMY+fl zW6J5UnpYetCJi3OSET+MXXBiCVLjIngO+zzpMi7fmqxaFAkivvRiz2vcbvKsA5qzsn3 +L+gmMVfDQz650ee6K2Y+Ac+YyQKQ5fz5iyYGpiRpVlnaE6zQiyCvLGOZ4QmI9OlIKBm z24b5GRwq3EVOQcay1BVQIOigqs8mKbD7/5GPC3qr2j1jQcNlM8Vwd3BZv7mOPzmSvmw r1gDvQqEAvnYhjNHpDeNWnpcWiDg4Vs0lgcPpnZ9K1Rgbw+dvtSsxif6xitA2RZPh/fM 9+Qw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=k2YRT9eu; 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 4fb4d7f45d1cf-58615033a50si1120243a12.326.2024.06.28.13.15.58; Fri, 28 Jun 2024 13:15:58 -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=20230601 header.b=k2YRT9eu; 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 2DB3068D67F; Fri, 28 Jun 2024 23:15:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4529B68D67B for ; Fri, 28 Jun 2024 23:15:30 +0300 (EEST) Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-367339bd00aso824354f8f.3 for ; Fri, 28 Jun 2024 13:15:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719605729; x=1720210529; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tJjCousbAeyr4cDqpLI1CWvvgJ3kHVcHk8R66SIcyHc=; b=k2YRT9euaRn9nHGjW/oJTLfz4NyfR9+Qxu9CKSXXvUhTw959xK6OUH+FI8uBU+uqH8 rRwxnjGyKxDAqWiFuVtPdh51XrONl/GgOJgILr+iQXzYh8xYEzi3CpU56GUQmhxansO3 72QT+diRvD2ATszLLZ/Ub+OPNZFqKRMsiQ7TGpPLQpBO/jfal5pCgW1TNodvEKtAuGLf 1Mx6P1JITSMQaBbJ2S5D61/XCx5TlvpPxKIBNTGiuk3bqmFkvqKjF9pikIsLsOJn6eQK d+yZEP7TQ8kGLfdX2+CPaC/VNL61JDdd1haT1FE/WFc8kX8eNWVvyT3ZCilyRqANT7NV O4Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719605729; x=1720210529; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tJjCousbAeyr4cDqpLI1CWvvgJ3kHVcHk8R66SIcyHc=; b=OG8fMdzi4DxNgIUAwrIkrdwahA57ZVdQvwn7UgRhDuTylEloYayhPvMtVdQkEexA8d Oev/cC3Jl2ZgbQAqFzfc2UzrFvtlLaSHgcMB/CHh9ldh6yXjzDJEsPNYeHxNX/hN5tEv n64XXK5X29kUc5Owhn2NqbkvEmeD6Htuts+SNaEHifBN7rJMNBL/sygrgm6hqb21LtdD ro5gBxBilb0mYppQQdhhNatG+QueSbmzP0CYqyXeYJ7XXkfF/Sl8Bf68AL1lwbNfKm3O OgsGk5lBu4RuHN8sfZNjF8HqE+qMWSJ673595jv1YxuKxItwID+p0v//CKeSdbUv+/KA 3r/Q== X-Gm-Message-State: AOJu0YxbBTwDcNT0V/NM5qiqyqTNhbyUDx6OEl+y2LsUt3hjTw0ypWAf vIXYTVbRJUQx0RnKCh6Guxegl14Ad6cyjrH9obNCQ3JVDWpS8kIapxOAXA== X-Received: by 2002:a5d:6dac:0:b0:363:7788:b975 with SMTP id ffacd0b85a97d-366e95e7154mr14821304f8f.52.1719605729399; Fri, 28 Jun 2024 13:15:29 -0700 (PDT) Received: from localhost.localdomain ([2a02:e0:8bea:ef00:1561:d557:9aa3:53f4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3675a0cd4a1sm3249164f8f.23.2024.06.28.13.15.28 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 28 Jun 2024 13:15:29 -0700 (PDT) From: Yigithan Yigit To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Jun 2024 23:15:21 +0300 Message-ID: <20240628201523.23612-3-yigithanyigitdevel@gmail.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240628201523.23612-1-yigithanyigitdevel@gmail.com> References: <20240628201523.23612-1-yigithanyigitdevel@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/4] avfilter/af_volumedetect.c: Added functions for int/float and planar/packed X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: thilo.borgmann@mail.de, yigithanyigitdevel@gmail.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ubiZpY7t0+Eg --- libavfilter/af_volumedetect.c | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/libavfilter/af_volumedetect.c b/libavfilter/af_volumedetect.c index 327801a7f9..61c00e0248 100644 --- a/libavfilter/af_volumedetect.c +++ b/libavfilter/af_volumedetect.c @@ -43,6 +43,64 @@ static inline double logdb(uint64_t v) return -log10(d) * 10; } +static void process_float_planar_samples(VolDetectContext *vd, AVFrame *samples) +{ + int plane, i; + int nb_channels = samples->ch_layout.nb_channels; + int nb_samples = samples->nb_samples; + float *audio_data; + for (plane = 0; plane < nb_channels; plane++) { + audio_data = (float *)samples->extended_data[plane]; + for (i = 0; i < nb_samples; i++) { + update_float_stats(vd, &audio_data[i]); + } + } +} + +static void process_float_packed_samples(VolDetectContext *vd, AVFrame *samples) +{ + int i, j; + int nb_channels = samples->ch_layout.nb_channels; + int nb_samples = samples->nb_samples; + float *audio_data; + for (i = 0; i < nb_samples; i++) { + audio_data = (float *)samples->extended_data[0]; + for (j = 0; j < nb_channels; j++) { + update_float_stats(vd, &audio_data[i * nb_channels + j]); + } + } +} + +static void process_int_planar_samples(VolDetectContext *vd, AVFrame *samples) +{ + int plane, i; + int nb_channels = samples->ch_layout.nb_channels; + int nb_samples = samples->nb_samples; + int16_t *pcm; + for (plane = 0; plane < nb_channels; plane++) { + pcm = (int16_t *)samples->extended_data[plane]; + for (i = 0; i < nb_samples; i++) { + vd->histogram[pcm[i] + 0x8000]++; + vd->nb_samples++; + } + } +} + +static void process_int_packed_samples(VolDetectContext *vd, AVFrame *samples) +{ + int i, j; + int nb_channels = samples->ch_layout.nb_channels; + int nb_samples = samples->nb_samples; + int16_t *pcm; + for (i = 0; i < nb_samples; i++) { + pcm = (int16_t *)samples->extended_data[0]; + for (j = 0; j < nb_channels; j++) { + vd->histogram[pcm[i * nb_channels + j] + 0x8000]++; + vd->nb_samples++; + } + } +} + static int filter_frame(AVFilterLink *inlink, AVFrame *samples) { AVFilterContext *ctx = inlink->dst; From patchwork Fri Jun 28 20:15:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yigithan Yigit X-Patchwork-Id: 50204 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp508897vqv; Fri, 28 Jun 2024 13:16:08 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUsLA8HGhK/JJgeQhMk2ItI3PZsOgXn70z+sXAhToVWrwK2h2AOERp7fUhF5DpRj9XdsOf+vm7q3WtypGPDNps+Sq1/LabepZ/BIw== X-Google-Smtp-Source: AGHT+IFIbgBV/khMFRFNEvGCTC2DK9qbfxSMtgQckMt01P48fwutGQw15J5m5thtzLD1ijxG9Btu X-Received: by 2002:a05:6402:1ec7:b0:57c:6a05:afd0 with SMTP id 4fb4d7f45d1cf-5865c9c84f2mr2121749a12.14.1719605768563; Fri, 28 Jun 2024 13:16:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1719605768; cv=none; d=google.com; s=arc-20160816; b=QdERxlBlojiN8fJZ7aScJanboydn8A0WE5vnouREg6/QnXpKn0SpzytXcOoQljwFJ5 6DPEeoFNQmECecOks2H3Ht0iMlzrYzfO9MI+MLFb4vNZaDY4rUSFjf0R7tb7JIAh9fpa DyMfHyl5nCj8z2JBL+n64HH/7oE6/YUVXXuc9E3DEN1xFL/RkE/BRcPQvwF3S9tLqxYg r4GGKvgkvSnATyGPQN7PzKTA1pJ07A5W9L2pV5sQiJkcQlbpCiIZ3/OW/5mBo2l0Kt/y HtkQt35pWJWgvkxVnZTJvQLeQnDZbYF1pPkI5fgt44/cIZCm0y5R1x8zsY94EqQgahK3 szQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=ZFeAoVPkeZ6ZTK5XMmXgnRmmZiMyjiQf8H7q7Me2ycY=; fh=oYrUj4vT4ivb560z23e71q/pal11/Mm+yKMO8RKszaM=; b=RJC2pinOiCikbDrPERB/XxvGKy1GqQbyOGh761AXacS+f5vOlx/ksFwCPFD6FQpXtl oEi6qEJ5kQWAoWGKZiw2GrNbRSLFAlJShQzmZrzICax4YEE8ZCrtXyTS6ciJoPSGadlI M7WDgLE3yrfDwwTRJEs7anVegNMGtY5eTPwTgLbb88wyneXLU8tLTZ7gMf8toy9+gTh7 ZhdTF97F5l3qkJE/5HbO/HMdTCsAnXgfVxZRbHACgqMKN4WTbxGl6yDKdU4xPbL1lOaf ezN1+fXeVs5hJt+nLSBuvUI3irZLGfErIIRKE7gCYP685G2KaHJbynUVfHk/Xn+WgPW8 ypQg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=mL4OuYp0; 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 4fb4d7f45d1cf-58613720d97si1112817a12.58.2024.06.28.13.16.08; Fri, 28 Jun 2024 13:16:08 -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=20230601 header.b=mL4OuYp0; 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 96A1368D6B4; Fri, 28 Jun 2024 23:15:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 682E468D650 for ; Fri, 28 Jun 2024 23:15:31 +0300 (EEST) Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-362f62ae4c5so590438f8f.1 for ; Fri, 28 Jun 2024 13:15:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719605730; x=1720210530; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cLMxiQ47vAkGxcS7ksb2n5X/OJ+1KwrvN4wfCK+i8cc=; b=mL4OuYp0ctr25RuWPpzdkTMkDa6CQdehViRnhY9In54gc5Hk1BgJpZ/h/lqIvqKtMu 9KfaN2qbp2V3rnPENbp/KHhQebntuf42SMPDaEMmxc3veQ0dHdptWDmcGxy3mVr/fk9z OSJL21FTcTFxKKM8SQUlF/mJGjE8l629LP46yPoI/NWDG60iOgYjzjLKaZGvohqRGyrT qgSDeQtE/ufbHVto3fvxch5rMM2AiMQtRHHo7qhDMhszDTCLchpF/GBAScqMvm0b5vdd ELCTVI/ZHRxjuIk3pcv3BeBuH45RRvQiOqvi6BKDu2c0jdFZj+iw7mnsFA7LROi+TjL5 20YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719605730; x=1720210530; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cLMxiQ47vAkGxcS7ksb2n5X/OJ+1KwrvN4wfCK+i8cc=; b=io2x0nqp9wkQ0PW7hRF9Crvygh7kdD2E3okJltmq/6rnAcwrqk74+I8I8mkGBbKv5t 8nUQeOZ/nrtM57WjYs/jijGYqk7ZUQ3Vid+QqT7LV84TlR6boTe70W2jo/5hsgyJJFU4 Mz+FejEoCr4fM5JEOZjSgC4Bf7ni2sbL8M40o70Q+Jn/S4JW37k8DQ/NzSM9fA4DMOx4 f206oTJ3R6MRkE+wJFRqsjUYgx71plwZa9KjwzTGZVkw6kL3GwV+cMYrifp2HvE5gI4Z xqbCmSGl06dO3OuXO30Y2duLpI1lIFwczEKJOkASHYzcnSHlZ9bc3O3nLUCXssE4QudF 2UJw== X-Gm-Message-State: AOJu0Yx3kx1RgVeDdQVHQ9305G0sG96DiZJXvTY6EH0Fhyf+cLbayGQC i5ioEjQb6FhOHzWAVDsCi8SSOzeXH9x5dhQM4afIhAHUxRJvVxh3NAlSDg== X-Received: by 2002:a5d:47c9:0:b0:360:70e3:ef2b with SMTP id ffacd0b85a97d-36760a8a523mr3000595f8f.26.1719605730520; Fri, 28 Jun 2024 13:15:30 -0700 (PDT) Received: from localhost.localdomain ([2a02:e0:8bea:ef00:1561:d557:9aa3:53f4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3675a0cd4a1sm3249164f8f.23.2024.06.28.13.15.29 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 28 Jun 2024 13:15:30 -0700 (PDT) From: Yigithan Yigit To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Jun 2024 23:15:22 +0300 Message-ID: <20240628201523.23612-4-yigithanyigitdevel@gmail.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240628201523.23612-1-yigithanyigitdevel@gmail.com> References: <20240628201523.23612-1-yigithanyigitdevel@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 3/4] avfilter/af_volumedetect.c: Add 32bit float audio support X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: thilo.borgmann@mail.de, yigithanyigitdevel@gmail.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: YB/gyjeaY2Hn --- libavfilter/af_volumedetect.c | 145 ++++++++++++++++++++++++++-------- 1 file changed, 114 insertions(+), 31 deletions(-) diff --git a/libavfilter/af_volumedetect.c b/libavfilter/af_volumedetect.c index 61c00e0248..ff408a8b50 100644 --- a/libavfilter/af_volumedetect.c +++ b/libavfilter/af_volumedetect.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2012 Nicolas George + * Copyright (c) 2024 Yigithan Yigit - 32 Bit Float Audio Support * * This file is part of FFmpeg. * @@ -20,27 +21,54 @@ #include "libavutil/channel_layout.h" #include "libavutil/avassert.h" +#include "libavutil/mem.h" #include "audio.h" #include "avfilter.h" #include "internal.h" +#define MAX_DB_FLT 1024 #define MAX_DB 91 +#define HISTOGRAM_SIZE 0x10000 +#define HISTOGRAM_SIZE_FLT (MAX_DB_FLT*2) + +typedef struct VolDetectContext VolDetectContext; typedef struct VolDetectContext { - /** - * Number of samples at each PCM value. - * histogram[0x8000 + i] is the number of samples at value i. - * The extra element is there for symmetry. - */ - uint64_t histogram[0x10001]; + uint64_t* histogram; ///< for integer number of samples at each PCM value, for float number of samples at each dB + uint64_t nb_samples; ///< number of samples + double sum2; ///< sum of the squares of the samples + double max; ///< maximum sample value + int is_float; ///< true if the input is in floating point + void (*process_samples)(VolDetectContext *vd, AVFrame *samples); } VolDetectContext; -static inline double logdb(uint64_t v) +static inline double logdb(double v, enum AVSampleFormat sample_fmt) +{ + if (sample_fmt == AV_SAMPLE_FMT_FLT) { + if (!v) + return MAX_DB_FLT; + return -log10(v) * 10; + } else { + double d = v / (double)(0x8000 * 0x8000); + if (!v) + return MAX_DB; + return -log10(d) * 10; + } +} + +static void update_float_stats(VolDetectContext *vd, float *audio_data) { - double d = v / (double)(0x8000 * 0x8000); - if (!v) - return MAX_DB; - return -log10(d) * 10; + double sample; + int idx; + if(!isfinite(*audio_data) || isnan(*audio_data)) + return; + sample = fabsf(*audio_data); + if (sample > vd->max) + vd->max = sample; + vd->sum2 += sample * sample; + idx = (int)floorf(logdb(sample * sample, AV_SAMPLE_FMT_FLT)) + MAX_DB_FLT; + vd->histogram[idx]++; + vd->nb_samples++; } static void process_float_planar_samples(VolDetectContext *vd, AVFrame *samples) @@ -105,21 +133,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *samples) { AVFilterContext *ctx = inlink->dst; VolDetectContext *vd = ctx->priv; - int nb_samples = samples->nb_samples; - int nb_channels = samples->ch_layout.nb_channels; - int nb_planes = nb_channels; - int plane, i; - int16_t *pcm; - if (!av_sample_fmt_is_planar(samples->format)) { - nb_samples *= nb_channels; - nb_planes = 1; - } - for (plane = 0; plane < nb_planes; plane++) { - pcm = (int16_t *)samples->extended_data[plane]; - for (i = 0; i < nb_samples; i++) - vd->histogram[pcm[i] + 0x8000]++; - } + vd->process_samples(vd, samples); return ff_filter_frame(inlink->dst->outputs[0], samples); } @@ -131,6 +146,20 @@ static void print_stats(AVFilterContext *ctx) uint64_t nb_samples = 0, power = 0, nb_samples_shift = 0, sum = 0; uint64_t histdb[MAX_DB + 1] = { 0 }; + if (!vd->nb_samples) + return; + if (vd->is_float) { + av_log(ctx, AV_LOG_INFO, "n_samples: %" PRId64 "\n", vd->nb_samples); + av_log(ctx, AV_LOG_INFO, "mean_volume: %.1f dB\n", -logdb(vd->sum2 / vd->nb_samples, AV_SAMPLE_FMT_FLT)); + av_log(ctx, AV_LOG_INFO, "max_volume: %.1f dB\n", -2.0*logdb(vd->max, AV_SAMPLE_FMT_FLT)); + for (i = 0; i < HISTOGRAM_SIZE_FLT && !vd->histogram[i]; i++); + for (; i >= 0 && sum < vd->nb_samples / 1000; i++) { + if (!vd->histogram[i]) + continue; + av_log(ctx, AV_LOG_INFO, "histogram_%ddb: %" PRId64 "\n", MAX_DB_FLT - i, vd->histogram[i]); + sum += vd->histogram[i]; + } + } else { for (i = 0; i < 0x10000; i++) nb_samples += vd->histogram[i]; av_log(ctx, AV_LOG_INFO, "n_samples: %"PRId64"\n", nb_samples); @@ -150,26 +179,69 @@ static void print_stats(AVFilterContext *ctx) return; power = (power + nb_samples_shift / 2) / nb_samples_shift; av_assert0(power <= 0x8000 * 0x8000); - av_log(ctx, AV_LOG_INFO, "mean_volume: %.1f dB\n", -logdb(power)); + av_log(ctx, AV_LOG_INFO, "mean_volume: %.1f dB\n", -logdb((double)power, AV_SAMPLE_FMT_S16)); max_volume = 0x8000; while (max_volume > 0 && !vd->histogram[0x8000 + max_volume] && !vd->histogram[0x8000 - max_volume]) max_volume--; - av_log(ctx, AV_LOG_INFO, "max_volume: %.1f dB\n", -logdb(max_volume * max_volume)); + av_log(ctx, AV_LOG_INFO, "max_volume: %.1f dB\n", -logdb((double)(max_volume * max_volume), AV_SAMPLE_FMT_S16)); for (i = 0; i < 0x10000; i++) - histdb[(int)logdb((i - 0x8000) * (i - 0x8000))] += vd->histogram[i]; + histdb[(int)logdb((double)(i - 0x8000) * (i - 0x8000), AV_SAMPLE_FMT_S16)] += vd->histogram[i]; for (i = 0; i <= MAX_DB && !histdb[i]; i++); for (; i <= MAX_DB && sum < nb_samples / 1000; i++) { - av_log(ctx, AV_LOG_INFO, "histogram_%ddb: %"PRId64"\n", i, histdb[i]); + av_log(ctx, AV_LOG_INFO, "histogram_%ddb: %"PRId64"\n", -i, histdb[i]); sum += histdb[i]; } + } +} + +static int config_output(AVFilterLink *outlink) +{ + AVFilterContext *ctx = outlink->src; + VolDetectContext *vd = ctx->priv; + size_t histogram_size; + + vd->is_float = outlink->format == AV_SAMPLE_FMT_FLT || + outlink->format == AV_SAMPLE_FMT_FLTP; + + if (!vd->is_float) { + /* + * Number of samples at each PCM value. + * Only used for integer formats. + * For 16 bit signed PCM there are 65536. + * histogram[0x8000 + i] is the number of samples at value i. + * The extra element is there for symmetry. + */ + histogram_size = HISTOGRAM_SIZE + 1; + if (av_sample_fmt_is_planar(outlink->format)) + vd->process_samples = process_int_planar_samples; + else + vd->process_samples = process_int_packed_samples; + } else { + /* + * The histogram is used to store the number of samples at each dB + * instead of the number of samples at each PCM value. + */ + histogram_size = HISTOGRAM_SIZE_FLT + 1; + if (av_sample_fmt_is_planar(outlink->format)) + vd->process_samples = process_float_planar_samples; + else + vd->process_samples = process_float_packed_samples; + } + vd->histogram = av_calloc(histogram_size, sizeof(uint64_t)); + if (!vd->histogram) + return AVERROR(ENOMEM); + return 0; } static av_cold void uninit(AVFilterContext *ctx) { + VolDetectContext *vd = ctx->priv; print_stats(ctx); + if (vd->histogram) + av_freep(&vd->histogram); } static const AVFilterPad volumedetect_inputs[] = { @@ -180,6 +252,14 @@ static const AVFilterPad volumedetect_inputs[] = { }, }; +static const AVFilterPad volumedetect_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_output, + }, +}; + const AVFilter ff_af_volumedetect = { .name = "volumedetect", .description = NULL_IF_CONFIG_SMALL("Detect audio volume."), @@ -187,6 +267,9 @@ const AVFilter ff_af_volumedetect = { .uninit = uninit, .flags = AVFILTER_FLAG_METADATA_ONLY, FILTER_INPUTS(volumedetect_inputs), - FILTER_OUTPUTS(ff_audio_default_filterpad), - FILTER_SAMPLEFMTS(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16P), + FILTER_OUTPUTS(volumedetect_outputs), + FILTER_SAMPLEFMTS(AV_SAMPLE_FMT_S16, + AV_SAMPLE_FMT_S16P, + AV_SAMPLE_FMT_FLT, + AV_SAMPLE_FMT_FLTP), }; From patchwork Fri Jun 28 20:15:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yigithan Yigit X-Patchwork-Id: 50205 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp511949vqv; Fri, 28 Jun 2024 13:22:54 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWVmL+O9Xq/awCyjmvCpvmjU9t7OJhkcaeBHXapOxNk0hvK1JDLXQfggniqxPshyrSiN5rEbBM2kLOfN9gv+/1wFYk324DlXIh7tA== X-Google-Smtp-Source: AGHT+IEHX5jq2PisvFE4y0tR8wTL4VkFmTRMn9gQufYr20f8I6j+nVFxtdDEwjemXiJsE/n/lEpv X-Received: by 2002:a17:906:f88d:b0:a6f:796d:c747 with SMTP id a640c23a62f3a-a715f978a57mr1220670666b.39.1719606173683; Fri, 28 Jun 2024 13:22:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1719606173; cv=none; d=google.com; s=arc-20160816; b=pBMQ8F38uLf6mbB40uS6M5MTqt5MYBkiiw3foSMevJ2GiAEYyTqwto9mTsvqNnmyTB 8rdl9J/uOIYoudl9uA5GWG9sod/ViW/XpVxUFUVeASfjBbtRxKygneqIdVOvAEGOBK1Q lZsBu38WHJcxse5gZQibCShTKgJOFJ8XO43AmGj9pJbpqjLDjQZRnCluElCQTLr4Uh88 +Bsj0xHV1oiv73R2B84vVzCqaVZ8MKJOyvO9K7h0oT6F5WTh1OtjI7eLcvmdzzszeG31 PBlToJJfCW6IlMz0mF14MffxXziB+hr2KcveG8C5s6FvFv1jeZIw2v0M4NLY9VcvFVoh CQnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=3iP5cJeLAc6KVx9TGp6asEeZN51U4qabpBkmonE2oNo=; fh=oYrUj4vT4ivb560z23e71q/pal11/Mm+yKMO8RKszaM=; b=fxTKTGwNGKLtXqRjWkWvmaQEWMccp8O7Ehk4bTpG7z6gbOUgQBvOY9Gsv0Wa4NBE8M oFHDeEx7krJVHXiH0OPWbR0EPiK/+exBnrqwlWgIMhjI/9mu9VwQnXRiPqJrmrV5JBFw pQdDJ9RU5/eFdP0qDJ1G8RRnPxwauqysVgchGBZuKCQrVJcVj/VqtRe/QTH7nBDTppAD 76B3M7eYUQ7v+sfZvCEzEL9owVFwocqfT3q8ntjML5suCMUAwmBa9yYIqcCPe/hb6h7z 9dv4XKsb5e5mhZH2OyHo7mcLiB9IPHKQm0MFb5QpO6OsST6R2s/kVvujlSQuKrToZoHu GqwQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=gUgsinNO; 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 a640c23a62f3a-a73e36d0891si15223366b.361.2024.06.28.13.22.53; Fri, 28 Jun 2024 13:22:53 -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=20230601 header.b=gUgsinNO; 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 9D8DC68D6C1; Fri, 28 Jun 2024 23:15:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7923D68D692 for ; Fri, 28 Jun 2024 23:15:32 +0300 (EEST) Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-36532d177a0so640488f8f.2 for ; Fri, 28 Jun 2024 13:15:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719605731; x=1720210531; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iR6obMx7WpRWSD1xp1HjA3/p2teyn5w1dP8oMA5Pflk=; b=gUgsinNOO/U9GHYunR01s9yZNfmVW9dlZbucSL57UoR2W5YeJMFknAKc2Ui3ApjCM4 h0MGEMbVOUKDfrV6kl1bilNu2JWIHDop9FswrSbcaeqCpOP5NhQNCB86ZQZj6ScOEob3 yvKSg3k9F0fyaHO+zC/DNvzdH8EiLJ83ajtQ71uYmNo1koLsL81F5Z5CzM/aKRzRwznf 87n16N2r/1OikpttOaxainF6bx5KbAfoKRgSbBcyXseb75WRx57AElEH58f+5sQ7BsGK RwBPzAH//duD0s1X4vgGD2wizFjXbxpBoZ8Yyb/lxGm7mBvsuGjr/5U5xVWYtneHQiP+ cwsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719605731; x=1720210531; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iR6obMx7WpRWSD1xp1HjA3/p2teyn5w1dP8oMA5Pflk=; b=fzmXcIQuR2k6HhTdDfQuYTI1cwXpqZjBElhyBJVkbyAk5FDiCVRMRk8z9bMozOSHC+ 6uypTTZKet8KACKO9KPn4bXDOhd6S6WwY3xWWjQyCoVtQpO2KXuPR5Xfz60YrdLLoavb c2eayxU5lffA31/l3IaM+yPMgz/aOzY6b//+98SCzjEjtRQP5BMQ1drcfbv4zcC1j1pP 9RGe5uyRaCxci9foL1AKXD/osJ81ykUUFRS6DTphRFgtApfjhAk4Ra8ouS8NGBvl4HmN Jhjb0pQlZUwBNhVkRaqbcqshX/ZoeIM038NagamS8NiS/9LcVOBCTBwg2cZyJAhQ92v2 5Uww== X-Gm-Message-State: AOJu0Yxx1lrn0TDQ5geHCZjKjz4kCm/OJRCH+tWm1qiEjrlQIXRiwZ5i FX0rsIgXmCyVN9RReBd1D7OmWHLjDbtb+rL/KiRurYB+NPfFE9wsVXkJBg== X-Received: by 2002:a05:6000:22f:b0:35f:276c:ac5f with SMTP id ffacd0b85a97d-366e4ede0f1mr10078474f8f.40.1719605731574; Fri, 28 Jun 2024 13:15:31 -0700 (PDT) Received: from localhost.localdomain ([2a02:e0:8bea:ef00:1561:d557:9aa3:53f4]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3675a0cd4a1sm3249164f8f.23.2024.06.28.13.15.30 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 28 Jun 2024 13:15:31 -0700 (PDT) From: Yigithan Yigit To: ffmpeg-devel@ffmpeg.org Date: Fri, 28 Jun 2024 23:15:23 +0300 Message-ID: <20240628201523.23612-5-yigithanyigitdevel@gmail.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240628201523.23612-1-yigithanyigitdevel@gmail.com> References: <20240628201523.23612-1-yigithanyigitdevel@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 4/4] avfilter/af_volumedetect.c: reindent after last commit X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: thilo.borgmann@mail.de, yigithanyigitdevel@gmail.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Vka1mKlXukjZ --- libavfilter/af_volumedetect.c | 62 +++++++++++++++++------------------ 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/libavfilter/af_volumedetect.c b/libavfilter/af_volumedetect.c index ff408a8b50..02e5740499 100644 --- a/libavfilter/af_volumedetect.c +++ b/libavfilter/af_volumedetect.c @@ -160,40 +160,40 @@ static void print_stats(AVFilterContext *ctx) sum += vd->histogram[i]; } } else { - for (i = 0; i < 0x10000; i++) - nb_samples += vd->histogram[i]; - av_log(ctx, AV_LOG_INFO, "n_samples: %"PRId64"\n", nb_samples); - if (!nb_samples) - return; + for (i = 0; i < 0x10000; i++) + nb_samples += vd->histogram[i]; + av_log(ctx, AV_LOG_INFO, "n_samples: %"PRId64"\n", nb_samples); + if (!nb_samples) + return; - /* If nb_samples > 1<<34, there is a risk of overflow in the - multiplication or the sum: shift all histogram values to avoid that. - The total number of samples must be recomputed to avoid rounding - errors. */ - shift = av_log2(nb_samples >> 33); - for (i = 0; i < 0x10000; i++) { - nb_samples_shift += vd->histogram[i] >> shift; - power += (i - 0x8000) * (i - 0x8000) * (vd->histogram[i] >> shift); - } - if (!nb_samples_shift) - return; - power = (power + nb_samples_shift / 2) / nb_samples_shift; - av_assert0(power <= 0x8000 * 0x8000); - av_log(ctx, AV_LOG_INFO, "mean_volume: %.1f dB\n", -logdb((double)power, AV_SAMPLE_FMT_S16)); + /* If nb_samples > 1<<34, there is a risk of overflow in the + multiplication or the sum: shift all histogram values to avoid that. + The total number of samples must be recomputed to avoid rounding + errors. */ + shift = av_log2(nb_samples >> 33); + for (i = 0; i < 0x10000; i++) { + nb_samples_shift += vd->histogram[i] >> shift; + power += (i - 0x8000) * (i - 0x8000) * (vd->histogram[i] >> shift); + } + if (!nb_samples_shift) + return; + power = (power + nb_samples_shift / 2) / nb_samples_shift; + av_assert0(power <= 0x8000 * 0x8000); + av_log(ctx, AV_LOG_INFO, "mean_volume: %.1f dB\n", -logdb((double)power, AV_SAMPLE_FMT_S16)); - max_volume = 0x8000; - while (max_volume > 0 && !vd->histogram[0x8000 + max_volume] && - !vd->histogram[0x8000 - max_volume]) - max_volume--; - av_log(ctx, AV_LOG_INFO, "max_volume: %.1f dB\n", -logdb((double)(max_volume * max_volume), AV_SAMPLE_FMT_S16)); + max_volume = 0x8000; + while (max_volume > 0 && !vd->histogram[0x8000 + max_volume] && + !vd->histogram[0x8000 - max_volume]) + max_volume--; + av_log(ctx, AV_LOG_INFO, "max_volume: %.1f dB\n", -logdb((double)(max_volume * max_volume), AV_SAMPLE_FMT_S16)); - for (i = 0; i < 0x10000; i++) - histdb[(int)logdb((double)(i - 0x8000) * (i - 0x8000), AV_SAMPLE_FMT_S16)] += vd->histogram[i]; - for (i = 0; i <= MAX_DB && !histdb[i]; i++); - for (; i <= MAX_DB && sum < nb_samples / 1000; i++) { - av_log(ctx, AV_LOG_INFO, "histogram_%ddb: %"PRId64"\n", -i, histdb[i]); - sum += histdb[i]; - } + for (i = 0; i < 0x10000; i++) + histdb[(int)logdb((double)(i - 0x8000) * (i - 0x8000), AV_SAMPLE_FMT_S16)] += vd->histogram[i]; + for (i = 0; i <= MAX_DB && !histdb[i]; i++); + for (; i <= MAX_DB && sum < nb_samples / 1000; i++) { + av_log(ctx, AV_LOG_INFO, "histogram_%ddb: %"PRId64"\n", -i, histdb[i]); + sum += histdb[i]; + } } }