On 27/04/16 13:37, Alexandra Hájková wrote:
> This structures are not depended on the bitreader.
Those structure do not use get_bits.
> ---
> libavcodec/get_bits.h | 42 +---------------------------------
> libavcodec/vlc.h | 62
> +++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 63 insertions(+), 41 deletions(-)
> create mode 100644 libavcodec/vlc.h
>
> diff --git a/libavcodec/get_bits.h b/libavcodec/get_bits.h
> index 29e7205..9d6a5e8 100644
> --- a/libavcodec/get_bits.h
> +++ b/libavcodec/get_bits.h
> @@ -32,6 +32,7 @@
> #include "libavutil/intreadwrite.h"
> #include "libavutil/log.h"
> #include "mathops.h"
> +#include "vlc.h"
>
> /*
> * Safe bitstream reading:
> @@ -59,20 +60,6 @@ typedef struct GetBitContext {
> #endif
> } GetBitContext;
>
> -#define VLC_TYPE int16_t
> -
> -typedef struct VLC {
> - int bits;
> - VLC_TYPE (*table)[2]; ///< code, bits
> - int table_size, table_allocated;
> -} VLC;
> -
> -typedef struct RL_VLC_ELEM {
> - int16_t level;
> - int8_t len;
> - uint8_t run;
> -} RL_VLC_ELEM;
> -
> /* Bitstream reader API docs:
> * name
> * arbitrary name which is used as prefix for the internal variables
> @@ -430,33 +417,6 @@ static inline const uint8_t
> *align_get_bits(GetBitContext *s)
> return s->buffer + (s->index >> 3);
> }
>
> -#define init_vlc(vlc, nb_bits, nb_codes, \
> - bits, bits_wrap, bits_size, \
> - codes, codes_wrap, codes_size, \
> - flags) \
> - ff_init_vlc_sparse(vlc, nb_bits, nb_codes, \
> - bits, bits_wrap, bits_size, \
> - codes, codes_wrap, codes_size, \
> - NULL, 0, 0, flags)
> -
> -int ff_init_vlc_sparse(VLC *vlc, 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);
> -void ff_free_vlc(VLC *vlc);
> -
> -#define INIT_VLC_LE 2
> -#define INIT_VLC_USE_NEW_STATIC 4
> -
> -#define INIT_VLC_STATIC(vlc, bits, a, b, c, d, e, f, g, static_size) \
> - do { \
> - static VLC_TYPE table[static_size][2]; \
> - (vlc)->table = table; \
> - (vlc)->table_allocated = static_size; \
> - init_vlc(vlc, bits, a, b, c, d, e, f, g, INIT_VLC_USE_NEW_STATIC); \
> - } while (0)
> -
> /**
> * If the vlc code is invalid and max_depth=1, then no bits will be removed.
> * If the vlc code is invalid and max_depth>1, then the number of bits
> removed
> diff --git a/libavcodec/vlc.h b/libavcodec/vlc.h
> new file mode 100644
> index 0000000..6a2b3a2
> --- /dev/null
> +++ b/libavcodec/vlc.h
> @@ -0,0 +1,62 @@
> +/*
> + * This file is part of Libav.
> + *
> + * Libav 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.
> + *
> + * Libav 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 Libav; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
> USA
> + */
> +#ifndef AVCODEC_VLC_H
> +#define AVCODEC_VLC_H
> +
> +#define VLC_TYPE int16_t
> +
> +typedef struct VLC {
> + int bits;
> + VLC_TYPE (*table)[2]; ///< code, bits
> + int table_size, table_allocated;
> +} VLC;
> +
> +typedef struct RL_VLC_ELEM {
> + int16_t level;
> + int8_t len;
> + uint8_t run;
> +} RL_VLC_ELEM;
> +
> +#define init_vlc(vlc, nb_bits, nb_codes, \
> + bits, bits_wrap, bits_size, \
> + codes, codes_wrap, codes_size, \
> + flags) \
> + ff_init_vlc_sparse(vlc, nb_bits, nb_codes, \
> + bits, bits_wrap, bits_size, \
> + codes, codes_wrap, codes_size, \
> + NULL, 0, 0, flags)
> +
> +int ff_init_vlc_sparse(VLC *vlc, 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);
> +void ff_free_vlc(VLC *vlc);
> +
> +#define INIT_VLC_LE 2
> +#define INIT_VLC_USE_NEW_STATIC 4
> +
> +#define INIT_VLC_STATIC(vlc, bits, a, b, c, d, e, f, g, static_size) \
> + do { \
> + static VLC_TYPE table[static_size][2]; \
> + (vlc)->table = table; \
> + (vlc)->table_allocated = static_size; \
> + init_vlc(vlc, bits, a, b, c, d, e, f, g, INIT_VLC_USE_NEW_STATIC); \
> + } while (0)
> +
> +#endif /* AVCODEC_VLC_H */
>
The rest seems ok.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel