Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: audio2
> Date: Mon, 27 May 2019 22:28:37 +0900
> From: Tetsuya Isaki <isaki%pastel-flower.jp@localhost>
>
> At Sat, 25 May 2019 18:01:11 +0300,
> Valery Ushakov wrote:
> > My point is exactly that you are confusing implementation detail that
> > uses right shift as a good enough implementation (which, I reiterate,
> > I don't object to here) and what is the meaning of the operation that
> > you are implementing/approximating (see my first paragraph above).
>
> I'm sorry, I don't understand (I can't parse) this paragraph
> due to my poor English skill. Would you write it again?
>
> And anyway I don't understand your point well. Can you show me
> your proposal patch?
Hi, Isaki-san!
As I understand it, uwe is just asking you to use a different name,
because `AUDIO_ASR' suggests only one particular approximation, and
it's not even the one that the code always uses. Perhaps
`AUDIO_SCALEDOWN' would be clearer?
In more detail:
- Mathematically, the function is used to scale an amplitude x down by
2^n:
f_n(x) = x/2^n.
This function has the property that f_n(-x) = -f_n(x), i.e. f_n is
an odd function.
- In digital audio, we approximate this real-valued function f_n(x)
with integer arithmetic. We have a couple choices for how to do
this:
. truncate(x/2^n), which is also an odd function.
. floor(x/2^n), which is _not_ an odd function, and so is maybe not
as good an approximation.
On platforms where floor(x/2^n) can be computed more efficiently, by
doing x >> n, than truncate(x/2^n), i.e. x/(1 << n), then that's OK:
being off by one in this approximation, under negation, is not very
bad.
- Whichever approximation we choose, we should _name_ the function for
the mathematical operation it approximates, which is scaling an
amplitude down, not for one of the approximations it _might_ use.
Calling it AUDIO_ASR seems wrong because:
. the main purpose is to use _some_ approximation to scale an
amplitude down -- it is an implementation detail that it sometimes
approximates the mathematical function by a right shift;
. the function doesn't necessarily always compute floor(x/2^n) --
that is, the function you have named AUDIO_ASR doesn't necessarily
shift right.
Maybe we could call it AUDIO_SCALEDOWN or something instead?
Home |
Main Index |
Thread Index |
Old Index