http://bugs.winehq.org/show_bug.cgi?id=7336
------- Additional Comments From chris.kcat@gmail.com 2007-06-03 23:12 ------- * Interesting. I've been having a problem since the ntdll commit with even simple test applications crashing in something to do with thread management. *
Threading is another problem I've run into recently, although I don't think it's the same issue you're having. As it's a bit unrelated to this bug, you may want to open a seperate bug report, if one isn't made already.
* The terrible sound quality was a separate issue; I spent a long time during the summer of my SoC project trying to improve it. As far as I could tell, the problem was at DirectSound or deeper; I stopped digging after a week or so to focus on the primary part of my project. *
Yes, DSound or something related is a problem spot for me too. Most drivers will crash in DSound's mixer with an 8KB buffer the DSound Renderer tries to use, due to a buffer over-read (except OSS with Full acceleration, which I think bypasses DSound's mixer). A 16KB buffer seems to work without crashing.
* Was adding an mpeg stream splitter sufficient to get audio working? If you need help testing your patches, I'd be glad to help. *
There were other bugs, namely that quartz would only attempt to use the first filter found and ACMWrapper was using uninitialized memory, both of which now fixed, but the missing built-in mpeg-1 stream splitter was a big problem. There's still a remaining problem that quartz will only use the async source file reader filter instead of the mp3 source file reader that some codec packs install, but using that returns bad media type info, and even native quartz.dll won't handle it. It's not essential though as mp3s can still play through the stream splitter and acmwrapper (which in turn uses winemp3.acm).
The last remaining "bad" problem is that after fixing a few more ref counting bugs, when a filtergraph is stopped it'll release the filters while the processing thread is still trying to process the pins. I fix that by holding the critical section when the pins are processed, and it locks up sometimes when trying to stop the stream, so I'm currently investigating that.
I'll get patches up for testing as soon as I get things organised.
* I implemented support for MP3 using FFMPEG as part of my SoC project; if you're interested in what I did, a tarball of my test applications and patches is at http://people.clemson.edu/~sagarm/soc.tgz. *
IIRC, Alexandre would rather not use external libs like this if possible. You may want to talk to him about it. I personally don't mind, although it'll be a bit tricky to match the filters that native quartz uses, including their input/output, to all run through ffmpeg.