* Write exactly 32 bits into a bitstream. */
| 299 | * Write exactly 32 bits into a bitstream. |
| 300 | */ |
| 301 | av_unused static void put_bits32(PutBitContext *s, uint32_t value) |
| 302 | { |
| 303 | BitBuf bit_buf; |
| 304 | int bit_left; |
| 305 | |
| 306 | if (BUF_BITS > 32) { |
| 307 | put_bits_no_assert(s, 32, value); |
| 308 | return; |
| 309 | } |
| 310 | |
| 311 | bit_buf = s->bit_buf; |
| 312 | bit_left = s->bit_left; |
| 313 | |
| 314 | #ifdef BITSTREAM_WRITER_LE |
| 315 | bit_buf |= (BitBuf)value << (BUF_BITS - bit_left); |
| 316 | if (s->buf_end - s->buf_ptr >= sizeof(BitBuf)) { |
| 317 | AV_WLBUF(s->buf_ptr, bit_buf); |
| 318 | s->buf_ptr += sizeof(BitBuf); |
| 319 | } else { |
| 320 | av_log(NULL, AV_LOG_ERROR, "Internal error, put_bits buffer too small\n"); |
| 321 | av_assert2(0); |
| 322 | } |
| 323 | bit_buf = (uint64_t)value >> bit_left; |
| 324 | #else |
| 325 | bit_buf = (uint64_t)bit_buf << bit_left; |
| 326 | bit_buf |= (BitBuf)value >> (BUF_BITS - bit_left); |
| 327 | if (s->buf_end - s->buf_ptr >= sizeof(BitBuf)) { |
| 328 | AV_WBBUF(s->buf_ptr, bit_buf); |
| 329 | s->buf_ptr += sizeof(BitBuf); |
| 330 | } else { |
| 331 | av_log(NULL, AV_LOG_ERROR, "Internal error, put_bits buffer too small\n"); |
| 332 | av_assert2(0); |
| 333 | } |
| 334 | bit_buf = value; |
| 335 | #endif |
| 336 | |
| 337 | s->bit_buf = bit_buf; |
| 338 | s->bit_left = bit_left; |
| 339 | } |
| 340 | |
| 341 | /** |
| 342 | * Write up to 63 bits into a bitstream. |