MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / put_bits_no_assert

Function put_bits_no_assert

libavcodec/put_bits.h:207–251  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

205#endif
206
207static inline void put_bits_no_assert(PutBitContext *s, int n, BitBuf value)
208{
209 BitBuf bit_buf;
210 int bit_left;
211
212 bit_buf = s->bit_buf;
213 bit_left = s->bit_left;
214
215 /* XXX: optimize */
216#ifdef BITSTREAM_WRITER_LE
217 bit_buf |= value << (BUF_BITS - bit_left);
218 if (n >= bit_left) {
219 if (s->buf_end - s->buf_ptr >= sizeof(BitBuf)) {
220 AV_WLBUF(s->buf_ptr, bit_buf);
221 s->buf_ptr += sizeof(BitBuf);
222 } else {
223 av_log(NULL, AV_LOG_ERROR, "Internal error, put_bits buffer too small\n");
224 av_assert2(0);
225 }
226 bit_buf = value >> bit_left;
227 bit_left += BUF_BITS;
228 }
229 bit_left -= n;
230#else
231 if (n < bit_left) {
232 bit_buf = (bit_buf << n) | value;
233 bit_left -= n;
234 } else {
235 bit_buf <<= bit_left;
236 bit_buf |= value >> (n - bit_left);
237 if (s->buf_end - s->buf_ptr >= sizeof(BitBuf)) {
238 AV_WBBUF(s->buf_ptr, bit_buf);
239 s->buf_ptr += sizeof(BitBuf);
240 } else {
241 av_log(NULL, AV_LOG_ERROR, "Internal error, put_bits buffer too small\n");
242 av_assert2(0);
243 }
244 bit_left += BUF_BITS - n;
245 bit_buf = value;
246 }
247#endif
248
249 s->bit_buf = bit_buf;
250 s->bit_left = bit_left;
251}
252
253/**
254 * Write up to 31 bits into a bitstream.

Callers 3

put_bitsFunction · 0.85
put_bits32Function · 0.85
put_bits63Function · 0.85

Calls 1

av_logFunction · 0.85

Tested by

no test coverage detected