#ifndef AVCODEC_GET_BITS_H
#define AVCODEC_GET_BITS_H
#include <stdint.h>
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/avassert.h"
#include "defs.h"
#include "mathops.h"
#include "vlc.h"
#ifndef UNCHECKED_BITSTREAM_READER
#define UNCHECKED_BITSTREAM_READER …
#endif
#ifndef CACHED_BITSTREAM_READER
#define CACHED_BITSTREAM_READER …
#endif
#if CACHED_BITSTREAM_READER
#define BITSTREAM_LE
#ifndef BITSTREAM_READER_LE
#define BITSTREAM_BE
#define BITSTREAM_DEFAULT_BE
#endif
#include "bitstream.h"
#undef BITSTREAM_LE
#undef BITSTREAM_BE
#undef BITSTREAM_DEFAULT_BE
typedef BitstreamContext GetBitContext;
#define get_bits_count …
#define get_bits_left …
#define skip_bits_long …
#define skip_bits …
#define get_bits …
#define get_bitsz …
#define get_bits_long …
#define get_bits1 …
#define get_bits64 …
#define get_xbits …
#define get_sbits …
#define get_sbits_long …
#define show_bits …
#define show_bits_long …
#define init_get_bits …
#define init_get_bits8 …
#define align_get_bits …
#define get_vlc2 …
#define get_vlc_multi …
#define init_get_bits8_le …
#define get_bits_le …
#define show_bits1 …
#define skip_bits1 …
#define skip_1stop_8data_bits …
#else
GetBitContext;
static inline unsigned int get_bits(GetBitContext *s, int n);
static inline void skip_bits(GetBitContext *s, int n);
static inline unsigned int show_bits(GetBitContext *s, int n);
#if defined LONG_BITSTREAM_READER
#define MIN_CACHE_BITS …
#else
#define MIN_CACHE_BITS …
#endif
#define OPEN_READER_NOSIZE(name, gb) …
#if UNCHECKED_BITSTREAM_READER
#define OPEN_READER …
#define BITS_AVAILABLE …
#else
#define OPEN_READER(name, gb) …
#define BITS_AVAILABLE(name, gb) …
#endif
#define CLOSE_READER(name, gb) …
#define UPDATE_CACHE_BE_EXT(name, gb, bits, dst_bits) …
#define UPDATE_CACHE_LE_EXT(name, gb, bits, dst_bits) …
#define UPDATE_CACHE_LE_32(name, gb) …
#define UPDATE_CACHE_BE_32(name, gb) …
# ifdef LONG_BITSTREAM_READER
#define UPDATE_CACHE_LE …
#define UPDATE_CACHE_BE …
#else
#define UPDATE_CACHE_LE(name, gb) …
#define UPDATE_CACHE_BE(name, gb) …
#endif
#ifdef BITSTREAM_READER_LE
#define UPDATE_CACHE …
#define UPDATE_CACHE_32 …
#define SKIP_CACHE …
#else
#define UPDATE_CACHE(name, gb) …
#define UPDATE_CACHE_32(name, gb) …
#define SKIP_CACHE(name, gb, num) …
#endif
#if UNCHECKED_BITSTREAM_READER
#define SKIP_COUNTER …
#else
#define SKIP_COUNTER(name, gb, num) …
#endif
#define BITS_LEFT(name, gb) …
#define SKIP_BITS(name, gb, num) …
#define LAST_SKIP_BITS(name, gb, num) …
#define SHOW_UBITS_LE(name, gb, num) …
#define SHOW_SBITS_LE(name, gb, num) …
#define SHOW_UBITS_BE(name, gb, num) …
#define SHOW_SBITS_BE(name, gb, num) …
#ifdef BITSTREAM_READER_LE
#define SHOW_UBITS …
#define SHOW_SBITS …
#else
#define SHOW_UBITS(name, gb, num) …
#define SHOW_SBITS(name, gb, num) …
#endif
#define GET_CACHE(name, gb) …
static inline int get_bits_count(const GetBitContext *s)
{ … }
static inline void skip_bits_long(GetBitContext *s, int n)
{ … }
static inline int get_xbits(GetBitContext *s, int n)
{ … }
static inline int get_xbits_le(GetBitContext *s, int n)
{ … }
static inline int get_sbits(GetBitContext *s, int n)
{ … }
static inline unsigned int get_bits(GetBitContext *s, int n)
{ … }
static av_always_inline int get_bitsz(GetBitContext *s, int n)
{ … }
static inline unsigned int get_bits_le(GetBitContext *s, int n)
{ … }
static inline unsigned int show_bits(GetBitContext *s, int n)
{ … }
static inline void skip_bits(GetBitContext *s, int n)
{ … }
static inline unsigned int get_bits1(GetBitContext *s)
{ … }
static inline unsigned int show_bits1(GetBitContext *s)
{ … }
static inline void skip_bits1(GetBitContext *s)
{ … }
static inline unsigned int get_bits_long(GetBitContext *s, int n)
{ … }
static inline uint64_t get_bits64(GetBitContext *s, int n)
{ … }
static inline int get_sbits_long(GetBitContext *s, int n)
{ … }
static inline int64_t get_sbits64(GetBitContext *s, int n)
{ … }
static inline unsigned int show_bits_long(GetBitContext *s, int n)
{ … }
static inline int init_get_bits(GetBitContext *s, const uint8_t *buffer,
int bit_size)
{ … }
static inline int init_get_bits8(GetBitContext *s, const uint8_t *buffer,
int byte_size)
{ … }
static inline int init_get_bits8_le(GetBitContext *s, const uint8_t *buffer,
int byte_size)
{ … }
static inline const uint8_t *align_get_bits(GetBitContext *s)
{ … }
#define GET_VLC(code, name, gb, table, bits, max_depth) …
#define GET_RL_VLC(level, run, name, gb, table, bits, \
max_depth, need_update) …
static av_always_inline int get_vlc2(GetBitContext *s, const VLCElem *table,
int bits, int max_depth)
{ … }
static inline int get_vlc_multi(GetBitContext *s, uint8_t *dst,
const VLC_MULTI_ELEM *const Jtable,
const VLCElem *const table,
const int bits, const int max_depth,
const int symbols_size)
{ … }
static inline int decode012(GetBitContext *gb)
{ … }
static inline int decode210(GetBitContext *gb)
{ … }
static inline int get_bits_left(GetBitContext *gb)
{ … }
static inline int skip_1stop_8data_bits(GetBitContext *gb)
{ … }
#endif
#endif