
The road to xine-lib 1.0
========================

this only relates to the xine engine (xine-lib), not xine
frontends

1-rc1   First "release candidate". xine's architecture is stable, ie. it
        must not be changed before 1.0. Features that do not appear in
        this roadmap must not be added. Focus is on bugfixes.

1-rc2   Documentation is brought up to date.

1-rc3   The release mechanism is well-defined and documented, along with a
        set of test procedures. Some (most?) of the tests are automated.
        Now is the time of "soft" feature freeze: Generally, new features
        must not be added. However, low-impact stuff, such as new
        demuxer, decoder or input plugins are okay.

1-rc4   All user-visible strings should be enclosed in _() for translation.
        The majority of config entries should have a proper help string.
        Decision should be made, what messages to report on console and
        what to put in the log. The config option naming is cleaned up.

1-rc5   There is a well-defined bug handling mechanism, even if it is a
        paper based checklist on someones desk. 1.0-critical bugs are
        sorted out.
        This is the time of "hard" feature freeze: Only bug fixes are
        permitted.
        (xine-ui should stabilize here, as well, maybe an 0.99.x or
         1-alpha/beta/rc series to demonstrate this to end users)

1-rc6   Most compile warnings are fixed. Hopefully the translators have
        finished their job as well. xine engine structures have been
        looked over and some resorting/reorganizing has been done.

1-rc7   All known bugs should be fixed now. There is a big call for
        testers. If they don't find any new bugs for at least a week,
        we're there, and 1.0 will only differ in version number and a bit
        of documentation. If they do find more bugs, we keep on fixing
        them and making weekly rc releases until we get stable...
        (xine-ui may have an 1.0 release any time after this point;
         before, together with, or after xine-lib 1.0, depending on it's
         own 1.0 release goals)

1.0     Due to historical reasons, the day 1.0 is released will be
        given the name "christmas".


required for 1.0
----------------

- rc4: provide long language strings via XINE_META_INFO_FULL_LANG in
  ogg demuxer and DVD input
- xine bug tracking system?
- add help strings for all post plugins
- review code for malloc()s that don't check their return type
  (replace with xine_xmalloc() and make it abort() on failure,
  if graceful failure handling is not possible)
- clean up MRL sytax of individual plugins and finish their documentation

optional
--------

- properly localize all user-visible strings
- rename config entries to a more consistent scheme
  (providing automatic config file conversion, of course)
- sort out which messages should go to console and which to xine_log
- look over global structures and do some cleanup
- id3v2.3,v2.4 support
- "metainfo change" event
- double-check rate estimation in demux_mpeg/mpeg_block
- fix cook audio streaming
- better dvd error messages
- fix streaming of small files (e.g. http) 

- rtp / rtsp support:

  - input_rtp
  - rtsp support (currently only real's rtsp derivate is implemented)
  - isma/apple streaming server support (mpeg4ip.sf.net)
  - find out what all those people requesting rtp/multicast/... support
    really want and how to implement it :)
  - videolan streaming server support
  - helix streaming server support

- detect broken savage drivers in health check, disable Xv in that case
- directfb video output plugin
- reduce memory footprint (e.g. variable fifo buffer sizes...)
- opengl video output plugin (matthias, sopra at stuttgart university)
- irix audio output plugin (matthias)

beyond 1.0
----------

- use the safe string functions from xine_buffer.h in xine's own code
- rework the clock system, introducing clock and metronom speed settings
- allow more frame formats, automatic post plugin insertion for conversion
- frame-level seeking
- experiment with splint for code verification

Open Tasks
==========

- port to other OS (Net/OpenBSD, hurd ...?)
- MicroDVD input plugin
- video output synced to vertical blank
  preferably without requiring
  root privileges (XSync extension? MAS?)
- resolve issues with ffmpeg's live http streaming server
- videolan streaming support
- MAS support (http://www.mediaapplicationserver.net)
- nonlinear video editing and compositing frontend (michael) => enix
- stream format conversion frontend => enix
- Multiple DVD Subtitles displayed at the same time 
- Move read cache code from libdvdnav into input_dvd.c
- Support DVD "Trick" modes. Super Fast forward/reverse
- detect raw ac3/a52 in MPEG Program streams.
- detect raw ac3/a52 in MPEG Transport streams that lack PAT/PMT tables.
- handle MPEG PES/PS streams with PES_packet_length = 0

xine's future
=============

- implement lots of audio and video processing filters as post plugins, e.g.
  - scaling
  - colorspace conversion
  - deinterlacing (already done)
  - audio resampling
  - compressor
  ...

  extend public api so post plugins are instantiated automatically when
  needed, but keep explicit post plugin rewiring functions for advanced
  video processing frontends 

- see what kind of cooperation can be set up with other media player projects
  - mike will look into moving xine's decoder api closer to the one
    ffmpeg uses
  - check out other media players
  - output, demuxer plugins

