[FFmpeg-devel] [PATCH 3/3] aaccoder: Improve IS phase rejection

Claudio Freire klaussfreire at gmail.com
Tue Jul 21 03:02:47 CEST 2015


On Fri, Jul 17, 2015 at 11:19 PM, Rostislav Pehlivanov
<atomnuker at gmail.com> wrote:
>>But even if not used for avoding I/S, it can be used to pick whether
>>to invert the phases, where it was clearly more stable.
> In case the phase is very clearly wrong then there will be an increase in
> the distortion which should cause the dist2 <= dist1 check to fail and thus
> not use IS. So the phase isn't even very important. The whole point of the
> phase check is to pick out the obviously wrong phases and save time by not
> having to calculate the error of the spectral coefficients. And this works
> better when you individually pick out a majority rather than just summing
> them up and then doing the decisions.

All the more reason to use energy then.

If you use this sign-difference count, low-energy noise may change the
count while being inaudible, yielding an incorrect phase value. After
that, distortion will be huge and the band won't be I/S encoded, but
it might if the phase value was otherwise.

In general, this algorithm seems fragile (ie: not robust in the
presence of noise).

Why not forego the optimization and optimize efficiency instead? (it's
the priority now, running time optimization should be done after
exploiting the technique to increase quality as much as posibble).

An alternative technique that may be better in that regard, then,
would be to measure distortion with both phases, and pick the phase
that yields the lowest distortion?

Give it a try.


More information about the ffmpeg-devel mailing list