It seems to be clipping correctly (I put some breakpoints in and there were numbers over 1.0, but it set them to 1.0).
So right now I have:
- Main voice provider that has a mixer provider object.
- Mixer provider that takes all the 16 bit PCM (Speex) streams and converts them to 32 bit Ieee format (Using the Wave16ToFloatProvider code).
- A Jitter Buffer provider for each user - This decodes each user talking.
- The Main voice provider takes the 32 bit Ieee mixer Read data and converts it back to 16 bit PCM (Using WaveFloatTo16Provider).
- Then I convert my main voice provider to a IWaveProvider object.
I based my providers off of ISampleProvider