Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LPC decoding details missing #88

Closed
fweimer opened this issue Sep 20, 2020 · 3 comments · Fixed by #124
Closed

LPC decoding details missing #88

fweimer opened this issue Sep 20, 2020 · 3 comments · Fixed by #124

Comments

@fweimer
Copy link
Contributor

@fweimer fweimer commented Sep 20, 2020

I think some of the LPC decoding details should be included in the specification:

  • Apparently, it is expected that the decoding happens as if with infinite precision.
  • Is there an expectation that it is possible to implement subset streams with just an 32x32→32 multiplier if the decoded stream is 16 bit?
  • What does it mean if the quantized linear predictor coefficient shift in SUBFRAME_LPC is negative? I don't think the reference implementation performs a left shift in this case.
  • I don't think it is obvious where to apply the quantiziation shift.

It may make sense to include an explicit formula for LPC decoding, so that the it's clear whether there is a minus sign involved or not.

@ktmf01
Copy link
Collaborator

@ktmf01 ktmf01 commented Jan 28, 2022

@fweimer, I was reviewing whether all points you mention are included in the current PRs, and I think they are all accounted for. The negative shift is explicitly forbidden in #97, where to apply the shift is also in #97, the 32-bit math is explained in #124 and the explicit formula is in the (informative appendix) #120

The only thing I'm not sure of is the infinite precision. What do you mean by that?

@fweimer
Copy link
Contributor Author

@fweimer fweimer commented Jan 29, 2022

With infinite precision I meant that the decoder has to make sure that the linear predictor computations do not overflow by choosing a sufficiently large data type. It was not clear to me whether there was a rule that encoders had to make sure to stay within a specific numerical range (depending on sample width etc.). #124 makes it clear that decoders have to assume the worst case (what I called infinite precision).

So I think everything I raised here is being addressed. Thanks!

@retokromer
Copy link
Collaborator

@retokromer retokromer commented Jan 29, 2022

Indeed, decoders should assume the worst case.

@ktmf01 ktmf01 linked a pull request Jan 29, 2022 that will close this issue
@ktmf01 ktmf01 closed this in #124 Feb 16, 2022
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 a pull request may close this issue.

3 participants