internal void send_bits(int val, int length){
if (bi_valid > Buf_size - length) {
bi_buf |= (uint)(val << bi_valid);
pending_buf[pending++]=(byte)(bi_buf/*&0xff*/);
pending_buf[pending++]=(byte)(bi_buf>>8);
bi_buf = ((uint)val) >> (Buf_size - bi_valid);
bi_valid += length - Buf_size;
} else {
bi_buf |= (uint)(val << bi_valid);
bi_valid += length;
}
// int len = length;
// if (bi_valid > (int)Buf_size - len) {
// int val = value;
// // bi_buf |= (val << bi_valid);
// bi_buf = (short)((ushort)bi_buf | (ushort)((val << bi_valid)&0xffff));
// put_short(bi_buf);
// bi_buf = (short)(((uint)val) >> (Buf_size - bi_valid));
// bi_valid += len - Buf_size;
// } else {
// // bi_buf |= (value) << bi_valid;
// bi_buf = (short)((ushort)bi_buf | (ushort)(((value) << bi_valid)&0xffff));
// bi_valid += len;
// }
}