Hi,
Alexandre Julliard wrote:
To achieve this, we eliminate the tail call and turn it into a loop, which allows us to preserve the local state in the variable "last".
Please do this as a proper loop, not with a goto.
In bug #33155 I explained that Wine's PullACMData needs a redesign http://bugs.winehq.org/show_bug.cgi?id=33155
The core issue is the fundamental impedance mismatch between mmdevapi capture and WinMM/ACM recording w.r.t. packet/headers sizes that shows off depending on codec's block size.
I have no plans to fix that. Any takers?
As a consequence, I won't spend time now refactoring the existing misdesigned code into a set of nested loops -- still as misdesigned -- just to eliminate a goto.
So the choice was:
- Perform a tiny surgical change now, using a goto, with the benefit that 1:1 ACM codecs like µ-Law or A-Law would start working, while all others are left in the cold, waiting for a redesign.
- Leave as is, waiting for somebody to perform the redesign. Meanwhile, ACM recording doesn't work at all and the whole function could as well be replaced by a single FIXME line.
Regards, Jörg Höhle