[FFmpeg-devel] [PATCH 1/4] avcodec/magicyuv: Use a compile time constant for vlc_bits
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Fri Oct 27 00:37:57 EEST 2023
Michael Niedermayer:
> This will permit further optimizations
>
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
> libavcodec/magicyuv.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/libavcodec/magicyuv.c b/libavcodec/magicyuv.c
> index 4a143cdbbf7..78d7f44cd65 100644
> --- a/libavcodec/magicyuv.c
> +++ b/libavcodec/magicyuv.c
> @@ -124,13 +124,13 @@ static void magicyuv_median_pred16(uint16_t *dst, const uint16_t *src1,
> x = 0; \
> for (; x < width-c && get_bits_left(&gb) > 0;) {\
> ret = get_vlc_multi(&gb, (uint8_t *)dst + x * b, multi, \
> - vlc, vlc_bits, 3); \
> + vlc, VLC_BITS, 3); \
> if (ret <= 0) \
> return AVERROR_INVALIDDATA; \
> x += ret; \
> } \
> for (; x < width && get_bits_left(&gb) > 0; x++) \
> - dst[x] = get_vlc2(&gb, vlc, vlc_bits, 3); \
> + dst[x] = get_vlc2(&gb, vlc, VLC_BITS, 3); \
> dst += stride; \
> }
>
> @@ -155,7 +155,6 @@ static int magy_decode_slice10(AVCodecContext *avctx, void *tdata,
> ptrdiff_t stride = p->linesize[i] / 2;
> const VLC_MULTI_ELEM *const multi = s->multi[i].table;
> const VLCElem *const vlc = s->vlc[i].table;
> - const int vlc_bits = s->vlc[i].bits;
> int flags, pred;
> int ret = init_get_bits8(&gb, s->buf + s->slices[i][j].start,
> s->slices[i][j].size);
The VLCs are created via "ff_vlc_init_multi_from_lengths(vlc, multi,
FFMIN(he[0].len, VLC_BITS), nb_elems, nb_elems,", so the number of bits
of the VLC is not a compile-time constant.
- Andreas
More information about the ffmpeg-devel
mailing list