- rans_offset -= 4;
- rans_output[rans_offset + 0] = uint8_t(rans >> 0);
- rans_output[rans_offset + 1] = uint8_t(rans >> 8);
- rans_output[rans_offset + 2] = uint8_t(rans >> 16);
- rans_output[rans_offset + 3] = uint8_t(rans >> 24);
+ RansPutByte(enc.rans >> 24, enc);
+ RansPutByte(enc.rans >> 16, enc);
+ RansPutByte(enc.rans >> 8, enc);
+ RansPutByte(enc.rans >> 0, enc);
+
+ uint num_bytes_written = (enc.rans_start_offset - enc.rans_offset) * 4 + enc.bytes_in_buffer;
+
+ // Make sure there's nothing left in the buffer.
+ RansPutByte(0, enc);
+ RansPutByte(0, enc);
+ RansPutByte(0, enc);
+
+ return num_bytes_written;