WineHQ
WineHQ

13.8. Multimedia configuration

Unfortunately, multimedia configuration evolved over time:

  • In the early days on Windows 3.x, configuration was stored in system.ini file, under various sections ([drivers] for low level drivers, [mci] (resp. [mci32]) for 16-bit (resp. 32-bit) MCI drivers...).

  • With the apparition of the registry, in Windows 95, configuration as been duplicated there, under the key

    HKLM\System\CurrentControlSet\Control\MediaResources

  • Windows NT also adopted the registry, but decided to store the configuration information under another key than Windows 9x did.

    HKLM\Software\Microsoft\Windows NT\CurrentVersion
    And with a different layout of keys and values beneath this key.

Currently, Wine tries to load first a driver (low-level or MCI) from the NT registry settings. If it fails, it will try the system.ini configuration.

An out-of-the-box configuration is provided in wine.inf, and shall be stored in registry and system.ini at Wine installation time. It will setup correctly the MCI drivers configuration (as well as the wave and MIDI mappers). As the low-level drivers depend on hardware, their setup will be handled by winecfg.

Table 13-4. Wine multimedia configuration scheme

DriverRead from NT registryRead from system.iniSetup by wine.infSetup by winecfg
MCI driversYes (1)Yes (2)YesNo
Wave and MIDI mappersYesNoYesNo
Hardware-bound low level driversYesNoNoYes
ACM and VIDC drivers (audio & video codecs)NoYesYesNo

This will allow most settings to be correctly loaded and handled. However, it won't if an app tries to search directly the registry for the actual configuration, as the three potential configuration places may not be in sync.

It still lacks a correct installation scheme (as any multimedia device under Windows), so that all the correct keys are created in the registry. This requires an advanced model since, for example, the number of wave out devices can only be known on the destination system (depends on the sound card driven by the OSS interface).

The following sections describe which type of information (depending on the location) Wine multimedia DLLs understand.

13.8.1. NT configuration

Under the

HKLM\Software\Microsoft\Windows NT\CurrentVersion
key, are stored the names of the DLLs to be loaded for each MCI driver name:
"cdaudio"="mcicda.drv"
"sequencer"="mciseq.drv"
"waveaudio"="mciwave.drv"
"avivideo"="mciavi.drv"
"videodisc"="mcipionr.drv"
"vcr"="mcivisca.drv"
"MPEGVideo"="mciqtz.drv"

13.8.2. system.ini

Wine will read the MCI drivers from the [mci] or [mci32] section. Wine won't make any difference between the two.

Here's a sample configuration:

[mci]
MPEGVideo=mciqtz32.dll
MPEGVideo2=mciqtz32.dll
avivideo=mciavi32.dll
cdaudio=mcicda.dll
sequencer=mciseq.dll
vcr=mcivisca.drv
waveaudio=mciwave.dll

ACM drivers configuration is read (only so far) from the system.ini (and setup at Wine installation from the wine.inf file).

[drivers32]
msacm.imaadpcm=imaadp32.acm
msacm.msadpcm=msadp32.acm
msacm.msg711=msg711.acm
msacm.winemp3=winemp3.acm
msacm.msgsm610=msgsm32.acm

Video (aka vidc) drivers configuration is read (only so far) from the system.ini (and setup at Wine installation from the wine.inf file).

[drivers32]
vidc.mrle=msrle32.dll
vidc.msvc=msvidc32.dll
vidc.cvid=iccvid.dll

See also the configuration part of the User's Guide for other information on low level drivers.

13.8.3. Per driver/DLL configuration

13.8.3.1. Midi mapper

The Midi mapper configuration is the same as on Windows 9x. Under the key:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Multimedia\MIDIMap
if the UseScheme value is not set, or is set to a null value, the MIDI mapper will always use the driver identified by the CurrentInstrument value. Note: Wine (for simplicity while installing) allows to define CurrentInstrument as #n (where n is a number), whereas Windows only allows the real device name here. If UseScheme is set to a non null value, CurrentScheme defines the name of the scheme to map the different channels. All the schemes are available with keys like
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Midi\Schemes\scheme_name

For every scheme, under this key, will be a sub-key (which name is usually a two digit index, starting at 00). Its default value is the name of the output driver, and the value Channels lists all channels (of the 16 standard MIDI ones) which have to be copied to this driver.

To provide enhanced configuration and mapping capabilities, each driver can define under the key

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Midi\Ports\driver_name
a link to and .IDF file which allows to remap channels internally (for example 9 -> 16), to change instruments identification, event controllers values. See dlls/midimap/midimap.c for the details (this isn't implemented yet).