WineHQ
WineHQ

13.6. MS ACM Dlls

13.6.1. Contents

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

NameProvides
imaadp32IMA ADPCM (adaptative PCM)
msadp32Microsoft's ADPCM (adaptative PCM)
msg711Microsoft'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

13.6.2. Caching

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

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