| 205 | #endif |
| 206 | |
| 207 | static 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. |
no test coverage detected