From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 294DB45CDA for ; Wed, 28 Feb 2024 15:44:02 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 85E7768CC5D; Wed, 28 Feb 2024 17:43:59 +0200 (EET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2076.outbound.protection.outlook.com [40.92.89.76]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D57C568C984 for ; Wed, 28 Feb 2024 17:43:53 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j0mQ3Qm8CbcMgKuDAMEJP26bqi6qLNX57xmWJM8pf/kze/4vUkmR92Sc9/BygIHIYg2bnwYhanVF9/ckImltaxIZ5fMvhfOlByFh0G0r/rW02ATChKAbc48W0ukkJlu8bQiDcIbZL0CTCdempNxOpfxz5Ft1MC6Z7DkaBgMJ/VhFiYSdQ9NG7gYhxL3kM49azHrfomJ6+wCfGDTGAmYVuomkRpyfBO57cMcFTNXSOpSuzqkTDl0mffK5bRfmLhDlw0huFbpOxYvQJ0GtgIGp+clSH8vtMywtjrFhNCrvdvqOEyrm3Pt4wdwdTAKJTFmEmiinhxl47ftM1n/U5cwhlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Yt67ojyQGcVj+aJZ5i8eLkZr8ry1ScvJ3a45yO8InSY=; b=Sw32Kh5imOxH3I4f8HSzIxr+jg/znmpzVvNJyRe57MHaB4aWcys3QE4C/qgem/KKV3yrnuCJPULLbL5H6h/hnlZoxXc9jCUC2gZ1u5a5RJ+lzN7TUfJFszDgeliBEHyF3QILZipgrbRaWfEh0yRLVz3DpIYgT8QaiGwb6Nz5Lr8tK+UZXFpw1Zgb37A2b1n883E7jMM+11vQZ1XJJug+G2L5+iCsuwyNDRYLNaJmPwjg9s9WMxNw7r7LkZyE5o/116lCJFqansJQingu+FzHrHnv66THhrqqyNlrEwyam6MQIWcvdnSUuAbHmFsALhbpXNGRwpQPrDMqk+bmY5pd/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Yt67ojyQGcVj+aJZ5i8eLkZr8ry1ScvJ3a45yO8InSY=; b=dPvk6q/zXI0x8wo1h0wHIAMmZjJEHxyqBg40vONw7NZGU8tjYD538L7Z6hsgeMSXPrE4NWQXmUH/mUALRo4oPgWu4qniAO/ZP22B0FcVJUIatrZRJy6naMSb5JvA3DWhICmK0wd05PAiPo7ksrS1iXm/XkL7AHBDpD4nDA+V6EoDue79CuaecPZsmSZXwyccCTFU+pmOojVrV4n+bLe2lWq5FncnAHo0/ZJGYYKSLcdeNUUpnOWem2gwTHo73YFnyMhs6jfxU1nf/Ubu0SR+QAUAedEE+43oalL7XrFRWvw1qQGFv6RkdjMr6YCmVQHkeURueNistNCfSpbJODFz3w== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0239.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:278::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.39; Wed, 28 Feb 2024 15:43:51 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Wed, 28 Feb 2024 15:43:51 +0000 Message-ID: Date: Wed, 28 Feb 2024 16:45:50 +0100 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20240226143521.57913-1-ffmpeg@haasn.xyz> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20240226143521.57913-1-ffmpeg@haasn.xyz> X-TMN: [0USG87mAw1224z4isuQvwNMs5x8QWz1ETHP5j9rjAmI=] X-ClientProxiedBy: ZR0P278CA0200.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:6a::11) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <38135b1b-d8b5-4b90-a907-96bdf1562ced@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0239:EE_ X-MS-Office365-Filtering-Correlation-Id: 707e80be-a9bf-4bed-60b8-08dc38740fec X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1P+F74wNTa+pxKMJ/w3CzTJ/xbACZvVTNvz+MfQOJJygkV2DGoh01mrrXoXC+Gau8jgvF3hIsZM5bUWodjdWrixZg6Y5iL/1+YetqBUPtcZheEG+r7wR8FsoSHevdnxJVXk6AgNJpRojN+x+aVST0C7tZQmU9+1fh2hycr6vjN+8Z+VoMNDviEwOaTL+7Q+oGrPRYGfio/kKoJqxby7wuTuENjLATLKyqjI+nmecccLuzQbPuDN06QEV8/MqPUXYzgPMRoH7Mc7I5nzUIH6FYHdb+3Qt70m/kipZBfIwhK+TzW/sZxOG9JMGp4aWmh8k/IC+3JI5/p8sWY3YlR+cgmeZCbqtZpTdAvzKvHkY5IHXPWKLjlvb1iYByjVHqvBwILF677zQtos9npASHs2dMvzGtC+2L13ZAvllrONytbX6zI5H2aMdy4HYkSGQRR9G+CQL3W1R7T7GQY+6+3CTzn/I82Sa8mQHRpdm0LK2QVp2zb7YmYmcZLxaoMZJ8beUfIdXLNxfsWmKnSiQkbdbI2oVmbXaO3eob1MeZqpxAdS4LyrEbe0DXmEnSyzjXe99 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OXFpNktBOGpkanJ4d0ZCZ2NkRXdoaUY5eGlJcjdSMUhGd1M1NmtoN3hHMytq?= =?utf-8?B?SmVxWW5CM0RFYVdIMHRZY242VDBkOHJPaDBzTzZIb0RLbmR1UHR4YWd3RkZD?= =?utf-8?B?cUIybWdOMXViMzRpeTBUNUJPWVo5TEpGM3JiblBqRmxsc0toSVYxVHpKeFFG?= =?utf-8?B?cEZ0SG1VOHMyUE5kV1pNV2s3a1UrOVRRNXdCS21HM1o5WURsQUNkY2g4OEVN?= =?utf-8?B?N1dLMFdNKzN4WTRxVG9iQS9CU0g3eUl0NzRBallENXVwdUhJcnZQYmZIT1BZ?= =?utf-8?B?OFg5ZjQraVl2RkN4VS94UURCRlY1VjBHSWw5YjVlNnVDOEtTcjlLcjBGR1BZ?= =?utf-8?B?dEpBYU1VMWRHd1RRMENkQTNMOWcwUDM3SjhIMjBsR0MrTVF3Qm10OTdTQ1dG?= =?utf-8?B?V2p3RGlEVVVKMWIrUFlUR0dLRE03ZnBObFE2c1YyK01ST0s4YWlmUUorMHUy?= =?utf-8?B?b3F1dFpITjZGeVNlMmVqSHhrbDB5UUNDSHdCWDdPNGZJdmM1V1RRazVwOStM?= =?utf-8?B?WmlEbmpNejFtZFM1T0Y3NW4yaWFjT3dkS1J6VnN1clRPdm5UME5SWnlRVk1T?= =?utf-8?B?cXJPQ1NBUEFVRERaNGNSSDVvSE1Ya0V2TmxKUGt0ZTNnNHB1Q2JBT3FXZXdW?= =?utf-8?B?NGdybWx4ZlBibDQ2K1JWMGNlOHdyYytsdUdYRWRxT05PemRSSnNienU2WHZY?= =?utf-8?B?Z3lHQlpvWU1ISU84Ky9PRDEzMTIwSk8xeFdmU1FWV084ekI1cENFb0dXaWZK?= =?utf-8?B?eGFLSW9HWTBhVU9sSVdHempzUWkzMTNUTDBEYUl0VkZwaEZzSmtmMmkrdWRU?= =?utf-8?B?S0pTaVp2N3ptMCtKWGNiSk91RjR3V2tLdHVOR29FcUZMMzFxUldDNkRSczdo?= =?utf-8?B?NzhWSGgrUkdCZ3EwSkNmNE8za0dOZE16YjR6MjVjVFVlMC9UZUZzdWlTbHBO?= =?utf-8?B?cXJ6UjRsOEgyNlpiWk05Ymg4TTY4a0tpajdOTkhEREV6NUxoSytkOGJTaFZP?= =?utf-8?B?RjQ4amdjU01HeU43L1V3eVRPb0prdDZUOWw2UjV2WjRiUVJmaFRlZzhGdUZt?= =?utf-8?B?YkpUenJhNlR2OXZ3Y2llcnBOMlRwSlUvQ1Y4YnNoQnQ1ZDdpdTBtVFc0OGJ4?= =?utf-8?B?Rm85WFp5R1FrVkRyYzRqMlFWdytIbnNhRThKMk9vWFRFZUpuMzg5K1hyYnNt?= =?utf-8?B?RGhlRGZ5Zm82cW9tZzJZNXNCbnA5SEtxbnpEOWh2Ukc3Q1VMUXJyMVJkaTZa?= =?utf-8?B?QlplN0RaS3BBRVcxYlFjZ0s2S05EVVE1VXM4dnJWaTdMcGhxc2lHd3lKdzdq?= =?utf-8?B?aGw3cnJsU1J4NGN3bUJpNjl4Y1pydzRXMTBVcWZDRFA2Q0luV2p4dVFsNGVC?= =?utf-8?B?THUyNDdqamVoZTRCWm9zdm9WWkxGS0dOdGhHV1pkNzlhbG90aDJvNk03R1RO?= =?utf-8?B?ckRJU3F1WFhnSHRuOVJmblJTTnlrWWlwRUg5aWJ6S29xZTMvQzc5eFBreERa?= =?utf-8?B?MnRsNW9KQUlGV3ZQVWc3N3ZESm5YYnNIZXZhVWQzMEpUN0JCM2tjaFJoNm5k?= =?utf-8?B?eTBrM1d0OHRVT3dOWGpZWlU3V1NRbThGYmVNdHpiM2RzS2EwbjNtV0dnWnZx?= =?utf-8?B?dklPV2RjQjBRUmpIMnZ2NVIrcWZkcU1rcHJUU09Fcjg4SmluZFlvTGc2Q3dI?= =?utf-8?B?OTFmY0psYlVSblZJRzVacUE5WE9qc0t0M21qOXhRN1Eza2o5ZVBnWURBPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 707e80be-a9bf-4bed-60b8-08dc38740fec X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2024 15:43:51.6834 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0239 Subject: Re: [FFmpeg-devel] [PATCH 1/4] avcodec/aom_film_grain: add AOM film grain synthesis 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Niklas Haas: > From: Niklas Haas > > Implementation copied wholesale from dav1d, sans SIMD, under permissive > license. This implementation was extensively verified to be bit-exact, > so it serves as a much better starting point than trying to re-engineer > this from scratch for no reason. (I also authored the original > implementation in dav1d, so any "clean room" implementation would end up > looking much the same, anyway) > > The notable changes I had to make while adapting this from the dav1d > code-base to the FFmpeg codebase include: > > - replacing bitdepth parameters by preprocessor symbol (BITDEPTH) > - reordering variable declarations to avoid triggering warnings > - replacing several inline helpers by avutil equivalents > - changing code that accesses frame metadata > - replacing raw plane copying logic by av_image_copy_plane > > Apart from this, the implementation is basically unmodified. > --- > libavcodec/aom_film_grain.c | 288 +++++++++++++ > libavcodec/aom_film_grain.h | 38 ++ > libavcodec/aom_film_grain_template.c | 599 +++++++++++++++++++++++++++ > 3 files changed, 925 insertions(+) > create mode 100644 libavcodec/aom_film_grain.c > create mode 100644 libavcodec/aom_film_grain.h > create mode 100644 libavcodec/aom_film_grain_template.c > > diff --git a/libavcodec/aom_film_grain.c b/libavcodec/aom_film_grain.c > new file mode 100644 > index 00000000000..1bdaafc39f7 > --- /dev/null > +++ b/libavcodec/aom_film_grain.c > @@ -0,0 +1,288 @@ > +/* > + * AOM film grain synthesis > + * Copyright (c) 2023 Niklas Haas > + * > + * This file is part of FFmpeg. > + * > + * FFmpeg is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * FFmpeg is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with FFmpeg; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > + */ > + > +/** > + * @file > + * AOM film grain synthesis. > + * @author Niklas Haas > + */ > + > +#include "libavutil/avassert.h" > +#include "libavutil/imgutils.h" > + > +#include "aom_film_grain.h" > + > +// Common/shared helpers (not dependent on BITDEPTH) > +static inline int get_random_number(const int bits, unsigned *const state) { > + const int r = *state; > + unsigned bit = ((r >> 0) ^ (r >> 1) ^ (r >> 3) ^ (r >> 12)) & 1; > + *state = (r >> 1) | (bit << 15); > + > + return (*state >> (16 - bits)) & ((1 << bits) - 1); > +} > + > +static inline int round2(const int x, const uint64_t shift) { > + return (x + ((1 << shift) >> 1)) >> shift; > +} > + > +static const int16_t gaussian_sequence[2048]; > + > +#define BITDEPTH 12 > +#include "aom_film_grain_template.c" > +#undef BITDEPTH > + > +#define BITDEPTH 10 > +#include "aom_film_grain_template.c" > +#undef BITDEPTH > + > +#define BITDEPTH 9 > +#include "aom_film_grain_template.c" > +#undef BITDEPTH > + > +#define BITDEPTH 8 > +#include "aom_film_grain_template.c" > +#undef BITDEPTH I don't think this should be duplicated for every bitdepth. - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".