Skip to content

implement anchored psychoacoustic parameter interpolation#88

Closed
nschimme wants to merge 2 commits intoknik0:masterfrom
nschimme:fix-low-bitrate-psycho
Closed

implement anchored psychoacoustic parameter interpolation#88
nschimme wants to merge 2 commits intoknik0:masterfrom
nschimme:fix-low-bitrate-psycho

Conversation

@nschimme
Copy link
Copy Markdown
Contributor

Refactor static constants into a dynamic model that scales between 16kbps and 128kbps anchors. This improves transparency and high-frequency response across the bitrate spectrum yielding a signficant average MOS delta of 0.475.

Summary of changes:

  • Interpolate NF, POWM, and Freq Penalty based on target bitrate.
  • Lowered transient threshold to 2.5 to prioritize pre-echo reduction.
  • Hoisted quality scaling and group-size divisions out of loops.
  • Centralized detailed parameter tuning documentation in frame.c.
  • Applied sibilance protection via high-frequency masking penalties.
image

See benchmark results at: https://github.com/nschimme/faac/actions/runs/23403734812

Refactor static constants into a dynamic model that scales between
16kbps and 128kbps anchors. This improves transparency and high-frequency
response across the bitrate spectrum yielding a signficant average MOS
delta of 0.475.

Summary of changes:
- Interpolate NF, POWM, and Freq Penalty based on target bitrate.
- Lowered transient threshold to 2.5 to prioritize pre-echo reduction.
- Hoisted quality scaling and group-size divisions out of loops.
- Centralized detailed parameter tuning documentation in frame.c.
- Applied sibilance protection via high-frequency masking penalties.
@nschimme
Copy link
Copy Markdown
Contributor Author

@fabiangreffrath some regressions are unavoidable because we're changing the psychoacoustic model, here the gains drastically outweigh the negatives and we see a lot of wins at lower bitrates.

@nschimme nschimme marked this pull request as draft March 23, 2026 03:23
@nschimme
Copy link
Copy Markdown
Contributor Author

Having second thoughts about this implementation, I'm going to see if I can follow a more standard methodology

@fabiangreffrath
Copy link
Copy Markdown
Collaborator

Having second thoughts about this implementation, I'm going to see if I can follow a more standard methodology

Yes, please. Although the code changes appear logical, it seems that some of the numerical values are purely based on "gut feelings".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants