Go to the documentation of this file.
41 #ifndef AVCODEC_BITSTREAM_H
42 #define AVCODEC_BITSTREAM_H
56 #ifndef UNCHECKED_BITSTREAM_READER
57 #define UNCHECKED_BITSTREAM_READER !CONFIG_SAFE_BITSTREAM_READER
61 #if defined(BITSTREAM_LE) && defined(BITSTREAM_BE)
63 # if defined(BITSTREAM_DEFAULT_BE) && defined(BITSTREAM_DEFAULT_LE)
64 # error "At most one of BITSTREAM_DEFAULT_BE/LE must be defined"
65 # elif defined(BITSTREAM_DEFAULT_BE)
66 # define BITS_DEFAULT_BE
67 # elif defined(BITSTREAM_DEFAULT_LE)
68 # define BITS_DEFAULT_LE
71 #elif defined(BITSTREAM_LE)
72 # define BITS_DEFAULT_LE
73 #else // select BE if nothing is requested explicitly
74 # define BITS_DEFAULT_BE
75 # define BITSTREAM_WANT_BE
78 #if defined(BITS_DEFAULT_LE)
80 # define BitstreamContext BitstreamContextLE
81 # define bits_init bits_init_le
82 # define bits_init8 bits_init8_le
83 # define bits_tell bits_tell_le
84 # define bits_size bits_size_le
85 # define bits_bytesize bits_bytesize_le
86 # define bits_left bits_left_le
87 # define bits_read_bit bits_read_bit_le
88 # define bits_read_nz bits_read_nz_le
89 # define bits_read bits_read_le
90 # define bits_read_63 bits_read_63_le
91 # define bits_read_64 bits_read_64_le
92 # define bits_read_signed bits_read_signed_le
93 # define bits_read_signed_nz bits_read_signed_nz_le
94 # define bits_peek_nz bits_peek_nz_le
95 # define bits_peek bits_peek_le
96 # define bits_peek_signed bits_peek_signed_le
97 # define bits_peek_signed_nz bits_peek_signed_nz_le
98 # define bits_skip bits_skip_le
99 # define bits_seek bits_seek_le
100 # define bits_align bits_align_le
101 # define bits_read_xbits bits_read_xbits_le
102 # define bits_decode012 bits_decode012_le
103 # define bits_decode210 bits_decode210_le
104 # define bits_apply_sign bits_apply_sign_le
105 # define bits_read_vlc bits_read_vlc_le
106 # define bits_read_vlc_multi bits_read_vlc_multi_le
108 #elif defined(BITS_DEFAULT_BE)
110 # define BitstreamContext BitstreamContextBE
111 # define bits_init bits_init_be
112 # define bits_init8 bits_init8_be
113 # define bits_tell bits_tell_be
114 # define bits_size bits_size_be
115 # define bits_bytesize bits_bytesize_be
116 # define bits_left bits_left_be
117 # define bits_read_bit bits_read_bit_be
118 # define bits_read_nz bits_read_nz_be
119 # define bits_read bits_read_be
120 # define bits_read_63 bits_read_63_be
121 # define bits_read_64 bits_read_64_be
122 # define bits_read_signed bits_read_signed_be
123 # define bits_read_signed_nz bits_read_signed_nz_be
124 # define bits_peek_nz bits_peek_nz_be
125 # define bits_peek bits_peek_be
126 # define bits_peek_signed bits_peek_signed_be
127 # define bits_peek_signed_nz bits_peek_signed_nz_be
128 # define bits_skip bits_skip_be
129 # define bits_seek bits_seek_be
130 # define bits_align bits_align_be
131 # define bits_read_xbits bits_read_xbits_be
132 # define bits_decode012 bits_decode012_be
133 # define bits_decode210 bits_decode210_be
134 # define bits_apply_sign bits_apply_sign_be
135 # define bits_read_vlc bits_read_vlc_be
136 # define bits_read_vlc_multi bits_read_vlc_multi_be
140 #undef BITS_DEFAULT_LE
141 #undef BITS_DEFAULT_BE
143 #define BITS_RL_VLC(level, run, bc, table, bits, max_depth) \
146 unsigned int index = bits_peek(bc, bits); \
147 level = table[index].level; \
148 n = table[index].len; \
150 if (max_depth > 1 && n < 0) { \
151 bits_skip(bc, bits); \
155 index = bits_peek(bc, nb_bits) + level; \
156 level = table[index].level; \
157 n = table[index].len; \
158 if (max_depth > 2 && n < 0) { \
159 bits_skip(bc, nb_bits); \
162 index = bits_peek(bc, nb_bits) + level; \
163 level = table[index].level; \
164 n = table[index].len; \
167 run = table[index].run; \
175 #if defined(BITSTREAM_LE) && !defined(BITSTREAM_WANT_LE)
176 # define BITSTREAM_WANT_LE
179 #if defined(BITSTREAM_BE) && !defined(BITSTREAM_WANT_BE)
180 # define BITSTREAM_WANT_BE
183 #if defined(BITSTREAM_WANT_LE) && !defined(AVCODEC_BITSTREAM_LE)
184 #define AVCODEC_BITSTREAM_LE
186 #define BITSTREAM_TEMPLATE_LE
188 #undef BITSTREAM_TEMPLATE_LE
192 #if defined(BITSTREAM_WANT_BE) && !defined(AVCODEC_BITSTREAM_BE)
193 #define AVCODEC_BITSTREAM_BE
199 #undef BITSTREAM_WANT_LE
200 #undef BITSTREAM_WANT_BE