RFC: winedev guide multimedia chapter patch

Frédéric Delanoy frederic.delanoy at gmail.com
Sat Aug 17 06:25:00 CDT 2013


Hi guys,

I've been updating the wine multimedia paths of the wine dev guide,
but I'm not really familiar with that area of Wine, so could you
please have a look at the attached patch to check if it seems correct?
I checked the code a bit but I'm not sure how outdated the guide is.

For easier "testing", just clone
http://source.winehq.org/git/docs.git, apply the patch and run
./configure, then 'make winedev-guide.html' in the "en/" subdirectory.

Thanks,

Frédéric Delanoy
-------------- next part --------------
From 4f20de43d0803702d6364a5d2adbe37f7cad2a3e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delanoy?= <frederic.delanoy at gmail.com>
Date: Wed, 7 Aug 2013 17:50:58 +0200
Subject: [docs] winedev: Update wine multimedia DLLs paths
Reply-To: wine-devel <wine-devel at winehq.org>

---
 en/winedev-multimedia.sgml | 137 +++++++++++++++++++++++++--------------------
 1 file changed, 77 insertions(+), 60 deletions(-)

diff --git a/en/winedev-multimedia.sgml b/en/winedev-multimedia.sgml
index a38d7a2..1225b14 100644
--- a/en/winedev-multimedia.sgml
+++ b/en/winedev-multimedia.sgml
@@ -7,12 +7,30 @@
     </para>
 
     <para>
-      The implementation can be found in the
-      <filename>dlls/winmm/</filename> directory (and in many of its
-      subdirectories), but also in <filename>dlls/msacm/</filename>
-      (for the audio compression/decompression manager) and
-      <filename>dlls/msvideo/</filename> (for the video
-      compression/decompression manager).
+      The implementation can be found in a number of directories:
+      <itemizedlist>
+        <listitem>
+          <para>
+            <filename class="directory">dlls/winmm/</filename>, <filename
+            class="directory">dlls/mmsystem.dll16/</filename> and <filename
+            class="directory">dlls/msacm32.drv/</filename>
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <filename class="directory">dlls/msacm32/</filename> and <filename
+            class="directory">dlls/msacm.dll16/</filename> (for the audio compression/decompression
+            manager)
+          </para>
+        </listitem>
+        <listitem>
+          <para>
+            <filename class="directory">dlls/msvfw32/</filename> and <filename
+            class="directory">dlls/msvideo.dll16/</filename> (for the video
+            compression/decompression manager).
+          </para>
+        </listitem>
+      </itemizedlist>
     </para>
 
     <sect1 id="mm-overview">
@@ -21,8 +39,8 @@
       <para>
 	The multimedia stuff is split into 3 layers. The low level (device
 	drivers), mid level (MCI commands) and high level abstraction layers.
-        The low level layer has also some helper DLLs (like the MSACM/MSACM32
-        and MSVIDEO/MSVFW32 pairs).
+        The low level layer has also some helper DLLs (like the msacm32/msacm.dll16
+        and msvfw32/msvideo.dll16 pairs).
       </para>
 
       <para>
@@ -163,10 +181,10 @@ Kernel space |                    Client applications
              |  |      v v v         | |       v v          v v
              |  |   +---------------+---+-------------+-------------+
              |  |   | waveInXXX     |   | mciXXX      | *playSound* |
-             |  |   | waveOutXXX    |   |             | mmioXXX     | WinMM.dll
+             |  |   | waveOutXXX    |   |             | mmioXXX     | winmm.dll
              |  |   | midiInXXX     |   |             | timeXXX     |   32-bit
              |  |   | midiOutXXX    |   |             | driverXXX   |
-             |  |   | midiStreamXXX |   |             |             | MMSystem.dll
+             |  |   | midiStreamXXX |   |             |             | mmsystem.dll16
              |  |   | mixerXXX      |   |             |             |   16-bit
              |  |   | auxXXX    +---+   +---+ mmThread|             |
              |  |   | joyXXX    | Call back | mmTask  |             |
@@ -177,7 +195,7 @@ Kernel space |                    Client applications
 +---------+  |  |   +-------------+    +----------+
 |HW driver|<------->|    *.drv    |    | mci*.drv |
 +---------+  |  |   +--------------+   +-----------+
-             |  |    |  msacm.drv  |    | mciwave  |
+             |  |    | msacm32.drv |    | mciwave  |
              |  |    +--------------+   +-----------+
              |  |     | midimap.drv |    | mcimidi  |
              |  |     +-------------+    +-----------+
@@ -238,7 +256,7 @@ Kernel space |                    Client applications
       </para>
 
       <para>
