From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 901AD4D6AA
	for <ffmpegdev@gitmailbox.com>; Fri, 18 Apr 2025 08:39:51 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4600E68B792;
	Fri, 18 Apr 2025 11:39:46 +0300 (EEST)
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05olkn2067.outbound.protection.outlook.com [40.92.90.67])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5B3A168B154
 for <ffmpeg-devel@ffmpeg.org>; Fri, 18 Apr 2025 11:39:39 +0300 (EEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=N8ruV9yZJNXJhM8WD+UQN8C8KmqYtRHZshW7pAnfWa+NGiU6fBd+bD8NJxKO9kqrkUaBT4yuariinoQ6iSKfdfCGNUABs8iETSf/vNJagGtCQqHPXEY5lRW4ebDv/r6+1pvzE46Q5ch26sYUCPJFN4Pq9jBl2Kryy5LqJt+Hwy9LFkUKAVdd2CnlJwoZ8zZi7iaXwfKCxhb83nX2G8bGZIunUcIgFEcBUtvvJmBAvR8FTVARrnGmJKO/vX37GZVv3zEYuGzp2CXijIWrO9VBZrnHNsPuHV97LrnQzOO/lFIZwqj7XpfJly+uCHnCV1fIvEwkEPX0NT9CtqT3Z63iAw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 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=lEi5gC2cAee6G5LUC1hLPJUATu9DCOJRroOuNPVMTYc=;
 b=snIv5zL6uRw98opczcxdyZiamPmiYUAKjmddudpjW0ILGtmo27TvkSbCow0KZ6KeY1NwO8zx9l7Hpf1a/JhTgJEwNWqivOMVCcwSfTkdWVZC4GrQJCcVqbtEWTZHq03CXdEBANGl6JTjmPSXPdikGZTejkhBupP/ZREjBhSo9Twq89+bG+0E4Llty3WEkFXlNZS5ruaREGRbBv+0xA+fKJ/b3Bj+4RpGEfqQFOvaY0Wewkndq8bYTerex4oYlLYdn62nVQ7CqgPiRFSiBcfemXQkHPRkaRRJuuOhZp646gkWyhjR20U4JXjSeVOnOGRbxhiQ5qAWe6T8QTWjqJuk7Q==
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=lEi5gC2cAee6G5LUC1hLPJUATu9DCOJRroOuNPVMTYc=;
 b=FHXR0uuaCuzAVPLVToM3LiXdFY7Yfk4XtZ/yJS4kaA4tI/jWbNZKP4VzPVdJ1n6E9//98N8V+mN5CG0+c/w/3gPsbNZjuFHnzcrHOaysJfsxGwGSsXZSPkJITM7WnwMBdJ1rM11hK1FzXq6ZsTbMRL1NJ2T+cVsLWcmDLMB/QRK5jlRoIxIdGgibKVWKh7TJuo/QnXdMVR+DyQ9PWYDL5Ji6DzRjVNxNd6PqUnH+3hjsfxvcRvPdifDgVUNoVMnSqM5P0tuRz3vAB1U7164hhXL7bfi8IYCShg/Jlj3gNkcGgGIdltnENG70eQ22eY+yk10GwWk+Z0vwNxPQLVoJZg==
Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17)
 by AS1P250MB0555.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4a1::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.27; Fri, 18 Apr
 2025 08:39:37 +0000
Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM
 ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM
 ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.8655.012; Fri, 18 Apr 2025
 08:39:37 +0000
Message-ID: <GV1P250MB073757F03881718AE4FC44548FBF2@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>
Date: Fri, 18 Apr 2025 10:39:35 +0200
User-Agent: Mozilla Thunderbird
To: ffmpeg-devel@ffmpeg.org
References: <20250417235543.227108-1-47210458+raphaelthegreat@users.noreply.github.com>
Content-Language: en-US
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
In-Reply-To: <20250417235543.227108-1-47210458+raphaelthegreat@users.noreply.github.com>
X-ClientProxiedBy: FR4P281CA0090.DEUP281.PROD.OUTLOOK.COM
 (2603:10a6:d10:cd::16) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM
 (2603:10a6:150:8e::17)
