[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-multimedia
Subject:    Re: Multimedia Planning for KDE3
From:       Stefan Westerfeld <stefan () space ! twc ! de>
Date:       2001-09-03 12:43:47
[Download RAW message or body]

   Hi!

On Sat, Aug 25, 2001 at 08:16:27PM +0200, Stefan Westerfeld wrote:
>  * everybody who feels like implementing something for KDE3 posts a mail
>    to the kde-multimedia list describing what it is

So here is my list of changes for aRts. I marked items that I think that
should absolutely be done before KDE3 with an arrow. However, I hope that
most if not all can be done, but maybe I am just optimistic. ;)

 * Compatibility with legacy/broken OSS drivers

   can be achieved by integrating the threaded OSS patch into KDE3 - currently
   there are still issues being sorted out with that

   a possibility to further improve the quality would be writing/shipping an
   OSS compliance tester

 * I18N

-> all strings emitted by aRts should be internationalizable

 * Recording

-> the aRts C API should finally provide an API for recording

-> Arts::SoundServer(V?) should provide an interface for recording and
   streaming away

   it might be good finally following the KDE2 plan to provide a KAudioStream
   class in libartskde, to provide recording/playing streams in a nice, canned,
   easy-to-use way

-> there should be an end user application to record wav files from microphone
   in kdemultimedia using the new recording stuff

 * Video Embedding/Streaming

-> now that there are these new interfaces, they should be put-to-use in a
   satisfying way for end users in noatun/kaboodle (there might be issues
   to adress left)

 * Midi issues

-> the midi interfaces should finally support accessing sound card hardware of
   all fashions (ALSA, OSS-hw-synth) - that will mean a rewrite of some stuff,
   but is necessary for making the midi interfaces reasonable complete

   precise synchronization between midi/audio should be adressed

   libkmid could finally be moved upon the new midi interfaces

   the midi libs should be mainstream (i.e. kdelibs) and stable after KDE3

 * GSL Engine

-> thats probably the biggest change - aRts currently has an engine that
   decides which modules are to be calculated when, given a certain flow
   graph - this is called scheduling (and implemented in kdelibs/arts/flow/
   synthschedule.cc)

   the GSL engine is a complete replacement of the algorithm with the
   following characteristics:

    - it should be quite a bit more efficient in the common case

    - it supports dispatching calculations in multiple threads, which for
      instance allows to fully exploit multi processor systems

    - it allows putting module calculations in a seperate thread from the
      aRts main thread, thereby avoiding dropouts from lengthy aRts operations,
      such as for instance calling open() on an NFS drive

    - it is designed in a way to support advanced scheduling features that
      aRts currently does not support, that is
        * feedback loops (circles)
        * sample precise timing

    - it should allow achieving very very low latencies reliable (where very
      very low is something like 3ms) - aRts currently can't do this
      
    - it is implemented in plain C, using some glibisms, however it can be
      integrated into aRts with a glib-compat source in a way that it does
      not bring additional dependancies (no glib required)

   the GSL engine should first act as a drop-in replacement - however to take
   advantage of its capabilities, it will be necessary to make sure that the
   modules are implemented in a way that they can run in a seperate thread
   without interfering with anything else

   that means, that there will two types of modules: the old modules (which
   will still be running in the aRts main thread), and the hard-rt-modules
   (which will be able to run in the engine threaded)

   you will get the very very low latency benefit only if you use only hard-
   rt-modules, but everything should work with any mix of modules


   where is GSL from?

   GSL is designed by Tim Janik and me, and contains a lot of know how about
   music apps (Tim Janik has been working for years on Beast - best.gtk.org,
   and I have been working for years on aRts)

   can I look at it?

   yes (and it's a good idea to read gsl-mplan.txt):
   http://space.twc.de/~stefan/kde/download/gsl-2001-08-27.tar.gz

 * Other code in GSL

   GSL provides a sample cache which supports partial caching and preloading,
   the integration of that will get rid of the long outstanding issue that
   aRts always needs to load whole WAV files (or other formats), and support
   GigaSampler like "read-from-HD-and-play" style sample sets of huge size

   GSL should provide filter design code for butterworth, tschebyscheff-1/2
   and soon elliptic low/high and soon bandpass/stop filters, which can be
   wrapped in new aRts modules

 * Samples

   I have a prototype of a .PAT loader - you can import a whole timidity style
   patchset with that, which means that we have a useful GM-sample-set for
   aRts
   
   there is also AKAI loading code in kmusic/ksynth

   GSL provides another native format

   all of these might want to use the sample cache for efficient, preloaded,
   replaying

 * Mixer/Environments

   the work started with mixers/environments should be completed - for instance
   it would be very useful if the mixer could save/restore itself properly, and
   if it could also contain insert-stereoeffects and a master volume

   visualizations (led-bars) would be nice, but currently have the technical
   problem that they overload the MCOP layer easily, this can probably only
   be fixed by changing MCOP to deal more intelligently with change
   notifications

 * Making the MCOP component model more open to the world

   wildfox told me he is working on a DCOP/MCOP bridge

   a friend of mine is working on Java MCOP support

   another option would be UCOM gating, to support the standard QCom operations
   on aRts components - this might make it possible to use further standard
   KDE3 scripting facilities (based on Qt's dispatcher interface)

Decisions to make:

 * should the V2 interfaces be merged?
 * should aRts be moved to a seperate CVS module?
 * should aRts be binary incompatible, and if yes, which parts?

   Cu... Stefan
-- 
  -* Stefan Westerfeld, stefan@space.twc.de (PGP!), Hamburg/Germany
     KDE Developer, project infos at http://space.twc.de/~stefan/kde *-         
_______________________________________________
Kde-multimedia mailing list
Kde-multimedia@mail.kde.org
http://mail.kde.org/mailman/listinfo/kde-multimedia

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic