Takes into account a corner case with the multistream encoder
Considers the case where one stream would eat up all the remaining bytes, including a 2-byte size that would then not leave enough for the even a PLC packet in the next streams.
This commit is contained in:
parent
e1326fe6c8
commit
648eb9adff
1 changed files with 1 additions and 1 deletions
|
@ -864,7 +864,7 @@ static int opus_multistream_encode_native
|
||||||
curr_max -= IMAX(0,2*(st->layout.nb_streams-s-1)-1);
|
curr_max -= IMAX(0,2*(st->layout.nb_streams-s-1)-1);
|
||||||
curr_max = IMIN(curr_max,MS_FRAME_TMP);
|
curr_max = IMIN(curr_max,MS_FRAME_TMP);
|
||||||
/* Repacketizer will add one byte for self-delimited frames */
|
/* Repacketizer will add one byte for self-delimited frames */
|
||||||
if (s != st->layout.nb_streams-1) curr_max--;
|
if (s != st->layout.nb_streams-1) curr_max -= curr_max>253 ? 2 : 1;
|
||||||
if (!vbr && s == st->layout.nb_streams-1)
|
if (!vbr && s == st->layout.nb_streams-1)
|
||||||
opus_encoder_ctl(enc, OPUS_SET_BITRATE(curr_max*(8*Fs/frame_size)));
|
opus_encoder_ctl(enc, OPUS_SET_BITRATE(curr_max*(8*Fs/frame_size)));
|
||||||
len = opus_encode_native(enc, buf, frame_size, tmp_data, curr_max, lsb_depth,
|
len = opus_encode_native(enc, buf, frame_size, tmp_data, curr_max, lsb_depth,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue