- CoeffStream *stream = &streams[coeff_num * num_blocks + (yb/16)];
- stream->src_offset = ptr - coded.data();
- stream->src_len = *num_rans_bytes;
+ CoeffStream *stream = &streams[coeff_num * num_blocks + block_idx / BLOCKS_PER_STREAM];
+ if (*num_rans_bytes == 0) {
+ // Repeat last stream.
+ stream->src_offset = last_src_offset;
+ stream->src_len = last_src_len;
+ } else {
+ stream->src_offset = ptr - coded.data();
+ stream->src_len = *num_rans_bytes;
+ last_src_offset = stream->src_offset;
+ last_src_len = last_src_len;
+ }