From patchwork Sat May 28 08:39:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santanu Biswas X-Patchwork-Id: 35953 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6914:b0:82:6b11:2509 with SMTP id q20csp1274510pzj; Sat, 28 May 2022 01:39:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxaZWrNHn4XiA30OCvZ6e3PIrpLOTo6bU2iZOTGE5/0fC0rJY7ddyb6G4hDHLu5Zrfyhxij X-Received: by 2002:a17:906:dc8f:b0:6f4:e6df:a48d with SMTP id cs15-20020a170906dc8f00b006f4e6dfa48dmr42012277ejc.206.1653727188597; Sat, 28 May 2022 01:39:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653727188; cv=none; d=google.com; s=arc-20160816; b=yV4KNRKhwuAVUW/p6etjYi221P44WErnUKTfMtlm68KDTomqNMemi6POc1S5XO7SsN IEs1DDuEBpPy4C8IvB4mmuu+sfV1MdE2hTI7wXvz9JUKHiylQz7SanXshOxx+qa0E3N4 fLynniEIxVAuRX2WBaspxzgizC5+fg9AtuTqPcj+YkHEtHdHArcMJhpkc/MYYKKpa2lX 9yvdddYzdCIjVr5VQ410oyypmLIC2Kv/wnSVxXW2cgWEG0os+0fP6+0ElE8y81BDUQCb ow9a035mgct1YkQz275hTUTA9wd5OmAZ5GuEzPFyLB8BjUOJtGzZLxQc0JjEEmVA0CBU KNXA== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=EWVzSJ1sQywpXEiSdBM+3e7CszhsmJV+b/nGgeDS7iQ=; b=oXfNd3uZG+PNKcRgGYpqTcYH3uPiJqMtmo600GmMbWXHJH4WhFXkmP4NhWETlxmgwD H8YZ++WDDoSptcKpimxcX571YcIIxaXeoKNurwl8LZQhsSsL8ldd0N5DqD3VOm/ZwM6D kffVPrT5VqSfxRKMYJqUbxsuJg5aaxcVlbLagQbcYyGfRrIdZd3f1t4FI+xZtD67d/EY 7HVqF0dFCWJzEHIaUSFlqRXKwz71Ldv3aYKfG2WA5lQJiI5wDCNw7IEXwYSX4tr7Ro95 dR9Jc7vB7+KZwD26DTMJEJ9Elq8OdPlQEpOFDmzJfCoIJyBhWemKkphKNBruasCrhsgb LpYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="jjDR5KW/"; 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 w2-20020a05640234c200b00425e843eda1si7397032edc.72.2022.05.28.01.39.46; Sat, 28 May 2022 01:39:48 -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=20210112 header.b="jjDR5KW/"; 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 9BF7368B3F9; Sat, 28 May 2022 11:39:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EA66C68B3F9 for ; Sat, 28 May 2022 11:39:36 +0300 (EEST) Received: by mail-pl1-f171.google.com with SMTP id d22so6067595plr.9 for ; Sat, 28 May 2022 01:39:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=TEvmJ3WgvKB5dzgqBSz4woESzusYxFZov9qX/7n4wC8=; b=jjDR5KW/v598s8K96NPbC6rucSErMoyRL1QMyW+78OSykaP7sGIWlrcjHyo6W0ELXS zdv07AfUPsG5ZindUwwHqC/DFWnvIHGYRsfGoaB48mKekGN90jtaNI6KyZEme7vJP7+H azmN34CEsfdJH2qXw+rZN+NniWoY3C3hosnAuaqqqLm+XERkbA9y6nsM7iKVPLT6oCbV UI7KrSC9ubmctfXWRKJaH9WYcKlRgO9sIcoTI2KMwWURehSbB2AnmQUcxevA6r46nFmU Wg/JJmxsz7rw5hz9Df2uHd17Ie8pvoMGq45oWUwITENiHMUiCpNmfPrk4tbOn5cEH8ci +g5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=TEvmJ3WgvKB5dzgqBSz4woESzusYxFZov9qX/7n4wC8=; b=EooHj+hPPUteqbgJTq2eBFY12emINfhFCrpDodfv8+3wKySKf6vt/ly7TA2viuQTAx 1e/hruLYTNHQo5QL6yLj/mW8kpdIXrnG6LYzVNptrhGepxHS7fLRDb/FPP4cVShdGHjr kHQrfLe1NG5SgY3KPW/07OliTQCPB9j8J8hDUoDGFqcPFQi7GV4nOR2DqZB2PzPXJ/NZ 12doj0oJyPvXZdt5jN4kjpfTD9+nalajhIPWffsIJtMHD1reS8tRRCl6iImtk5ltqixA iWyTE7ZuLj4RQxCr6oJ2nIt05zFepShAjsrMY7vPI36PlkmVFdjvHpiBwsbr6+3WYvVW WuZg== X-Gm-Message-State: AOAM532QjBVbE/dzKGx5XAdKoxrauxEKlBgpeZEiFEGtSM0mubppwuft PI9orqB2E1MZzgXRc7tzeW75IanrJ2TrHCqp X-Received: by 2002:a17:902:bb10:b0:163:6f61:fd46 with SMTP id im16-20020a170902bb1000b001636f61fd46mr13458961plb.78.1653727175191; Sat, 28 May 2022 01:39:35 -0700 (PDT) Received: from sbpc.sbnet ([45.123.218.23]) by smtp.gmail.com with ESMTPSA id i4-20020a655b84000000b003faf4acac63sm4747514pgr.13.2022.05.28.01.39.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 May 2022 01:39:34 -0700 (PDT) From: Santanu Biswas To: ffmpeg-devel@ffmpeg.org Date: Sat, 28 May 2022 14:09:21 +0530 Message-Id: <20220528083921.16538-1-shbisws@gmail.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avfilter/asrc_sine: Generate full amplitude sine wave. 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: Santanu Biswas Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: fiKm6dFU8UBq Previously, generating a full amplitude sine wave require to either use the 'volume' filter in combination with this filter or manually generate sine wave using 'aevalsrc' (e.g "aevalsrc=sin(2*PI*t*440)"). This method is not bit-exact; therefore it is much coherent to not scale the amplitude by 1/8 and keep it as it is. Signed-off-by: Santanu Biswas --- doc/filters.texi | 2 +- libavfilter/asrc_sine.c | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index 0e10946cca..a42e27b9b5 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -7452,7 +7452,7 @@ Set number of taps for low-pass filter. @section sine -Generate an audio signal made of a sine wave with amplitude 1/8. +Generate an audio signal made of a sine wave. The audio signal is bit-exact. diff --git a/libavfilter/asrc_sine.c b/libavfilter/asrc_sine.c index c0d8d2265b..6c2f9d40f3 100644 --- a/libavfilter/asrc_sine.c +++ b/libavfilter/asrc_sine.c @@ -83,13 +83,11 @@ static const AVOption sine_options[] = { AVFILTER_DEFINE_CLASS(sine); #define LOG_PERIOD 15 -#define AMPLITUDE 4095 -#define AMPLITUDE_SHIFT 3 static void make_sin_table(int16_t *sin) { unsigned half_pi = 1 << (LOG_PERIOD - 2); - unsigned ampls = AMPLITUDE << AMPLITUDE_SHIFT; + unsigned ampls = 32767; uint64_t unit2 = (uint64_t)(ampls * ampls) << 32; unsigned step, i, c, s, k, new_k, n2; @@ -116,9 +114,7 @@ static void make_sin_table(int16_t *sin) sin[half_pi - i - step / 2] = (k * c + 0x8000) >> 16; } } - /* Unshift amplitude */ - for (i = 0; i <= half_pi; i++) - sin[i] = (sin[i] + (1 << (AMPLITUDE_SHIFT - 1))) >> AMPLITUDE_SHIFT; + /* Use symmetries to fill the other three quarters */ for (i = 0; i < half_pi; i++) sin[half_pi * 2 - i] = sin[i];