Skip to content
Snippets Groups Projects
Commit e047ec68 authored by Mathis Rosenhauer's avatar Mathis Rosenhauer
Browse files

Fix ROS detection in combination with incomplete RSI

parent 1e1919a7
No related branches found
No related tags found
No related merge requests found
......@@ -646,10 +646,10 @@ static int m_check_zero_block(struct aec_stream *strm)
state->zero_ref = state->ref;
state->zero_ref_sample = state->ref_sample;
}
if (state->blocks_avail == 0
|| (strm->rsi - state->blocks_avail) % 64 == 0) {
if (state->blocks_avail == 0 || state->blocks_dispensed % 64 == 0) {
if (state->zero_blocks > 4)
state->zero_blocks = ROS;
state->mode = m_encode_zero;
return M_CONTINUE;
}
......@@ -728,6 +728,7 @@ static int m_get_block(struct aec_stream *strm)
if (state->blocks_avail == 0) {
state->blocks_avail = strm->rsi - 1;
state->block = state->data_pp;
state->blocks_dispensed = 1;
if (strm->avail_in >= state->rsi_len) {
state->get_rsi(strm);
......@@ -745,6 +746,7 @@ static int m_get_block(struct aec_stream *strm)
state->uncomp_len = strm->block_size * strm->bits_per_sample;
}
state->block += strm->block_size;
state->blocks_dispensed++;
state->blocks_avail--;
return m_check_zero_block(strm);
}
......
......@@ -94,6 +94,9 @@ struct internal_state {
/* remaining blocks in buffer */
int blocks_avail;
/* blocks encoded so far in RSI */
int blocks_dispensed;
/* current (preprocessed) input block */
uint32_t *block;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment