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