13.6. MS ACM DLLs

13.6.1. Contents

The msacm32 DLL provides 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 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

imaadp32IMA ADPCM (adaptative PCM)
msadp32Microsoft ADPCM (adaptative PCM)
msg711Microsoft G.711 (A-Law and μ-Law)
msgsm32Microsoft GSM 06.10
winemp3 Wine 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.

13.6.2. Caching

msacm32 keeps some data cached for all known ACM drivers. Under the key

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 acmDriverDetails).

The cFilterTags, cFormatTags, fdwSupport are the same values as the ones returned from acmDriverDetails function.