mp3dec: hack: fix decoding with safe bitstream reader
The buffer splicing relies on the bitstream reader over-reading the end of the buffer as declared in init_get_bits(), although more data is actually present. Manually moving the bitstream boundary after init_get_bits() allows this to work as expected. Signed-off-by: Mans Rullgard <mans@mansr.com>
This commit is contained in:
parent
583d3b7f97
commit
ac08f798bb
@ -1548,6 +1548,9 @@ static int mp_decode_layer3(MPADecodeContext *s)
|
|||||||
memcpy(s->last_buf + s->last_buf_size, ptr, EXTRABYTES);
|
memcpy(s->last_buf + s->last_buf_size, ptr, EXTRABYTES);
|
||||||
s->in_gb = s->gb;
|
s->in_gb = s->gb;
|
||||||
init_get_bits(&s->gb, s->last_buf, s->last_buf_size*8);
|
init_get_bits(&s->gb, s->last_buf, s->last_buf_size*8);
|
||||||
|
#if CONFIG_SAFE_BITSTREAM_READER
|
||||||
|
s->gb.size_in_bits_plus8 += EXTRABYTES * 8;
|
||||||
|
#endif
|
||||||
skip_bits_long(&s->gb, 8*(s->last_buf_size - main_data_begin));
|
skip_bits_long(&s->gb, 8*(s->last_buf_size - main_data_begin));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user