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

Reply via email to