
Sun Mar 15 03:46:50 1998 Dimitrie O. Paun <dimi@mail.cs.toronto.edu> * [*/*] Fixed some dprintf_ such that there is one and only one new line for each dprintf and that new line occurs at the end. Transformed some fprintfs into proper debug statements. Removed much redundancy from most of the debug statements. The redundancy appeared because now the component and function name is output automatically. Most debug statements also used to output the name of the function. All these changes prepared the source to switch completely to the new debugging interface. For more info, refer to ./documentation/debug-msg Sat Mar 14 19:45:23 1997 Andreas Mohr <100.30936@germany.net> * [misc/shell.c] [if1632/kernel.spec] Changed parameters of FUNC004() to fix a crash. Not sure if this fix is correct (doc wanted). * [windows/user.c] [if1632/user.spec] [include/user.h] Implemented UserSeeUserDo. * [msdos/int21.c] [include/msdos.h] Added "GET LIST OF LISTS" (INT 21/52h). Sat Mar 14 15:48:02 1998 Douglas Ridgway <ridgway@gmcl.com> * [include/windows.h] [relay32/gdi32.spec] [objects/enhmetafile.c] Beginnings of enhanced metafile support. Fri Mar 13 20:53:09 1998 John Richardson <jrichard@zko.dec.com> * [win32/console.c] Restart interrupted console writes. Fri Mar 13 18:59:24 1998 Matthew Becker <mbecker@glasscity.net> * [*/*.c] Updated documentation for API manpages. * [windows/dce.c] ReleaseDC16: Fixed cast. * [include/windows.h] [memory/virtual.c] VirtualQuery{Ex} should return DWORD instead of BOOL32. Fri Mar 13 13:03:06 1998 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de> * [README][documentation/status/] README updated, added lzexpand,version and multimedia status notes to new documentation/status directory. * [ole/*.c][if1632/typelib.spec] Added typelib stubs, several small additions and fixes. * [loader/pe_image.c] Fixed a small bug (fixup_imports got passed the wrong hModule in a remapcase). * [loader/signal.c][if1632/signal.c][misc/winsock_dns.c] [loader/module.c] Fixed some recursive debugger crashes (caused by invalid FS). * [misc/registry.c] Two bugs fixed. Fri Mar 13 04:55:01 1998 David Lee Lambert <lamber45@egr.msu.edu> * [include/winnt.h] [include/winnls.h] Moved LANG_xxx flags to winnls.h * [include/winnls.h] Added flags for GetDateFormat(); fixed validity of LOCALE_SYSTEM_DEFAULT. * [include/windows.h] Added GetTimeFormat() prototypes. * [ole/ole2nls.c] Implemented ASCII date- and time-functions, using an optimized common core; added stubs for Unicode versions; started work on a Unicode core. * [AUTHORS] Added my name. Mon Mar 9 20:10:15 1998 Eric Kohl <ekohl@abo.rhein-zeitung.de> * [relay32/comctl32.spec] [include/imagelist.h] [include/commctrl.h] [misc/imagelist.c] [misc/Makefile.in] First attempt at implementing ImageLists. Sun Mar 8 20:19:49 1998 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de> * [files/dos_fs.c] [configure.in] Try to get FileTimeToLocalFileTime,FileTimeToSystemTime and SystemTimeToFileTime right. Use timegm() where available. * [misc/lstr.c] Fix an off by one error in FormatMessage and handle the case when args = NULL (used by programs to get the length of the string). * [win32/console.c] Actual display a per-process Title string, better working attempt for WriteConsole32W and ReadConsole32W. Fri Mar 6 20:33:45 1998 Slaven Rezic <eserte@cs.tu-berlin.de> * [include/config.h.in][configure.in][multimedia/audio.c] [multimedia/dsound.c] Added check for FreeBSD sound system. Sun Mar 1 17:40:10 1998 Jason Schonberg <schon@mti.sgi.com> * [controls/edit.c] [include/ole.h] [include/shlobj.h] Removed final commas in enum types. Mon Feb 23 07:52:18 1998 Luiz Otavio L. Zorzella <zorzella@nr.conexware.com> * [multimedia/time.c] Workaround to avoid infinite recursion inside timeGetTime. * [multimedia/audio.c] WODM_GETNUMDEVS and WIDM_GETNUMDEVS only return 1 now if the SOUND_DEV can be opened, or if it's busy.
177 lines
6.1 KiB
Plaintext
177 lines
6.1 KiB
Plaintext
This file contains information about the implementation of the multimedia
|
|
layer of WINE.
|
|
|
|
The libraries consist of MMSYSTEM.DLL (win16), WINMM.DLL (win32) and some
|
|
(abstracted, not Windows compatible) lowlevel drivers. The implementation
|
|
can be found in the multimedia/ subdirectory.
|
|
|
|
The multimedia stuff is split into 3 layers. The lowlevel (device drivers),
|
|
midlevel (MCI commands) and highlevel abstraction layers.
|
|
|
|
1. Lowlevel layers
|
|
|
|
Following lowlevel layers are implemented:
|
|
1.1 (Waveform) Audio
|
|
|
|
The API consists of the waveIn*/waveOut* functions found in
|
|
multimedia/mmsystem.c. They call the real lowlevel audiodriver using
|
|
the wodMessage/widMessage function in multimedia/audio.c, which handles
|
|
the different requests.
|
|
|
|
The lowlevel audio driver is currently only implemented for the
|
|
OpenSoundSystem (OSS) as supplied in the Linux and FreeBSD kernels by
|
|
4Front Technologies (http://www.4front-tech.com/). The presence of this
|
|
driver is checked by configure (depends on the <sys/soundcard.h> file).
|
|
|
|
The implementation contains all features commonly used, but has several
|
|
problems. For instance:
|
|
Writes and reads are not done asynchronously as they are supposed to
|
|
be done. This breaks some programs (soundrec.exe from the Windows applets),
|
|
but doesn't worry other programs. Some callbacks are probably done
|
|
incorrectly (there are reports of some broken multimedia applications,
|
|
but I haven't found one yet.)
|
|
|
|
TODO:
|
|
- add asynchronous writes and reads (must use threads)
|
|
- check the callback functions
|
|
- verify all functions for correctness
|
|
- add drivers for other soundsystems (Sun Audio, remote audio systems
|
|
(using X extensions, ...)
|
|
|
|
1.2 Mixer
|
|
|
|
The API consists of the mixer* functions found in multimedia/mmsystem.c.
|
|
They call the lowlevel driver functions in multimedia/mixer.c using the
|
|
mixMessage function.
|
|
|
|
The current implementation tries to use the OpenSoundSystem mixer, but is
|
|
missing nearly everything. There is no report of a working application.
|
|
|
|
TODO:
|
|
- implement mixing functionality for OSS correctly.
|
|
- implement mixing lowlevel drivers for other mixers.
|
|
|
|
1.3 MIDI
|
|
|
|
The API consists of the midi* functions found in multimedia/mmsystem.c.
|
|
They call the lowlevel driver functions in multimedia/midi.c using the
|
|
midMessage and the modMessage functions.
|
|
|
|
The current implementation is completely broken. (I think open(), read()
|
|
and write() of the /dev/midi device would make this implementation nearly
|
|
complete...)
|
|
|
|
TODO:
|
|
- Implement correct MIDI output
|
|
- Do not implement a software synthesizer. This should be done
|
|
using MIDI loopback devices in an external program (like timidity).
|
|
|
|
1.4 Timers
|
|
|
|
The API consists of the timer* functions found in multimedia/timer.c.
|
|
There is currently only one implementation, which uses normal windows timers.
|
|
The implementation works for most cases found. The only problem is that
|
|
it doesn't support asynchronous timer events (as it is supposed to do).
|
|
|
|
There is a workaround for this lack in timeGetTime() to make Diablo work
|
|
and 'Pinball! SpaceCadet' at least start up.
|
|
|
|
TODO:
|
|
- Implemented asynchronous timers (using a thread probably)
|
|
|
|
1.5 MMIO
|
|
|
|
The API consists of the mmio* functions found in multimedia/mmio.c.
|
|
|
|
FIXME: I am not sure about the status of this implementation.
|
|
|
|
TODO:
|
|
- add win32 support.
|
|
- ...
|
|
|
|
1.6 AUX
|
|
|
|
The API consists of the aux* functions found in multimedia/mmsystem.c.
|
|
They call auxMessage in multimedia/mmaux.c.
|
|
|
|
The aux* functions are the predecessor of the mixer* functions.
|
|
|
|
The implementation uses the OSS mixer API, and is incomplete.
|
|
|
|
TODO:
|
|
- verify the implementation
|
|
|
|
1.7 JOYSTICK
|
|
|
|
The API consists of the joy* functions found in multimedia/joystick.c.
|
|
The implementation currently uses the Linux joystick device driver API.
|
|
It is lacking support for enhanced joysticks and has not been extensively
|
|
tested.
|
|
|
|
TODO:
|
|
- better support of enhanced joysticks
|
|
- support more joystick drivers (like the XInput extension)
|
|
|
|
2. Midlevel drivers (MCI)
|
|
|
|
The midlevel drivers are represented by some common API functions,
|
|
mostly mciSendCommand and mciSendString. The mciSendString function
|
|
uses commandstrings, which are translated into normal MCI commands as
|
|
used by mciSendCommand. The API can be found in multimedia/mmsystem.c
|
|
and multimedia/mcistring.c.
|
|
The functions there (mciOpen,mciSysInfo) handle midlevel driver
|
|
allocation and calls.
|
|
|
|
The implementation is not complete, but works for most cases.
|
|
Win32 support for mciSendCommand is missing (mciSendString works
|
|
in the Win32 case, since the use of strings doesn't differ between
|
|
win16 and win32).
|
|
|
|
TODO:
|
|
- Win32 support
|
|
- support windows MCI drivers (should be possible for they usually
|
|
do not use lowlevel calls)
|
|
- MCI command loading support
|
|
- implement other stuff as yet unknown
|
|
|
|
WINE implements several MCI midlevel drivers:
|
|
|
|
2.1 CDAUDIO
|
|
|
|
The currently best implementation is the MCI CDAUDIO driver that can
|
|
be found in multimedia/mcicda.c. The implementation is mostly complete,
|
|
there have been no reports of errors.
|
|
The implementation currently uses only the Linux /dev/cdrom controlling
|
|
functions. (Sun and BSD like should be similair, but are not implemented.)
|
|
|
|
A very small example of a cdplayer consists just of the line
|
|
mciSendString("play cdaudio",NULL,0,0);
|
|
|
|
TODO:
|
|
- add support for other cdaudio drivers
|
|
|
|
2.2 MCIWAVE
|
|
|
|
The implementation is rather complete and can be found in multimedia/audio.c.
|
|
It uses the lowlevel audio API (although not abstracted correctly).
|
|
FIXME: The MCI_STATUS command is broken.
|
|
|
|
TODO: - check for correctness
|
|
|
|
2.3 MIDI/SEQUENCER
|
|
|
|
The implementation can be found in multimedia/midi.c. I am not sure
|
|
about the completeness.
|
|
It uses the lowlevel midi driver and is probably broken too.
|
|
|
|
TODO:
|
|
- implement it correctly
|
|
|
|
2.4 MCIANIM
|
|
|
|
The implementation consists of stubs and is in multimedia/mcianim.c.
|
|
|
|
TODO:
|
|
- implement it, probably using xanim or something similair. Could
|
|
also be implemented by using the Windows MCI video drivers.
|