On Sun, Mar 15, 2015 at 05:51:32PM +0000, Mark Harmstone wrote:
- for (i = 0; i < count; i++)
for (channel = 0; channel < dsb->mix_channels; channel++)
dsb->put(dsb, i * ostride, channel, get_current_sample(dsb,
dsb->sec_mixpos + i * istride, channel));
- float* buf;
- buf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, count * dsb->mix_channels * sizeof(float));
Is it necessary to zero this buffer? I think the whole thing gets overwritten in the following lines.
I'm a bit concerned that splitting the processing out into another buffer will affect performance. Similarly in the resampling case below, you're adding another loop over every sample. We already have a performance issue introduced by the higher quality resampler:
https://bugs.winehq.org/show_bug.cgi?id=30639
Could we take the slower path in each case only if we have filters to apply?
BTW do you have an application that uses DMOs? I'd be curious to take a look and add it to my list of dsound test applications.
Andrew