Hi,
As you're all probably aware, myself and janderwald are in the process of working on sound. I thought I'd give a brief update on this, but I also need some feedback on the location of the various sound components in our tree as I think it needs a little reorganisation.
At present, I am focusing on the user-mode portion of sound support, with the goal of getting NT4 audio drivers working (legacy Sound Blaster cards etc.) while janderwald is getting newer style WDM audio drivers up and running.
I don't want to duplicate code, hence I have been intentionally developing some helper libraries that can be easily reused. Think of them as dedicated abstractions of the various Windows APIs with a dedicated purpose (sound support.)
The components involved or which are planned are:
- Common library for user-mode side of sound support - Helper library specifically for NT4 device sound support (device "discovery" etc.) - sndblst.dll, mmdrv.dll and wdmaud.drv user-mode DLLs (making use of the above two components, slight variation in functionality for each - Windows 3.1 used to use the equivalent of these as the actual drivers, hence why there are multiple.)
- Kernel-mode common library for NT4 style sound drivers - Sound Blaster library (to be shared between sndblst.sys and PortCls implementation) - UART401 library (to be shared between mpu401.sys and PortCls implementation)
- Kernel Streaming API - Kernel Streaming components - Port Class driver
At the moment I have a few things dotted around a "sound" directory within "include/reactos" I also have some stuff in our "lib" directory (the helpers I wrote) Kernel streaming related components seem to be spread around various places in drivers/wdm and drivers/ksfilter My attempts so far at NT4 drivers are still sat in drivers/multimedia
Basically, I want to try and structure this better. I don't think sndblst.dll/mmdrv.dll/wdmaud.drv belong in dll/win32, and I'm wondering if my helper libraries for sound should sit next to the relevant components directory-wise. Or are they fine being in "lib"? They're only used for sound components.
Finally, does anyone object to me removing the entire of the drivers/multimedia tree as nothing in there works at all? I wrote most of the code there, there is some redundant code from the very early ReactOS days in "sound", I can leave that if it's really needed. I want to start implementing sndblst.sys properly so I want to clean up a bit first, but thought I'd ask first before I do anything further.
Andrew