Home | History | Annotate | Download | only in vl

Lines Matching refs:vlc

92 vl_vlc_next_input(struct vl_vlc *vlc)
94 const uint8_t* data = vlc->inputs[0];
95 unsigned len = vlc->sizes[0];
97 assert(vlc);
98 assert(vlc->num_inputs);
100 vlc->bytes_left -= len;
104 vlc->buffer |= (uint64_t)*data << (24 + vlc->invalid_bits);
107 vlc->invalid_bits -= 8;
109 vlc->data = data;
110 vlc->end = data + len;
112 --vlc->num_inputs;
113 ++vlc->inputs;
114 ++vlc->sizes;
121 vl_vlc_fillbits(struct vl_vlc *vlc)
123 assert(vlc);
126 while (vlc->invalid_bits > 0) {
127 unsigned bytes_left = vlc->end - vlc->data;
132 if (vlc->num_inputs)
134 vl_vlc_next_input(vlc);
142 uint64_t value = *(const uint32_t*)vlc->data;
148 vlc->buffer |= value << vlc->invalid_bits;
149 vlc->data += 4;
150 vlc->invalid_bits -= 32;
155 } else while (vlc->data < vlc->end) {
158 vlc->buffer |= (uint64_t)*vlc->data << (24 + vlc->invalid_bits);
159 ++vlc->data;
160 vlc->invalid_bits -= 8;
166 * initialize vlc structure and start reading from first input buffer
169 vl_vlc_init(struct vl_vlc *vlc, unsigned num_inputs,
174 assert(vlc);
177 vlc->buffer = 0;
178 vlc->invalid_bits = 32;
179 vlc->num_inputs = num_inputs;
180 vlc->inputs = inputs;
181 vlc->sizes = sizes;
182 vlc->bytes_left = 0;
185 vlc->bytes_left += sizes[i];
187 vl_vlc_next_input(vlc);
188 vl_vlc_fillbits(vlc);
189 vl_vlc_fillbits(vlc);
196 vl_vlc_valid_bits(struct vl_vlc *vlc)
198 return 32 - vlc->invalid_bits;
205 vl_vlc_bits_left(struct vl_vlc *vlc)
207 signed bytes_left = vlc->end - vlc->data;
208 bytes_left += vlc->bytes_left;
209 return bytes_left * 8 + vl_vlc_valid_bits(vlc);
216 vl_vlc_peekbits(struct vl_vlc *vlc, unsigned num_bits)
218 assert(vl_vlc_valid_bits(vlc) >= num_bits || vlc->data >= vlc->end);
219 return vlc->buffer >> (64 - num_bits);
226 vl_vlc_eatbits(struct vl_vlc *vlc, unsigned num_bits)
228 assert(vl_vlc_valid_bits(vlc) >= num_bits);
230 vlc->buffer <<= num_bits;
231 vlc->invalid_bits += num_bits;
238 vl_vlc_get_uimsbf(struct vl_vlc *vlc, unsigned num_bits)
242 assert(vl_vlc_valid_bits(vlc) >= num_bits);
244 value = vlc->buffer >> (64 - num_bits);
245 vl_vlc_eatbits(vlc, num_bits);
254 vl_vlc_get_simsbf(struct vl_vlc *vlc, unsigned num_bits)
258 assert(vl_vlc_valid_bits(vlc) >= num_bits);
260 value = ((int64_t)vlc->buffer) >> (64 - num_bits);
261 vl_vlc_eatbits(vlc, num_bits);
270 vl_vlc_get_vlclbf(struct vl_vlc *vlc, const struct vl_vlc_entry *tbl, unsigned num_bits)
272 tbl += vl_vlc_peekbits(vlc, num_bits);
273 vl_vlc_eatbits(vlc, tbl->length);