You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
AAC encoder: avoid assertion failure on PNS
In rare corner cases it could still fail an assert on sf_diff due to failure to update prev_sf in some code paths. Fix that case.
This commit is contained in:
@@ -643,8 +643,11 @@ static void search_for_pns(AACEncContext *s, AVCodecContext *avctx, SingleChanne
|
|||||||
const int start = wstart+sce->ics.swb_offset[g];
|
const int start = wstart+sce->ics.swb_offset[g];
|
||||||
const float freq = (start-wstart)*freq_mult;
|
const float freq = (start-wstart)*freq_mult;
|
||||||
const float freq_boost = FFMAX(0.88f*freq/NOISE_LOW_LIMIT, 1.0f);
|
const float freq_boost = FFMAX(0.88f*freq/NOISE_LOW_LIMIT, 1.0f);
|
||||||
if (freq < NOISE_LOW_LIMIT || (start-wstart) >= cutoff)
|
if (freq < NOISE_LOW_LIMIT || (start-wstart) >= cutoff) {
|
||||||
|
if (!sce->zeroes[w*16+g])
|
||||||
|
prev_sf = sce->sf_idx[w*16+g];
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
for (w2 = 0; w2 < sce->ics.group_len[w]; w2++) {
|
for (w2 = 0; w2 < sce->ics.group_len[w]; w2++) {
|
||||||
band = &s->psy.ch[s->cur_channel].psy_bands[(w+w2)*16+g];
|
band = &s->psy.ch[s->cur_channel].psy_bands[(w+w2)*16+g];
|
||||||
sfb_energy += band->energy;
|
sfb_energy += band->energy;
|
||||||
|
@@ -173,7 +173,7 @@ fate-aac-pns-encode: CMD = enc_dec_pcm adts wav s16le $(TARGET_SAMPLES)/audio-re
|
|||||||
fate-aac-pns-encode: CMP = stddev
|
fate-aac-pns-encode: CMP = stddev
|
||||||
fate-aac-pns-encode: REF = $(SAMPLES)/audio-reference/luckynight_2ch_44kHz_s16.wav
|
fate-aac-pns-encode: REF = $(SAMPLES)/audio-reference/luckynight_2ch_44kHz_s16.wav
|
||||||
fate-aac-pns-encode: CMP_SHIFT = -4096
|
fate-aac-pns-encode: CMP_SHIFT = -4096
|
||||||
fate-aac-pns-encode: CMP_TARGET = 616
|
fate-aac-pns-encode: CMP_TARGET = 662
|
||||||
fate-aac-pns-encode: SIZE_TOLERANCE = 3560
|
fate-aac-pns-encode: SIZE_TOLERANCE = 3560
|
||||||
fate-aac-pns-encode: FUZZ = 72
|
fate-aac-pns-encode: FUZZ = 72
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user