Hi Maarten,
From a technical point of view, two things popped out:
1) configure is autogenerated by Alexandre, so you shouldn't include it in your patch. configure.ac is enough.
2) The patch doesn't apply with git-am. I don't know how much of an issue this is for AJ, but I prefer git-am over git-apply and manually committing
I barely know too much about sound, so I'm leaving the rest of the tech stuff up to Joerg and Eikum.
From a user point of view, I have a previous version of that driver in my
tree, and great hopes that it fixes some issues on my gaming setup that uses Pulseaudio(due to a multiseat configuration), e.g. bug 28856. The alsa route may eventually fix those bugs too, but I'm hoping for that since more than a year.
So good luck with your Pulse driver, and thanks for working on this flamewar- infested stuff.
Cheers, Stefan
Am Donnerstag, 8. März 2012, 01:22:58 schrieb Maarten Lankhorst:
Signed-off-by: Maarten Lankhorst m.b.lankhorst@gmail.com
Resending now v1.4 is released for inclusion into 1.5, no changes from v9
V1: Original version V2:
- Added basic session manager bullshit
- Fixed a bunch of test failures
- Add stubs for audio volumes, fixes to make capture work
V3:
- 20% cooler
- reworked clock handling to be much more accurate
- rewrite of all the interesting parts
- only tested rendering, capture untested
V4:
- Make mixer settings global to prevent
- Start of making capture working again
V5:
- Really break capture this time, TODO!!
- Fix most rendering tests except those related volume, rendering should not only pass tests, but also be done in a correct way
- Cleaned up channel mapping
- Fix clock going 2x as fast
V6:
- Reliability fixes
- Align buffer size to a multiple of period size
- Remove session lock, I plan to use pulseaudio calls for volume, anyhow
V7:
- Implement shared mode capture correctly
- All non-IAudioStreamVolume related tests should pass for capture and rendering
V8:
- Add DllMain to fix valgrind complaints
- Add real and fake volume control
- Passes all tests including the ones marked todo_wine
V9:
- Rework IAudioClient::Reset, flushing is only needed for render stream.
- Add stream validity checks to IAudioClock as well
- Fix copy pasted bug from winealsa in clone_format (As reported by
KittyCat) - Validate wBitsPerSample for float format (kcat)
- Make the pulse mapping const (kcat)
- Change mix format to float (kcat)
- Fix volume comments referring to alsa instead of Pulseaudio
- Split off pulseaudio spec to waveformat to a separate function
- Disabled audioclock interpolation for now, until I determine how to do it
properly. - Call SetEvent in render callback as last function, since it gives up time slot (as reported by Joerg) - Reworked capture logic to always capture, since that seems to be the case on windows, when stopped we simply drop whole packets, but keep firing the event. - Rework the logic behind GetMixFormat, and make capture and rendering formats and periods separate again. This is needed for example if you have 5.1 playback 44100 with 32kHz 2 channel capture (USB microphone). - Complete the pa_channel_position -> dwChannelMask mapping
- Use MulDiv instead of pa_bytes_to_usec or pa_usec_to_bytes in a few
places. - Rendering buffers no longer have to be a multiple of period size.
There are 2 places that still have those calls, but in worst case it will make a 50 ns difference for the reported device periods, while the one in AudioClock::GetPosition is disabled until it's determined how to handle interpolation of IAudioClock::GetPosition, if that's still going to happen.
I believe with this I addressed all issues and comments raised in V8, and looking forward to any constructive feedback and test results of V9. In particular, I'm interested in XAudio2 results with windows version set to vista or higher, so that it uses mmdevapi directly
winmm and dsound should be able to work unmodified, but you may want to lower ds_snd_queue_max to 3 or 4 to decrease latency on dsound games. It seems dsound doesn't respect mmdevapi in that regard or 2 periods might have been possible. It would have been nice if it did. :(