Re: [FFmpeg-devel] [PATCH 09/11] aaccoder: add a new perceptual noise substitution implementation
On Mon, Jun 29, 2015 at 10:58 PM, Claudio Freire klaussfre...@gmail.com wrote: On Fri, Jun 26, 2015 at 5:16 PM, Rostislav Pehlivanov atomnu...@gmail.com wrote: +if (spread NOISE_SPREAD_THRESHOLD +((sce-zeroes[w*16+g] energy = threshold) || +energy threshold*(NOISE_LAMBDA_NUMERATOR/lambda))) { +sce-band_type[w*16+g] = NOISE_BT; +sce-pns_ener[w*16+g] = energy; +sce-zeroes[w*16+g] = 0; +} This should be: sce-pns_ener[w*16+g] = energy / sce-ics.group_len[w]; Also, spread NOISE_SPREAD_THRESHOLD works beetter as: spread (NOISE_SPREAD_THRESHOLD * 120.f / lambda) And energy threshold*(NOISE_LAMBDA_NUMERATOR/lambda) as: energy threshold*(NOISE_LAMBDA_NUMERATOR*sce-ics.group_len[w]/lambda)) (to account for the transient situation in which the encoder is switching to and form short windows) With the new spread measure in patch #06, if committed, in this one NOISE_SPREAD_THRESHOLD should be redefined to 0.5 (the active_lines measure is normalized). ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 09/11] aaccoder: add a new perceptual noise substitution implementation
On Fri, Jun 26, 2015 at 5:16 PM, Rostislav Pehlivanov atomnu...@gmail.com wrote: +if (spread NOISE_SPREAD_THRESHOLD +((sce-zeroes[w*16+g] energy = threshold) || +energy threshold*(NOISE_LAMBDA_NUMERATOR/lambda))) { +sce-band_type[w*16+g] = NOISE_BT; +sce-pns_ener[w*16+g] = energy; +sce-zeroes[w*16+g] = 0; +} This should be: sce-pns_ener[w*16+g] = energy / sce-ics.group_len[w]; Also, spread NOISE_SPREAD_THRESHOLD works beetter as: spread (NOISE_SPREAD_THRESHOLD * 120.f / lambda) And energy threshold*(NOISE_LAMBDA_NUMERATOR/lambda) as: energy threshold*(NOISE_LAMBDA_NUMERATOR*sce-ics.group_len[w]/lambda)) (to account for the transient situation in which the encoder is switching to and form short windows) ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH 09/11] aaccoder: add a new perceptual noise substitution implementation
As lambda increases (more quality) the chance to get PNS decreases with your suggestion to use spread (NOISE_SPREAD_THRESHOLD * 120.f / lambda). It's more correct to have spread (NOISE_SPREAD_THRESHOLD * (lambda / 120.0f)) here. The spectrums showed a hole right in between the PNS and normal band types rather than having the PNS values augment smoothly in the upper frequencies. The suggestion to use NOISE_SPREAD_THRESHOLD of 0.5f is fine however as the expression is still normalized. Why the need to have sce-pns_ener[w*16+g] = energy / sce-ics.group_len[w];, normalization? The energy value is log2'd during scalefactor indices calculation so it's hardly going to change much. Will do some tests to see if it smooths out the transition of normal bands - PNS. On 30 June 2015 at 03:27, Claudio Freire klaussfre...@gmail.com wrote: On Mon, Jun 29, 2015 at 10:58 PM, Claudio Freire klaussfre...@gmail.com wrote: On Fri, Jun 26, 2015 at 5:16 PM, Rostislav Pehlivanov atomnu...@gmail.com wrote: +if (spread NOISE_SPREAD_THRESHOLD +((sce-zeroes[w*16+g] energy = threshold) || +energy threshold*(NOISE_LAMBDA_NUMERATOR/lambda))) { +sce-band_type[w*16+g] = NOISE_BT; +sce-pns_ener[w*16+g] = energy; +sce-zeroes[w*16+g] = 0; +} This should be: sce-pns_ener[w*16+g] = energy / sce-ics.group_len[w]; Also, spread NOISE_SPREAD_THRESHOLD works beetter as: spread (NOISE_SPREAD_THRESHOLD * 120.f / lambda) And energy threshold*(NOISE_LAMBDA_NUMERATOR/lambda) as: energy threshold*(NOISE_LAMBDA_NUMERATOR*sce-ics.group_len[w]/lambda)) (to account for the transient situation in which the encoder is switching to and form short windows) With the new spread measure in patch #06, if committed, in this one NOISE_SPREAD_THRESHOLD should be redefined to 0.5 (the active_lines measure is normalized). ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel