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 ESMTP id 5F97447ECC
	for <ffmpegdev@gitmailbox.com>; Mon, 30 Oct 2023 23:06:58 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C285568CCC6;
	Tue, 31 Oct 2023 01:06:55 +0200 (EET)
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05olkn2029.outbound.protection.outlook.com [40.92.91.29])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BA8D468CBC2
 for <ffmpeg-devel@ffmpeg.org>; Tue, 31 Oct 2023 01:06:49 +0200 (EET)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=mHEzfwxGQRVDoCvSNGjv7UY+ppzwf32fq/5xCmGRPw4Ad4qlGd7znH5Cia1pC+FeV5vfMJT0cpxTt/0bmaRjSlaAqew1IYf/fgrQG6435zCXZ0eo/bc7xIsNeMzLE1zkOvS8tnV6cagFP9sFHKK6Bg6S8g2Xiz3JH4bBSQWaZ7g1TaytBhRXRYYpscHBeEfZcHyDx0NAchIHmyf4c6GStUG2Xw0d6RintsLHxMtdHLmHmAn3166XzKOxu4j+6YxuWW+u3Mqiy6DUOMb9SF3cnSku1Rek3rClBV35B+/zzibY32eFWd5CLk4PL+AljtQNUW8dnZtUX1YcxSQFQgpOCQ==
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=jhV94Yb5m9hC+4cxbidvxswvhNp7ckQs1IQpr2g6rVg=;
 b=gV3t9biwtHESwYldJZ8ukOhssqFxHmyY3aj59Xt1/ELQlxu1PVbTYoMty3LQs4wYaM739y3MjA+NALKBXYOqLRCb9vwOm7Bsg+1CsMnLO1T91L0Ic194Io+x5G/JxLfKN3XTuvEzGWeDUadQN/V6ElIK8C8UGsHpncougI+pWbY9NTxR0A5TGUd2NWZyLMf/RAK6UUNTR68Q7agKRLtPIwn5aShYgbwttvlGPW8hLqbNI+ZHP9qGAQNzHOBNgcVF3tQeY2Ds6CqmoscyYI1QbjkxmJN52jUMD2MkM8uffeXuXuFzUbAxczWW1aeKinYYpegi+MWbcLLbG9HuFwMHFw==
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=jhV94Yb5m9hC+4cxbidvxswvhNp7ckQs1IQpr2g6rVg=;
 b=s6pUpqA2SHLZ2sR43rBQSngcmLhxsAl5uysGa7qBzlbUcbLwK4qdxMQXysI5f56aW7WxZoGKMZdylqOZCT0/6msehx623lEHYDxXeUo/xXI00SPq0lsnIpmNRP1AXGBjvzcgQFs7YG+0iv1tqaGI6EKLC0aPT1Z7xtDl268RBmn6V2Ra6aH131E0yNYhJ8HNJh6Z+5zDmV7xhQ0YO/kGULpm0fF2iupRrgTpBiEaeEsqcet0iO6SZgdFkl+9QWtva5vBf4qhOTPfbQEBgGYM904mctBLcr3PwSYWH14KpYb1jBhR2/MG4+1gDPlcLliIw6TdKdJvqYx7wLzQO8VrpQ==
Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14)
 by PR3P250MB0082.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:171::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.28; Mon, 30 Oct
 2023 23:06:46 +0000
Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
 ([fe80::f59c:9cff:a42d:bde]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
 ([fe80::f59c:9cff:a42d:bde%3]) with mapi id 15.20.6907.030; Mon, 30 Oct 2023
 23:06:46 +0000
Message-ID: <AS8P250MB07441A1C6145483675C1E7398FA1A@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM>
Date: Tue, 31 Oct 2023 00:08:04 +0100
User-Agent: Mozilla Thunderbird
To: ffmpeg-devel@ffmpeg.org
References: <GV1P250MB073754E215A199E7219CC13A8FC3A@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>
Content-Language: en-US
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
In-Reply-To: <GV1P250MB073754E215A199E7219CC13A8FC3A@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>
X-TMN: [1O8TDbT7fQwza2ByAZeSlN2+63PmbShbE7vIwtSSg6I=]
X-ClientProxiedBy: ZR2P278CA0087.CHEP278.PROD.OUTLOOK.COM
 (2603:10a6:910:65::12) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
 (2603:10a6:20b:541::14)
X-Microsoft-Original-Message-ID: <d2919b83-3f6b-4f3b-af1f-e60fa36670fc@outlook.com>
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0082:EE_
X-MS-Office365-Filtering-Correlation-Id: 4c2373eb-1035-4472-e170-08dbd99ce3f8
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: grV+CYFZOx75/tQp6mn0gau3ehZ3jr5882znSk/o7J02vzyBq1JtZVlDINOu8yqJ6I3mUZ6KFdjFpXzas0Hx7UbyYFlo71PEvs8QJfL0H4LzfhnXbDUz3CbncO/NjDBL16D0dzMDyCnRuvDHL1n0x/6vS05lN7vGYt44y4XgexVVnoLHxS/AUoqjGaM7/nCf8zecydPyrDZ1jIDfH6ErZ7+D1WLQtIpGftQ4Dne3vxf0Uiyg5OwKqojntXKIhPiVkXxi3Nk++QihugG8bEJrtuJSQdsud/hF9MCy29/kkgh6ZhNe/e2BMr9WVs6f3Biyfu2t+lEo7Mf6yk8MetMbl0VbEePZG96HE68SWFPrDTKkBVznWgQPQjqbKm01HaS5KRLrHsnWJFU+XNO7jL061OksjJ6Qk8DCFgs8ZPdm33KPPUt71CJCS1NxUkG/gxenQ2Z+WL4DGPDcy+DQvrvprJLSfEo2/f3SERMa+7QoroSKbx4Pb+ope6FhVIn0UInz5Gus6JYIG6H5edOgrLKw6cgS6B+ORIOSC1vn877tTDWw4RZr2fDak8u2UNcBApWL
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RjVtb0xqY1JVSEEzUjZsOWV3bm1uVnQ3NzgwRnI4aGNQZ0p0VlZ1MWFMaHJZ?=
 =?utf-8?B?c0RnUDNiSFExUGI1djJIblVSYm5JRE9oZExURHBod3lqa1lreEloNUlQaVNV?=
 =?utf-8?B?UXhyTGpFMUZKeFptM3B5SENkbzFiZkExamtkRHlFVXJtdXdRRXFrKzFMOS9y?=
 =?utf-8?B?YWpoQlgra1YxSDBjVnZRR0dxdGV3YWEvQmNuOXY4OTBvZm9COXB3M25mWmVY?=
 =?utf-8?B?OHgrTk1VMFl6UnBoanl2TVZxelp0Z0tmUk5WOStnTTU1cnpzMDRZK3IwNWVp?=
 =?utf-8?B?eWFFYVl1Q3RHT2NYSUozQWNTdjJybU5FL0tFQjZaSDFGZStUbEw4LzAzdy9j?=
 =?utf-8?B?ZUJwWlhNWFpqamFpTVN5OVIvQWRCaDkxMGUxRHo3ai9FU3VOaEh4UEsxRzZl?=
 =?utf-8?B?T0lpbExQcU1Jd0ptYTZlTGx2eEdMdnJyTktWSWF5ZGVYUG43d0NNenB4emJK?=
 =?utf-8?B?VFBjNnMzYmZDdXNORFJXdEdtenZlbFlCZE81V3VwNjFXMTA0ZXI3TmFoWjBq?=
 =?utf-8?B?ejVIeExMOC9QSUtTSUJpdnJ1NFhZYWdMSDB4U2psN1dtQVFXSUhYaDJQdlh6?=
 =?utf-8?B?aVZ0WS9PcEpscWV6bmNqQktPUmRUUGV2a0FreTNLSC9Sb1FDTEZ6QjgzU2Y5?=
 =?utf-8?B?RFdHTG0zRC9wenFTVEwyRnBITGxaVGlGK0dVOWNFUUVjenV6aHBRbm1ia1Nj?=
 =?utf-8?B?QTF0MGRMRG13bHRQRXdvSnJzSXk2akIvdW1laGpSenp0ZW5Fanp1ejUxRHlW?=
 =?utf-8?B?MkpRMTZONzVtMDg2N0hEdEpZTmlNRW95WnRZeUVCU2VxVVcrZDl5ZFlrUUFF?=
 =?utf-8?B?ZVFDaDBEc3JMdkFJWDljKzM5UmU3Q0xDQmpXMFArbmNhNVh2VStOS013Q2JW?=
 =?utf-8?B?ZXVmcUg2ZlBLUHFlU2c2VU1uOHpINnFBVURFenpWR2ZpQUFwY2JEUEhwQTBH?=
 =?utf-8?B?SXhmbTdqSk1RcVJ3dU45S2JYOFp6cDlaZXYzY1o1Ymc2dWJRVTZQS25KdlZS?=
 =?utf-8?B?ak1NalhUZHp4emJYSmpjUEhMdHZhbVRLckZrY1lnaURQekJKMndWbmVzeWNS?=
 =?utf-8?B?K3l1OG9wUi9QRkp3eTY0WEQrTXpUSlNIcU1xQ050MGJRalNxNCswR1k0M2Fy?=
 =?utf-8?B?dGFkUzYzMWQrSnQrWHowTW55TS9rOTdDWHIvRk5pa0VNcWFrZTZuaHg1RFhL?=
 =?utf-8?B?R2cySGJpbWYrZjVnR2xxOVgyUW9kdFBmVENXTGdrdHRDc1VXZjAzTW5BaDlZ?=
 =?utf-8?B?VXU4YlJPRWNZRE5yZDN3S2VJMStxck9EQ1NVSG1zdXhiZTRudnBYZ3JMaEhh?=
 =?utf-8?B?TDlWWkkzR0ozWTJ3ZHhqeHphT1lFbzN6NHZVdVNDNlBXMEZxY3NyZ0FlRkN0?=
 =?utf-8?B?ZlVvU2haN3pnTVRWNlNzN1NvU05OOFRUK2xYYU1sSFo4cTQveEpEZ3htYzVa?=
 =?utf-8?B?U3lRZGcrMVB4OWJNNFRsZ1hPWWVyYkFQSTQ3VU5uaEs5ZzRJQUhpYVlueXVk?=
 =?utf-8?B?enRCME1GMGtkQU5LVWZBSGhqUmVOOXZQNlpXdmNtOVJnTi9Sd25sTW5XN21t?=
 =?utf-8?B?ODY5ODFtUG54K3ZSZmttNHhSUzd5c1QwZEVSVXBSbXF5R2p2eTJPTUc1eURO?=
 =?utf-8?B?VlZDaUpJSm1QY0xxdzBLb3cxd05IYzg5bkR3anlpTUFNNWdKNEpLWFNpSEJD?=
 =?utf-8?Q?V7NuN0vNDWiYN+vfIcx9?=
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4c2373eb-1035-4472-e170-08dbd99ce3f8
X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2023 23:06:46.8491 (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: PR3P250MB0082
Subject: Re: [FFmpeg-devel] [PATCH 01/61] avcodec/vlc: Add functions to init
 static VLCElem[] without VLC
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/AS8P250MB07441A1C6145483675C1E7398FA1A@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

Andreas Rheinhardt:
> For lots of static VLCs, the number of bits is not read from
> VLC.bits, but rather a compile-constant that is hardcoded
> at the callsite of get_vlc2(). Only VLC.table is ever used
> and not using it directly is just an unnecessary indirection.
> 
> This commit adds helper functions and macros to avoid the VLC
> structure when initializing VLC tables; there are 2x2 functions:
> Two choices for init_sparse or from_lengths and two choices
> for "overlong" initialization (as used when multiple VLCs are
> initialized that share the same underlying table).
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
>  libavcodec/vlc.c |  68 +++++++++++++++++++++++++++++++
>  libavcodec/vlc.h | 102 +++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 170 insertions(+)
> 
> diff --git a/libavcodec/vlc.c b/libavcodec/vlc.c
> index 21b9fffe27..b5de0bd24e 100644
> --- a/libavcodec/vlc.c
> +++ b/libavcodec/vlc.c
> @@ -350,6 +350,74 @@ fail:
>      return AVERROR_INVALIDDATA;
>  }
>  
> +av_cold void ff_vlc_init_table_from_lengths(VLCElem table[], int table_size,
> +                                            int nb_bits, int nb_codes,
> +                                            const int8_t *lens, int lens_wrap,
> +                                            const void *symbols, int symbols_wrap, int symbols_size,
> +                                            int offset, int flags)
> +{
> +    VLC vlc = { .table = table, .table_allocated = table_size };
> +
> +    ff_vlc_init_from_lengths(&vlc, nb_bits, nb_codes, lens, lens_wrap,
> +                             symbols, symbols_wrap, symbols_size,
> +                             offset, flags | VLC_INIT_USE_STATIC, NULL);
> +}
> +
> +av_cold const VLCElem *ff_vlc_init_tables_from_lengths(VLCInitState *state,
> +                                                       int nb_bits, int nb_codes,
> +                                                       const int8_t *lens, int lens_wrap,
> +                                                       const void *symbols, int symbols_wrap, int symbols_size,
> +                                                       int offset, int flags)
> +{
> +    VLC vlc = { .table = state->table, .table_allocated = state->size };
> +
> +    ff_vlc_init_from_lengths(&vlc, nb_bits, nb_codes, lens, lens_wrap,
> +                             symbols, symbols_wrap, symbols_size,
> +                             offset, flags | VLC_INIT_STATIC_OVERLONG, NULL);
> +
> +    state->table += vlc.table_size;
> +    state->size  -= vlc.table_size;
> +
> +    return vlc.table;
> +}
> +
> +av_cold void ff_vlc_init_table_sparse(VLCElem table[], int table_size,
> +                                      int nb_bits, int nb_codes,
> +                                      const void *bits, int bits_wrap, int bits_size,
> +                                      const void *codes, int codes_wrap, int codes_size,
> +                                      const void *symbols, int symbols_wrap, int symbols_size,
> +                                      int flags)
> +{
> +    VLC vlc = { .table = table, .table_allocated = table_size };
> +
> +    ff_vlc_init_sparse(&vlc, nb_bits, nb_codes,
> +                       bits, bits_wrap, bits_size,
> +                       codes, codes_wrap, codes_size,
> +                       symbols, symbols_wrap, symbols_size,
> +                       flags | VLC_INIT_USE_STATIC);
> +}
> +
> +av_cold const VLCElem *ff_vlc_init_tables_sparse(VLCInitState *state,
> +                                                 int nb_bits, int nb_codes,
> +                                                 const void *bits, int bits_wrap, int bits_size,
> +                                                 const void *codes, int codes_wrap, int codes_size,
> +                                                 const void *symbols, int symbols_wrap, int symbols_size,
> +                                                 int flags)
> +{
> +    VLC vlc = { .table = state->table, .table_allocated = state->size };
> +
> +    ff_vlc_init_sparse(&vlc, nb_bits, nb_codes,
> +                       bits, bits_wrap, bits_size,
> +                       codes, codes_wrap, codes_size,
> +                       symbols, symbols_wrap, symbols_size,
> +                       flags | VLC_INIT_STATIC_OVERLONG);
> +
> +    state->table += vlc.table_size;
> +    state->size  -= vlc.table_size;
> +
> +    return vlc.table;
> +}
> +
>  static void add_level(VLC_MULTI_ELEM *table, const int nb_elems,
>                        const int num, const int numbits,
>                        const VLCcode *buf,
> diff --git a/libavcodec/vlc.h b/libavcodec/vlc.h
> index 3f7c033a78..679666801a 100644
> --- a/libavcodec/vlc.h
> +++ b/libavcodec/vlc.h
> @@ -19,8 +19,11 @@
>  #ifndef AVCODEC_VLC_H
>  #define AVCODEC_VLC_H
>  
> +#include <stddef.h>
>  #include <stdint.h>
>  
> +#include "libavutil/macros.h"
> +
>  #define VLC_MULTI_MAX_SYMBOLS 6
>  
>  // When changing this, be sure to also update tableprint_vlc.h accordingly.
> @@ -223,4 +226,103 @@ void ff_vlc_free(VLC *vlc);
>                                   NULL);                                    \
>      } while (0)
>  
> +/**
> + * For static VLCs, the number of bits can often be hardcoded
> + * at each get_vlc2() callsite. Then using a full VLC would be uneconomical,
> + * because only VLC.table would ever be accessed after initialization.
> + * The following functions provide wrappers around the relevant ff_vlc_init_*
> + * functions suitable for said task.
> + *
> + * The ff_vlc_init_tables_* functions are intended to be used for initializing
> + * a series of VLCs. The user initializes a VLCInitState with the details
> + * about the underlying array of VLCElem; it is automatically updated by
> + * the ff_vlc_init_tables_* functions (i.e. table is incremented and size
> + * decremented by the number of elements of the current table).
> + * The VLC_INIT_STATIC_OVERLONG flag is also automatically added.
> + * These functions return a pointer to the table just initialized,
> + * potentially to be used in arrays of pointer to VLC tables.
> + *
> + * The ff_vlc_init_table_* functions are intended to be used for initializing
> + * a single VLC table, given by table and table_size. The VLC_INIT_USE_STATIC
> + * flag is automatically added.
> + */
> +
> +typedef struct VLCInitState {
> +    VLCElem *table;  ///< points to where the next VLC table will be placed
> +    unsigned size;   ///< remaining number of elements in table
> +} VLCInitState;
> +
> +#define VLC_INIT_STATE(_table) { .table = (_table), .size = FF_ARRAY_ELEMS(_table) }
> +
> +void ff_vlc_init_table_from_lengths(VLCElem table[], int table_size,
> +                                    int nb_bits, int nb_codes,
> +                                    const int8_t *lens, int lens_wrap,
> +                                    const void *symbols, int symbols_wrap, int symbols_size,
> +                                    int offset, int flags);
> +
> +const VLCElem *ff_vlc_init_tables_from_lengths(VLCInitState *state,
> +                                               int nb_bits, int nb_codes,
> +                                               const int8_t *lens, int lens_wrap,
> +                                               const void *symbols, int symbols_wrap, int symbols_size,
> +                                               int offset, int flags);
> +
> +void ff_vlc_init_table_sparse(VLCElem table[], int table_size,
> +                              int nb_bits, int nb_codes,
> +                              const void *bits, int bits_wrap, int bits_size,
> +                              const void *codes, int codes_wrap, int codes_size,
> +                              const void *symbols, int symbols_wrap, int symbols_size,
> +                              int flags);
> +
> +const VLCElem *ff_vlc_init_tables_sparse(VLCInitState *state,
> +                                         int nb_bits, int nb_codes,
> +                                         const void *bits, int bits_wrap, int bits_size,
> +                                         const void *codes, int codes_wrap, int codes_size,
> +                                         const void *symbols, int symbols_wrap, int symbols_size,
> +                                         int flags);
> +
> +static inline
> +const VLCElem *ff_vlc_init_tables(VLCInitState *state,
> +                                  int nb_bits, int nb_codes,
> +                                  const void *bits, int bits_wrap, int bits_size,
> +                                  const void *codes, int codes_wrap, int codes_size,
> +                                  int flags)
> +{
> +    return ff_vlc_init_tables_sparse(state, nb_bits, nb_codes,
> +                                     bits, bits_wrap, bits_size,
> +                                     codes, codes_wrap, codes_size,
> +                                     NULL, 0, 0, flags);
> +}
> +
> +#define VLC_INIT_STATIC_SPARSE_TABLE(vlc_table, nb_bits, nb_codes,         \
> +                                     bits, bits_wrap, bits_size,           \
> +                                     codes, codes_wrap, codes_size,        \
> +                                     symbols, symbols_wrap, symbols_size,  \
> +                                     flags)                                \
> +    ff_vlc_init_table_sparse(vlc_table, FF_ARRAY_ELEMS(vlc_table),         \
> +                             (nb_bits), (nb_codes),                        \
> +                             (bits), (bits_wrap), (bits_size),             \
> +                             (codes), (codes_wrap), (codes_size),          \
> +                             (symbols), (symbols_wrap), (symbols_size),    \
> +                             (flags))
> +
> +#define VLC_INIT_STATIC_TABLE(vlc_table, nb_bits, nb_codes,                \
> +                              bits, bits_wrap, bits_size,                  \
> +                              codes, codes_wrap, codes_size,               \
> +                              flags)                                       \
> +    ff_vlc_init_table_sparse(vlc_table, FF_ARRAY_ELEMS(vlc_table),         \
> +                             (nb_bits), (nb_codes),                        \
> +                             (bits), (bits_wrap), (bits_size),             \
> +                             (codes), (codes_wrap), (codes_size),          \
> +                             NULL, 0, 0, (flags))
> +
> +#define VLC_INIT_STATIC_TABLE_FROM_LENGTHS(vlc_table, nb_bits, nb_codes,   \
> +                                           lens, lens_wrap,                \
> +                                           syms, syms_wrap, syms_size,     \
> +                                           offset, flags)                  \
> +    ff_vlc_init_table_from_lengths(vlc_table, FF_ARRAY_ELEMS(vlc_table),   \
> +                                   (nb_bits), (nb_codes),                  \
> +                                   (lens), (lens_wrap),                    \
> +                                   (syms), (syms_wrap), (syms_size),       \
> +                                   (offset), (flags))
> +
>  #endif /* AVCODEC_VLC_H */

Will apply this patchset tonight (with the mobiclip bug fixed) unless
there are objections.

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