X-Microsoft-Original-Message-ID: <c8aa0aa8-27c0-4501-ad30-84e934ad8bd6@outlook.com>
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS1P250MB0555:EE_
X-MS-Office365-Filtering-Correlation-Id: f77ba339-8222-476f-0eff-08dd7e548d58
X-Microsoft-Antispam: BCL:0;
 ARA:14566002|5072599009|7092599003|6090799003|461199028|8060799006|19110799003|15080799006|440099028|3412199025|12091999003|41001999003;
X-Microsoft-Antispam-Message-Info: =?utf-8?B?VTQ4Y29vdU9kanhzdW9aSHBkclJpODljY2dwYlNNc0JrMW13N1RPWXRGL29p?=
 =?utf-8?B?TUQybUZObzd1c3NySkJWZmJNOTYxSFBBWUJzVDZLenoyREhtV294Z3BCai85?=
 =?utf-8?B?cU1GUE1VbUxjcTBZY000eVZ4aUlxc2NEQWhTL01wOXVJa213V0JyMTJQV08w?=
 =?utf-8?B?OC9ERTB1VUlMT0ZYMG15R1Z2S0pnc2hHZjVlZUNvV2RjcjhESnA5SDRMOVRq?=
 =?utf-8?B?WDRPd2svcXFGc3dnTG1sTHdxQVE1REIzWHRYbjQydUtlVnQvVmZwMEhCanV2?=
 =?utf-8?B?di9VdFp1cnRBTnZUWUdjNUttZjRzRnFEbTluM2dZeklvcGxON0lPVUVyTTZC?=
 =?utf-8?B?cHhUY3NZdCtIaHduQUw1QzhCMzd5MVUvSFpzbXovKzZGa2pCVmJLbXJ1QnJ3?=
 =?utf-8?B?cDNRTWRFL0JkckNqcGZKaTd1cXk3aHVtRVJaZWo0Vm1LaU12RVZrcE0rc2tH?=
 =?utf-8?B?Z0FrTDFOVVl4Q1NWQXE0WGpXQVg5Y1ppaEN0bERCNWZJUzBSSThpT2ZreEhV?=
 =?utf-8?B?dU9xV3ZkZWozbFk2cmk4VUdLNHIrQ3hybUNycnpmNnN2NVhablBLSCtpVkFI?=
 =?utf-8?B?eVhQK2JlRFl5c3VIVmFzZWJUQjNqV2t4eFB6dW5NL1ZjN24rRlNSTk53K3BG?=
 =?utf-8?B?S3lwKzhNUmhYd21rdEZaT0NUNXdPUzJtc1pmMVlCV2FHTENuOE1UcXJVZUp6?=
 =?utf-8?B?Q3J1Z0ZlVXFhZHVRNFJRYTFTM3h1clhrYXlzYVdZcWduU2htamI1WDFUWGZr?=
 =?utf-8?B?RUpOVjdSZXhtT0lwemUrMlMrTHdCQWhpZU5qaldFWmY0SEVEUERqVk9LU1BB?=
 =?utf-8?B?NlAzU015aElpckowUGdvTE5yTncwbkRaK1IzYUJ6TUFNd3VlU1dHNUtidnhk?=
 =?utf-8?B?bnN0N0NRNWZLQjVkTkZEYlExTnlHS25oWlZBRXNnTzBJZGxXS01NV2hzZ3hs?=
 =?utf-8?B?VEcvUTZlOHF5WFlvaUFTTVVEeWErd0RmWTNlUjRMdzVyRFN0OUVGV1Y2eUF3?=
 =?utf-8?B?L2duTGM3NHU5T1RrYzRQZjY3YTdJaVFsMjlVdXdWU1FVRWR0MXR3UjArM0FV?=
 =?utf-8?B?QnFUUERRV1M0bjFpTDBjd2kxM3NVWmNmMnJNZzZCNHorZkdjRUx4UXRqM2dk?=
 =?utf-8?B?SUhFTk40Z2hyMVRVTEJPOWtucGRqeHk5VDA1N3k1VXBQd1VMVEcvTWJ0VlJT?=
 =?utf-8?B?bXhuR1RPYzhyUDdEVFRscWVJb1ppQTJZNG1jZk9paTZ1N2wwVHVDbGVQeDll?=
 =?utf-8?B?d0kwU2dueGYxTGF4V1YzS1FXTXl1SjBBemcvb25tZHF3Unp2dDdabGR6QmZk?=
 =?utf-8?B?WVV0WlRGK0pDd24wcFAwYUgyUWNMYU4wYmxjMEFaUG85a2pNdktzdm1UalhZ?=
 =?utf-8?B?R1ZsR1dHQ09aVGRaK3BWbkRtcytqczVYV3lxWnowRlBBUUI3blpTMTM1SHZr?=
 =?utf-8?B?SlhiTDZYRGtvaktQQ2R6Q2JIKzJRcnFYcGtmZ0MzS3I3WVl0RHNhRzEvVVZT?=
 =?utf-8?B?S3BQeDdacmdOUnB2Z3l1aGpwSkhSeDhyOXhjMHQ4MWovcjQweFJIQjhZQy96?=
 =?utf-8?B?VFZsU2FIc2w2Qng3Y2YxTWNiSHVkdWIxSnp4Z2tVWjZBL2NDN0ZqTDBZdTdE?=
 =?utf-8?B?ckpsbjVKckErTXpxN1hqVXpFcVpwNUE9PQ==?=
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NmY1ek9DSFZhKytXekNDc0dLaU83b2Y5Q3VBN09lNXh0dkVpeno1WGs1S0RK?=
 =?utf-8?B?dUFuRTBjcVZmbFlNcFpOb0xBVlhIYnZZSnNFMXRaWDdidi9rNWJ1RndJSHRy?=
 =?utf-8?B?U0FJZ0M0ZDg2Sm50QWZ1QkZDQW5LdDVMS09GMFl6UEd1dlIvT3hoQ3REN1pS?=
 =?utf-8?B?RjFMZDVpWXlFTVRaandrd0MzcW0zN2JXWkhVaTVCVWIvcTgxNlV5RnJrMzNl?=
 =?utf-8?B?YnorUUF3UlVzWS91WEhyOC9XRW1jeGd3aXlIOG5NQkFQUDMrckxnR3JGV1Fr?=
 =?utf-8?B?allES1I3dEtVc2VaRmozMlJaLzlVNTZPR1RLQ0xyeU5NZXQzeUtOeG45d2VB?=
 =?utf-8?B?eVFMc0hJVmp0NWxTL2dpZVJ4YmU3UEk3YzZUdkJyanNnNFdsNm95NUNxV3dV?=
 =?utf-8?B?ekZRUTB5b25Fd3NVeXZIeHlBNXdSVlVJMGRjNFJhaU1LQWR4MWE5THZTaGV1?=
 =?utf-8?B?YmlPZDRJOVZRRHNzMSthVzZ3YzFEVVZnNVN5NURSU1RRMlQzeWFlcnVnRjkr?=
 =?utf-8?B?c2lDMFdaRERlaFVhR05nWmxjQk51aWNBcGdaRnlQb1lrclpFUTZDZStObm9J?=
 =?utf-8?B?YWFoM1YwbjA3bm5La0JiS0laVFRwOTNvRWtRRW1OaFNlUUVITy9nQ0lYL0RY?=
 =?utf-8?B?YjlsaEw2eEloLytCVTBSajdTakJ6NkUwUndkdkxsNC9vTTh6ZGlkZmVzUUd4?=
 =?utf-8?B?b0lPbVIyNHdGb3lWbDd3Z1dJbHdNRGJkYU9pS1lacjF3aXY3M3RMMGJCMEln?=
 =?utf-8?B?ZVB6UitBS0cxSjIzUWh6NVI5VUxGOHdKelpHKzRxV0psNkFmd21jSTl4Q0xw?=
 =?utf-8?B?T05HZGo4bDd0UEk2NHJjdXR6SnVxTDBpMUg5RzZTcG5acmVXbW4zQUxQMGxm?=
 =?utf-8?B?UktabWgveXFMTFBQVEQ4allRenZXZk1WTEZjVUhUait3cjhjTkJBUExEbnJa?=
 =?utf-8?B?K0JMc2FjUndTQit6M3lDS2hVcFBvWTZxT2ZlQURnMG9KRFBZbnZLY28rTW5w?=
 =?utf-8?B?MDJxdEIwbVJVVVlLalVzVVBWb2xZSmY0dTFFUEl4ekZaZDY0SzNsek13SVRE?=
 =?utf-8?B?NVNhbVlxVVhyQkRMMG1ERXlLb0l3ZEpNZXRiUnE0SWQzbFZ2UTg5dkw2V3Zl?=
 =?utf-8?B?MWtIaDFRNjBFKzBWSUtEY0RJVTYra2JSRSs1UXBMNzJMRGxNS0dPaFFubnhV?=
 =?utf-8?B?cEV2YnNpaFd4VjkyV280Yk5iZWhmNFNSdVB6eVA2anJNSlMrSS9BcDRvL1RP?=
 =?utf-8?B?endzSzdnM2Y4K0FaQWlOVVNsV3hXUUhlUDllZzBIS0lNcmlJTEdERTRORTl4?=
 =?utf-8?B?QWdHdTM3QzQyQW5tcy9SSG5NWkQ4cGJqcDhHaFA5Z0RQUWZLdVVXYW9WSmtR?=
 =?utf-8?B?T095d3VEN1JFWUpGei95NFNJRE92NTQ5ZEZNaU5SMFJIcHRwc2VWTlFJZFMv?=
 =?utf-8?B?YWtGN3MzcTg5clUvNDhCSTVJdG9Ic3p5dEFNVDFsNXF1M2pCbjh2TmczR3pQ?=
 =?utf-8?B?MGxEVXpMUGRiTUlMb1J1YTFXeU5Ld1VCRis4eGY5TVEwY3p4OUR1Ni8xdEph?=
 =?utf-8?B?TEtUMWRSbEkrT1ZJYkVBNVV6OXdaTTcrMHM3TlhFUjhpbUVaUVJPTms2Ukdh?=
 =?utf-8?B?MXdscEdSamYwK25yb0NibzZiVkVxMkhyOGFKbUNiUk1FcWkwbHpyODRhT3Bv?=
 =?utf-8?B?M3RiUUpmdXNQblA4Si8yUStCcW9VRGk4cDJzRVg2dEVyKzliU1UzQUNiYmNE?=
 =?utf-8?B?cHFDWnJ0QlhlWXZ4Q3BsYTBHSkcxR3c2czZ3NnllcXNSZjh2NHcwSk9POXZ1?=
 =?utf-8?B?alBVQTVzckQrUHdWNkJidz09?=
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f77ba339-8222-476f-0eff-08dd7e548d58
X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2025 08:39:37.5986 (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: AS1P250MB0555
Subject: Re: [FFmpeg-devel] [PATCH v3 1/5] libavcodec/vc2enc: Split out
 common functions between software and hardware encoders
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/GV1P250MB073757F03881718AE4FC44548FBF2@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

IndecisiveTurtle:
> From: IndecisiveTurtle <geoster3d@gmail.com>
> 
> ---
>  libavcodec/Makefile        |   2 +-
>  libavcodec/vc2enc.c        | 513 +------------------------------------
>  libavcodec/vc2enc_common.c | 376 +++++++++++++++++++++++++++
>  libavcodec/vc2enc_common.h | 196 ++++++++++++++
>  4 files changed, 581 insertions(+), 506 deletions(-)
>  create mode 100644 libavcodec/vc2enc_common.c
>  create mode 100644 libavcodec/vc2enc_common.h
> 
> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
> index 7bd1dbec9a..d4ebd86866 100644
> --- a/libavcodec/Makefile
> +++ b/libavcodec/Makefile
> @@ -769,7 +769,7 @@ OBJS-$(CONFIG_VC1_CUVID_DECODER)       += cuviddec.o
>  OBJS-$(CONFIG_VC1_MMAL_DECODER)        += mmaldec.o
>  OBJS-$(CONFIG_VC1_QSV_DECODER)         += qsvdec.o
>  OBJS-$(CONFIG_VC1_V4L2M2M_DECODER)     += v4l2_m2m_dec.o
> -OBJS-$(CONFIG_VC2_ENCODER)             += vc2enc.o vc2enc_dwt.o diractab.o
> +OBJS-$(CONFIG_VC2_ENCODER)             += vc2enc.o vc2enc_dwt.o vc2enc_common.o diractab.o

Overlong line

>  OBJS-$(CONFIG_VCR1_DECODER)            += vcr1.o
>  OBJS-$(CONFIG_VMDAUDIO_DECODER)        += vmdaudio.o
>  OBJS-$(CONFIG_VMDVIDEO_DECODER)        += vmdvideo.o
> diff --git a/libavcodec/vc2enc_common.h b/libavcodec/vc2enc_common.h
> new file mode 100644
> index 0000000000..eaaf5ac99c
> --- /dev/null
> +++ b/libavcodec/vc2enc_common.h
> @@ -0,0 +1,196 @@
> +/*
> + * Copyright (C) 2016 Open Broadcast Systems Ltd.
> + * Author        2016 Rostislav Pehlivanov <atomnuker@gmail.com>
> + *
> + * 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
> + */
> +
> +#ifndef AVCODEC_VC2ENC_COMMON_H
> +#define AVCODEC_VC2ENC_COMMON_H
> +
> +#include "avcodec.h"
> +#include "dirac.h"
> +#include "put_bits.h"
> +
> +#include "vc2enc_dwt.h"
> +#include "diractab.h"
> +
> +/* The limited size resolution of each slice forces us to do this */
> +#define SSIZE_ROUND(b) (FFALIGN((b), s->size_scaler) + 4 + s->prefix_bytes)
> +
> +/* Decides the cutoff point in # of slices to distribute the leftover bytes */
> +#define SLICE_REDIST_TOTAL 150

Need not be put in a header.

> +
> +typedef struct VC2BaseVideoFormat {
> +    enum AVPixelFormat pix_fmt;
> +    AVRational time_base;
> +    int width, height;
> +    uint8_t interlaced, level;
> +    char name[13];
> +} VC2BaseVideoFormat;
> +
> +extern const VC2BaseVideoFormat base_video_fmts[];
> +extern const int base_video_fmts_len;
> +
> +enum VC2_QM {
> +    VC2_QM_DEF = 0,
> +    VC2_QM_COL,
> +    VC2_QM_FLAT,
> +
> +    VC2_QM_NB
> +};
> +
> +typedef struct SubBand {
> +    dwtcoef *buf;
> +    ptrdiff_t stride;
> +    int width;
> +    int height;
> +    int shift;
> +} SubBand;
> +
> +typedef struct Plane {
> +    SubBand band[MAX_DWT_LEVELS][4];
> +    dwtcoef *coef_buf;
> +    int width;
> +    int height;
> +    int dwt_width;
> +    int dwt_height;
> +    ptrdiff_t coef_stride;
> +} Plane;
> +
> +typedef struct SliceArgs {
> +    const struct VC2EncContext *ctx;
> +    union {
> +        int cache[DIRAC_MAX_QUANT_INDEX];
> +        uint8_t *buf;
> +    };
> +    int x;
> +    int y;
> +    int quant_idx;
> +    int bits_ceil;
> +    int bits_floor;
> +    int bytes;
> +} SliceArgs;
> +
> +typedef struct TransformArgs {
> +    const struct VC2EncContext *ctx;
> +    Plane *plane;
> +    const void *idata;
> +    ptrdiff_t istride;
> +    int field;
> +    VC2TransformContext t;
> +} TransformArgs;
> +
> +typedef struct VC2EncContext {
> +    AVClass *av_class;
> +    PutBitContext pb;
> +    Plane plane[3];
> +    AVCodecContext *avctx;
> +    DiracVersionInfo ver;
> +
> +    SliceArgs *slice_args;
> +    TransformArgs transform_args[3];
> +
> +    /* For conversion from unsigned pixel values to signed */
> +    int diff_offset;
> +    int bpp;
> +    int bpp_idx;
> +
> +    /* Picture number */
> +    uint32_t picture_number;
> +
> +    /* Base video format */
> +    int base_vf;
> +    int level;
> +    int profile;
> +
> +    /* Quantization matrix */
> +    uint8_t quant[MAX_DWT_LEVELS][4];
> +    int custom_quant_matrix;
> +
> +    /* Division LUT */
> +    uint32_t qmagic_lut[116][2];
> +
> +    int num_x; /* #slices horizontally */
> +    int num_y; /* #slices vertically */
> +    int prefix_bytes;
> +    int size_scaler;
> +    int chroma_x_shift;
> +    int chroma_y_shift;
> +
> +    /* Rate control stuff */
> +    int frame_max_bytes;
> +    int slice_max_bytes;
> +    int slice_min_bytes;
> +    int q_ceil;
> +    int q_avg;
> +
> +    /* Options */
> +    double tolerance;
> +    int wavelet_idx;
> +    int wavelet_depth;
> +    int strict_compliance;
> +    int slice_height;
> +    int slice_width;
> +    int interlaced;
> +    enum VC2_QM quant_matrix;
> +
> +    /* Parse code state */
> +    uint32_t next_parse_offset;
> +    enum DiracParseCodes last_parse_code;
> +} VC2EncContext;
> +
> +extern uint16_t interleaved_ue_golomb_tab[256];
> +extern uint16_t top_interleaved_ue_golomb_tab[256];
> +extern uint8_t golomb_len_tab[256];

Missing hidden visibility for all of this.

> +
> +static inline void put_vc2_ue_uint_inline(PutBitContext *pb, uint32_t val)
> +{
> +    uint64_t pbits = 1;
> +    int bits = 1;
> +
> +    ++val;
> +
> +    while (val >> 8) {
> +        pbits |= (uint64_t)interleaved_ue_golomb_tab[val & 0xff] << bits;
> +        val  >>= 8;
> +        bits  += 16;
> +    }
> +    pbits |= (uint64_t)top_interleaved_ue_golomb_tab[val] << bits;
> +    bits  += golomb_len_tab[val];
> +
> +    put_bits63(pb, bits, pbits);
> +}
> +
> +static inline int count_vc2_ue_uint(uint32_t val)
> +{
> +    return 2 * av_log2(val + 1) + 1;
> +}

This need not be put in a header at all.

> +
> +av_cold void vc2_init_static_data(void);

If you export such a function and not the corresponding AVOnce, then you
are most likely adding a race. And indeed you do in patch 5/5.

> +
> +void put_vc2_ue_uint(PutBitContext *pb, uint32_t val);
> +
> +void vc2_init_quant_matrix(VC2EncContext *s);
> +
> +void vc2_encode_parse_info(VC2EncContext *s, enum DiracParseCodes pcode);
> +
> +void vc2_encode_seq_header(VC2EncContext *s);
> +
> +void vc2_encode_picture_start(VC2EncContext *s);

1. Missing ff_ prefix.
2. These functions should not be exported, they should be static in
vc2enc_common.c and a new function that does what is currently being
done in lines 932-950 of vc2enc.c should be created instead and called
by both encoders.

> +
> +#endif

_______________________________________________
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".