Re: CBR/ABR quality regressions for q0, q1, q2 and q3

Maik Merten via Lame-dev <[email protected]> Thu, 25 Jul 2024 17:15:04 +0200
Newsgroups gmane.comp.audio.mp3.lame
Message-ID <[email protected]>
Hello,

I updated the bug report with, perhaps, a better constructed patch:

https://sourceforge.net/p/lame/bugs/516/

This latest patch simply maps the quality levels 0, 1, 2 and 3 to 4, 
similarly to how the quality-levels are handled for the new VBR mode.

Of course, it would be best to find out *why* the settings 0 to 3 don't 
work well with CBR and ABR and fix *that*, but this is a very 
non-interfering (I hope) way to fix the symptoms. It even gives a neat 
speed-boost.

Hopefully, any of the LAME developers with commit access might have a 
look at that trivial patch.

Best regards,
Maik


Am 12.07.24 um 18:57 schrieb Maik Merten:
> Hello there,
> 
> it has been observed that with CBR and ABR, perceived audio quality 
> increases when using faster settings than default.
> 
> A discussion regarding this over at HydrogenAudio: 
> https://hydrogenaud.io/index.php/topic,126120.0.html
> 
> This is very easily noticeable with very low bitrates, but is also 
> detectable with the default bitrate of 128 kbps. The discussion thread 
> on HydrogenAudio includes samples.
> 
> I traced this down to cfg->noise_shaping_amp, which is set to 1 for 
> -q3/-q2 and is set to 2 for -q1/-q0. Choosing a value of 0 (as for the 
> faster quality settings) improves perceived audio quality.
> 
> I opened up a bug report a while back over at 
> https://sourceforge.net/p/lame/bugs/516/ with trivial patches and an 
> attempt at a theory of why quality might be affected negatively with 
> noise_shaping_amp being set to 1 or 2. This, however, is merely 
> speculative, as it's not quite clear to me what settings 1 and 2 are 
> actually trying to achieve - presumably, those are intended to increase 
> quality (and perhaps they do in VBR?), but I don't quite understand the 
> reasoning behind those approaches.
> 
> While setting noise_shaping_amp to 0 is a trivial thing to do, it might 
> also be (pure speculation, again) that the actual root cause is with the 
> CBR and ABR encoding loops somehow not interacting properly with 
> noise_shaping_amp 1/2 and that a "true fix" might involve tinkering with 
> those encoding loops.
> 
> How would one progress on this issue? With -q3 being the default 
> setting, rather regrettably CBR and ABR encodings are impacted 
> negatively by default.
> 
> Another, but most likely minor thing: It appears that noise_shaping_stop 
> is unused, yet set up by lame_init_qval. I assume this could be removed?
> 
> Best regards,
> Maik