aRts audio driver support

Eric Pouech eric.pouech at wanadoo.fr
Thu Mar 14 14:53:36 CST 2002


Chris Morgan a écrit :
> 
> *dlls/winmm/winearts, arts.c, arts.h, audio.c, mixer.c, mmaux.c, winearts.drv.spec, Makefile.in:
> Chris Morgan <cmorgan at alum.wpi.edu>
> Added aRts driver to wine
> 
> *configure, configure.ac, dlls/Makefile.in, include/config.h.in,
> dlls/dsound/dsound_main.c, documentation/samples/config:
> One question I had was what to do about EXTRADEFS entry in
> dlls/winmm/winearts/Makefile.in?  Is this ok or does it have to be a
> configure detected thing?
- first of all, you need not to hardcode the artsc lib in the
makefile.in
  otherwise, wine won't compile for people who don't have the lib 
  installed. this should be checked in configure
- for the extra defs, you can either check also in configure (and get
  defines like HAVE_KDE_ARTSC_ARTSC_H), or use 
  #include <kde/artsc/artsc.h> in the C files)

different remarks after a cursory look:
critical
- why do you hard code rate and # of bits of the current stream in 
  wodPlayer_DSPWait. You should use wwo->format.wf.nSamplesPerSec
  and wwo->format.wBitsPerSample (and perhaps wwo->format.wf.nChannels,
  I didn't check what arts returns as its buffer position)
- I'm definitevely not sure you are allowed to write onto the sound
  buffer passed by the application. So, you should be implementing
  the mixer differently. Moreover, this API is mainly deprecated since
  Win95 (as the aux interface) and has been replaced by all the mixer
  stuff... so either you don't support mixing at all, or you support
  the C++ mixer interface (Alexandre may not like it)
- the volume_effect32 function is only valid when:
	+ stream is stereo
	+ stream is 16 bit wide
  which is only covers 1/4 of the possible streams to be played
- moreover, if the driver is playing a loop (WHDR_LOOPBEGIN), you'll
  apply your volume change for every loop which is played... bad
- the configuration remarks above

medium
- in wodClose, you should close your arts stream somewhere

cleanup
- you don't need both ARTS_Close* and ARTS_Release. ARTS_Close should
  be just fine
- in wodOpen, you can get rid of the format (and likely dsp_stereo)
  local variables
- if you don't expect implementing the (mid|mod|aux|mix)Message
  functions, just remove them from the .spec and the .c files, 
  winmm will know how to take care of that
- I think you could get rid of the OSS includes in arts.h



More information about the wine-devel mailing list