-	There are two specific low level drivers (msacm.drv for wave input/output,
+        There are two specific low level drivers (msacm32.drv for wave input/output,
         midimap.drv for MIDI output only). These drivers (also present
         in Windows):
 	<itemizedlist>
@@ -303,21 +321,21 @@ Kernel space |                    Client applications
       </sect2>
 
       <sect2>
-	<title>Wave mapper (msacm.drv)</title>
+        <title>Wave mapper (msacm32.drv, mmsystem.dll16)</title>
 
 	<para>
 	  The Wave mapper device allows to load on-demand audio codecs
 	  in order to perform software conversion for the types the
 	  actual low level driver (hardware). Those codecs are
-	  provided through the standard ACM drivers in MSACM32 DLL.
+          provided through the standard ACM drivers in msacm32 or msacm.dll16 DLL.
 	</para>
 
 	<para>
 	  Wave mapper driver implementation can be found in
-	  <filename>dlls/winmm/wavemap/</filename> directory. This
-	  driver heavily relies on MSACM and MSACM32 DLLs which can be
-	  found in <filename>dlls/msacm</filename> and
-          <filename>dlls/msacm32</filename>. Those DLLs load ACM
+          <filename class="directory">dlls/msacm32.drv/</filename> directory. This
+          driver heavily relies on msacm DLLs
+          found in <filename class="directory">dlls/msacm32</filename> and
+          <filename class="directory">dlls/msacm.dll16</filename>. Those DLLs load ACM
           drivers which provide the conversion to PCM format (which is
           normally supported by low level drivers). A Law, uLaw,
           ADPCM, MP3... fit into the category of non PCM formats. 
@@ -326,7 +344,7 @@ Kernel space |                    Client applications
       </sect2>
 
       <sect2>
-	<title>MIDI mapper (midimap.drv)</title>
+        <title>MIDI mapper (midimap)</title>
 
 	<para>
 	  Midi mapper allows to map each one of 16 MIDI channels to a
@@ -338,7 +356,7 @@ Kernel space |                    Client applications
 
 	<para>
 	  A built-in MIDI mapper can be found in
-	  <filename>dlls/winmm/midimap/</filename>. It partly provides
+          <filename class="directory">dlls/midimap/</filename>. It partly provides
 	  the same functionality as the Windows one. It allows to
 	  pick up destination channels: you can map a given channel to
 	  a specific playback device channel (see the configuration
@@ -375,9 +393,9 @@ Kernel space |                    Client applications
 	    <tbody>
 	      <row>
 		<entry>CdAudio</entry>
-		<entry>MciCDA.drv</entry>
+                <entry>mcicda</entry>
 		<entry>MCI interface to a CD audio player</entry>
-		<entry><filename>dlls/winmm/mcicda/</filename></entry>
+                <entry><filename class="directory">dlls/mcicda/</filename></entry>
 		<entry>
 		  Relies on NTDLL CdRom raw interface (through
 		  <function>DeviceIoControl</function>). 
@@ -385,27 +403,27 @@ Kernel space |                    Client applications
 	      </row>
 	      <row>
 		<entry>WaveAudio</entry>
-		<entry>MciWave.drv</entry>
+                <entry>mciwave</entry>
 		<entry>
 		  MCI interface for wave playback and record
 		</entry>
-		<entry><filename>dlls/winmm/mciwave/</filename></entry> 
+                <entry><filename class="directory">dlls/mciwave/</filename></entry> 
 		<entry>It uses the low level audio API.</entry>
 	      </row>
 	      <row>
 		<entry>Sequencer</entry>
-		<entry>MciSeq.drv</entry>
+                <entry>mciseq</entry>
 		<entry>Midi Sequencer (playback)</entry>
-		<entry><filename>dlls/winmm/mciseq/</filename></entry>
+                <entry><filename class="directory">dlls/mciseq/</filename></entry>
 		<entry>It uses the low level midi APIs</entry>
 	      </row>
 	      <row>
 		<entry>AviVideo</entry>
-		<entry>MciAvi.drv</entry>
+                <entry>mciavi32</entry>
 		<entry>AVI playback and record</entry>
-		<entry><filename>dlls/winmm/mciavi/</filename></entry>
+                <entry><filename class="directory">dlls/mciavi32/</filename></entry>
 		<entry>
-		  It rather heavily relies on MSVIDEO/MSVFW32 DLLs
+                  It rather heavily relies on msvfw32/msvideo.dll16 DLLs
 		  pair to work.
 		</entry>
 	      </row>
@@ -435,33 +453,31 @@ Kernel space |                    Client applications
       <title>High level layers</title>
 
       <sect2>
-	<title>WINMM (and MMSYSTEM)</title>
-	
+        <title>winmm (and mmsystem.dll16)</title>
+
 	<para>
-	  The high level layers encompass basically the MMSYSTEM and
-	  WINMM DLLs exported APIs. It also provides the skeleton for
+          The high level layers encompass basically the winmm and
+          mmsystem.dll16 DLLs exported APIs. It also provides the skeleton for
 	  the core functionality for multimedia playback and
-	  recording. Note that native MMSYSTEM and WINMM do not
+          recording. Note that native WINMM and MMSYSTEM do not
 	  currently work under Wine and there is no plan to support
 	  them (it would require to also fully support VxD, which is
 	  not done yet).
 	</para>
       
 	<para>
-	  WINMM and MMSYSTEM in Wine can handle both 16- and 32-bit
-	  drivers (for low level and MCI drivers). It will handle all
-	  the conversions transparently for the all the calls to WINMM
-	  and MMSYSTEM, as it knows what the driver interface is (16-
-	  or 32-bit) and it manages the information sent
+          winmm and mmsystem.dll16 in Wine can handle both 32- and 16-bit
+          drivers (for low level and MCI drivers). Wine will handle all
+          the conversions transparently for all the calls to winmm
+          and mmsystem.dll16, as it knows what the driver interface is (32-
+          or 16-bit) and it manages the information sent
 	  accordingly.
 	</para>
 
 	<para>
 	  MCI drivers are seen as regular Wine modules, and can be
 	  loaded (with a correct load order between builtin, native),
-	  as any other DLL. Please note, that MCI drivers module names
-	  must bear the <filename>.drv</filename> extension to be
-	  correctly understood.
+          as any other DLL.
 	</para>
 
 	<para>
@@ -486,7 +502,7 @@ Kernel space |                    Client applications
 	  Note that a Wine specific flag has been added to the
 	  <function>wodOpen</function> function, so that the DSound
 	  DLL can get a reference to a COM sound object from a given
-	  WINMM wave output device. This should be changed in the
+          winmm wave output device. This should be changed in the
 	  future.
 	</para>
 
@@ -501,7 +517,7 @@ Kernel space |                    Client applications
 	<title>Contents</title>
 
 	<para>
-	  The MSACM32 (and its 16-bit sibling MSACM) provide a way to
+          The msacm32 (and its 16-bit sibling msacm.dll16) DLL 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
@@ -565,7 +581,7 @@ Kernel space |                    Client applications
 	<title>Caching</title>
 
 	<para>
-	  The MSACM/MSACM32 keeps some data cached for all known ACM
+          The msacm32/msacm.dll16 keeps some data cached for all known ACM
 	  drivers. Under the key
           <screen>
 	  Software\Microsoft\AudioCompressionManager\DriverCache\<driver name>
@@ -622,7 +638,7 @@ Kernel space |                    Client applications
 	<title>Contents</title>
 
 	<para>
-	  The MSVFW32 (and its 16-bit sibling MSVIDEO) provide
+          The msvfw32 (and its 16-bit sibling msvideo.dll16) provide
 	  encode/decode video streams. Those DLLs only implement the
 	  proper switch between a caller and a driver providing the
 	  implementation of the requested format coding/decoding
@@ -829,13 +845,13 @@ HKLM\Software\Microsoft\Windows NT\CurrentVersion
 	  Here's a sample configuration:
 	  <screen>
    [mci]
-   cdaudio=mcicda.drv
-   sequencer=mciseq.drv
-   waveaudio=mciwave.drv
-   avivideo=mciavi.drv
-   videodisc=mcipionr.drv
+   MPEGVideo=mciqtz32.dll
+   MPEGVideo2=mciqtz32.dll
+   avivideo=mciavi32.dll
+   cdaudio=mcicda.dll
+   sequencer=mciseq.dll
    vcr=mcivisca.drv
-   MPEGVideo=mciqtz.drv
+   waveaudio=mciwave.dll
 	  </screen>
 	</para>
 
@@ -845,10 +861,11 @@ HKLM\Software\Microsoft\Windows NT\CurrentVersion
 	  installation from the <filename>wine.inf</filename> file).
 	  <screen>
     [drivers32]
-    MSACM.imaadpcm=imaadp32.acm
-    MSACM.msadpcm=msadp32.acm
-    MSACM.msg711=msg711.acm
-    MSACM.winemp3=winemp3.acm
+    msacm.imaadpcm=imaadp32.acm
+    msacm.msadpcm=msadp32.acm
+    msacm.msg711=msg711.acm
+    msacm.winemp3=winemp3.acm
+    msacm.msgsm610=msgsm32.acm
 	  </screen>
 	</para>
 
@@ -859,9 +876,9 @@ HKLM\Software\Microsoft\Windows NT\CurrentVersion
 	  file).
 	  <screen>
     [drivers32]
-    VIDC.MRLE=msrle32.dll
-    VIDC.MSVC=msvidc32.dll
-    VIDC.CVID=iccvid.dll
+    vidc.mrle=msrle32.dll
+    vidc.msvc=msvidc32.dll
+    vidc.cvid=iccvid.dll
 	  </screen>
 	</para>
 
@@ -917,7 +934,7 @@ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MediaProperties\PrivatePrope
 	    to remap channels internally (for  example 9 -> 16), to
 	    change instruments identification, event controllers
 	    values. See the source file
-	    <filename>dlls/winmm/midimap/midimap.c</filename> for the
+            <filename>dlls/midimap/midimap.c</filename> for the
 	    details (this isn't implemented yet).
 	  </para>
 
-- 
1.8.3.4


More information about the wine-devel mailing list