The MSACM32 (and its 16 bit sibbling MSACM) provide a way to map a given wave format to another format. It also provides filtering capabilities. Those DLLs only implement the proper switch between a caller and a driver providing the implementation of the requested format change or filter operation.
There's nothing specific in Wine's implementation compared to Windows' one. Here's however a list of the builtin format change drivers (there's no filter driver yet):
Table 13-2. Wine ACM drivers
|imaadp32||IMA ADPCM (adaptative PCM)|
|msadp32||Microsoft's ADPCM (adaptative PCM)|
|msg711||Microsoft's G.711 (A-Law and µ-Law)|
|winemp3||Wine's MP3 (MPEG Layer 3), based on mpglib library|
Note that Wine also supports native audio codecs as well.
All builtin ACM drivers are 32 bit Unicode DLLs
The MSACM/MSACM32 keeps some data cached for all known ACM drivers. Under the key
Software\Microsoft\AudioCompressionManager\DriverCache\<driver name>, are kept for values:
aFormatTagCache which contains an array of DWORD. There are two DWORDs per cFormatTags entry. The first DWORD contains a format tag value, and the second the associated maximum size for a WAVEFORMATEX structure. (Fields dwFormatTag and cbFormatSize from ACMFORMATDETAILS)
cFilterTags contains the number of tags supported by the driver for filtering.
cFormatTags contains the number of tags support by the driver for conversions.
fdwSupport (the same as the one returned from
fdwSupport are the same values as the
ones returned from