http://bugs.winehq.org/show_bug.cgi?id=14717
Alexander E. Patrakov patrakov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #37381|0 |1 is obsolete| |
--- Comment #243 from Alexander E. Patrakov patrakov@gmail.com 2011-11-27 04:38:48 CST --- Created attachment 37659 --> http://bugs.winehq.org/attachment.cgi?id=37659 Third version of my patchset
The third version of the patchset removes some dead code. It does not address the performance concerns.
In order to address them, I need to add a buffer so that dsb->get is not called more than once for the same sample. However, in order to add such buffer, I must understand the existing buffering scheme. It just takes time.
What I want to do next (in order to simplify buffering) is to clean up the volume logic. Currently, it is an example of yo-yo code that attempts to handle all bit depths in a "switch" statement. I will try to put this into resampled_copy() so that the code only has to deal with 32-bit samples.
One more thing concerning performance: the code does a lot of fixed-point arithmetics, but fixed-point arithmetics is exactly what prevents me from using SSE2 optimizations. So, may I refactor the code in such a way that get() returns and put() accepts a floating-point number instead of a 32-bit integer? May I convert freqAcc from a 20-bit fixed-point number to a floating-point number? The only implication is that the code will no longer be bit-exact with 32-bit primary buffers (if such thing exists at all).