avcodec/vlc: Add macro for ff_init_vlc_sparse()

ff_init_vlc_sparse() supports arrays of uint8_t, uint16_t and uint32_t
as input (and it also supports padding/other elements in between the
elements). This makes the typical case in which the input is a simple
array more cumbersome. E.g. for an array of uint8_t one would either
need to call the function with arguments like "array, sizeof(array[0]),
sizeof(array[0])" or with "array, 1, 1". The former is nicer, but
longer, so that the latter is mostly used. Therefore this commit adds a
macro that expands to the sizeof() construct.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
Andreas Rheinhardt 2020-07-30 09:06:44 +02:00
parent 2cef031674
commit 61669b7c40

View File

@ -35,7 +35,12 @@ typedef struct RL_VLC_ELEM {
uint8_t run;
} RL_VLC_ELEM;
#define init_vlc(vlc, nb_bits, nb_codes, \
#define INIT_VLC_DEFAULT_SIZES(ptr) \
(ptr), sizeof((ptr)[0]), sizeof((ptr)[0])
#define init_vlc(...) init_vlc2(__VA_ARGS__)
#define init_vlc2(vlc, nb_bits, nb_codes, \
bits, bits_wrap, bits_size, \
codes, codes_wrap, codes_size, \
flags) \