mirror of
https://mirror.skon.top/https://github.com/FFmpeg/FFmpeg
synced 2026-04-20 21:00:41 +08:00
aacsbr_template: fix SBR USAC coupling
This issue hid under the radar since the codebooks between coupling modes very often result in identical bit counts regardless of the encoded data, leading to no frame-level bitstream desyncs except in rare cases. AAC Mps212 data is parsed immediately after the SBR data, where a loss of sync in SBR will result in Mps212 being wildly different.
This commit is contained in:
@@ -1287,6 +1287,8 @@ int ff_aac_sbr_decode_usac_data(AACDecContext *ac, ChannelElement *che,
|
||||
if ((sbr->data[0].bs_add_harmonic_flag = get_bits1(gb)))
|
||||
get_bits1_vector(gb, sbr->data[0].bs_add_harmonic, sbr->n[1]);
|
||||
} else if (get_bits1(gb)) { /* bs_coupling == 1 */
|
||||
sbr->bs_coupling = 1;
|
||||
|
||||
/* if (harmonicSBR) ... */
|
||||
|
||||
if (read_sbr_grid(ac, sbr, gb, &sbr->data[0]))
|
||||
@@ -1317,7 +1319,10 @@ int ff_aac_sbr_decode_usac_data(AACDecContext *ac, ChannelElement *che,
|
||||
if ((sbr->data[1].bs_add_harmonic_flag = get_bits1(gb)))
|
||||
get_bits1_vector(gb, sbr->data[1].bs_add_harmonic, sbr->n[1]);
|
||||
} else { /* bs_coupling == 0 */
|
||||
sbr->bs_coupling = 0;
|
||||
|
||||
/* if (harmonicSBR) ... */
|
||||
|
||||
if (read_sbr_grid(ac, sbr, gb, &sbr->data[0]))
|
||||
return -1;
|
||||
if (read_sbr_grid(ac, sbr, gb, &sbr->data[1]))
|
||||
|
||||
Reference in New Issue
Block a user