http://bugs.winehq.org/show_bug.cgi?id=20323
--- Comment #3 from Jörg Höhle hoehle@users.sourceforge.net 2009-11-18 11:42:33 ---
one on top of the NT ioctls, and the other on top of the Mac OS CDDA file system.
If you look at MCICDA, you already see 2 implementations: one using DirectSound and IOCTL_RAW_READ, the other using IOCTL_PLAY_AUDIO.
It is entirely doable to write a file-based MCI cdaudio driver as a kind of hybrid between mcicda and mciwave. As somebody pointed out in the mailing list, Gnome-vfs and alike might also benefit from this (could somebody please expand on this scenario?).
- The sound output I consider trivial -- forward it to wave audio. Perhaps write an ACM AIFF to PCM converter to integrate with the wave mapper. Actually, I consider it a sort of a limitation of the mciwave driver that it is hard-wired to RIFF formats. Perhaps it could be trivially changed to eat AIFF as well as MS' RIFF. Plenty of implementation choices. Not a single ioctl would be required (although preferable: don't scan all 20 .aiff files to sum up the total playing time for status cdaudio length). It makes for interesting test cases as I'm not convinced the Wine MCI currently properly supports 2 devices of same type mcicda or mciwave (I'm almost sure it does not (yet)).
- The hard part (because I don't know this area) is the interaction with the kernel. What must be done on the UNIX side of Wine to make the MS-API layer believe there's a CD-ROM with a) audio-only data or b) mixed audio and file data? How does this work with winecfg's virtual drives? Esp. in case b), the API must associate both file system access as well as track information with a unique driver letter like D: (On MacOS, at the user level, you see 2 distinct mount points in /Volumes/).
Apps typically call nothing more than (that's a real trace, not made up): open cdaudio [sometimes with shareable] set cdaudio time format tmsf status cdaudio mode status cdaudio number of tracks play cdaudio from 1 to 2 notify Or the same with MCI_OPEN etc.
-- So it's preferable that the first CD-ROM in Wine be the real one. (I wonder how systems behave with 2 real drives, which seems quite common among PC users).