vlc/TODO

802 lines
24 KiB
Plaintext

#
# vlc tasks
# ---------
#
#
# Difficulty values: Easy, Medium, Hard, Guru
#
# Urgency values: Wishlist, Normal, Important, Critical
Task: 0x5e
Difficulty: Hard
Urgency: Wishlist
Description: All-in-one interface window
Find a way for the interface plugin to provide video output capabilities
and have it display the stream in the same window.
Status: Todo
Task: 0x5d
Difficulty: Guru
Urgency: Normal
Description: Win32 port
Win32 is probably the most common desktop platform, we should support it
as well. Besides, most students at Centrale use Windows and VideoLAN was
originally designed for them.
Status: Done 26 Apr 2001 (gbazin)
Task: 0x5c
Difficulty: Medium
Urgency: Wishlist
Description: Infrared support
Write a plugin which listens to the infrared port and sends appropriate
commands to the application. This can either be an interface plugin, or,
preferably, a new kind of interface-agnostic "command" plugin.
Status: Done 6 Feb 2002 (Sigmund Augdal)
Task: 0x5b
Difficulty: Hard
Urgency: Critical
Description: Fix the FreeBSD port
The FreeBSD port of vlc doesn't run, probably because of a pthread
issue. This should be investigated.
Status: Done 19 Jul 2001 (Øyvind Kolbu <oyvindk@world-online.no>)
Task: 0x5a
Difficulty: Hard
Urgency: Wishlist
Description: Share stream information between vlc and vls
vls should send misc TS packets to let us know what the stream PID
contain, such as the language, or the subtitle palette.
Status: Done (collective work)
Task: 0x59
Difficulty: Hard
Urgency: Important
Description: Cope with vls/vlc clock jitter
The internal clocks of the server and the client are not assured to be
in perfect synchronization, which may be annoying when playing a movie.
Reduce this jitter by using a well-chosen filter.
Status: Done 1 May 2001 (henri)
Task: 0x58
Difficulty: Medium
Urgency: Critical
Description: Language and subtitles selection in network input
The vls will probably have to be modified as well.
Status: Done (henri)
Task: 0x57
Difficulty: Guru
Urgency: Normal
Description: Full DVD navigation
Once the core DVD navigation features are ready (see item 0x52), port the
interface and video output modules so that they can handle it.
Status: In the works (stef)
Task: 0x56
Difficulty: Hard
Urgency: Normal
Description: XVideo video output
XVideo is reported to work a bit better than the SDL wrapper on some
configurations. Modify the X11 plugin so that it supports XVideo.
Status: Done 1 Apr 2001 (shane)
Task: 0x55
Difficulty: Hard
Urgency: Critical
Description: Video output IV
The new video output should support subtitles both in software and hardware
YUV (see item 0x4d). One should also care about XVideo buffers, there is a
way to directly decode into them, which would improve performances.
Status: Done 9 Dec 2001 (sam)
Task: 0x54
Difficulty: Hard
Urgency: Wishlist
Description: Hardware AC3 decoding
Some soundcards directly grok Dolby AC3. This would spare a lot of CPU time.
Status: Done (stef)
Task: 0x53
Difficulty: Medium
Urgency: Critical
Description: Fix AC3 decoder
The AC3 decoder still has a few quality issues; fix them, and try to add
MMX support to it as well.
Status: Done 15 June 2001 (reno)
Task: 0x52
Difficulty: Guru
Urgency: Normal
Description: DVD navigation core features
We need an interpreter for the DVD virtual machine to make it easier to
browse DVDs later.
Status: In the works (stef)
Task: 0x51
Difficulty: Easy
Urgency: Normal
Description: Better subtitle color handling
The subtitle palette is pretty ugly for the moment, since we don't parse
the color information. Find it in the IFO file and pass the information to
the video output.
Status: Done 15 Mar 2002 (sam)
Task: 0x50
Difficulty: Hard
Urgency: Critical
Description: Multi-angle multi-language support
Some DVDs have several languages encoded in the same video stream, we
need to properly parse them.
Status: Done 22 Apr 2001 (stef)
Task: 0x4f
Difficulty: Hard
Urgency: Critical
Description: Fix all known DVD playback issues
A few DVDs are still reported not to work at all. Try to find what is
causing this, have a more robust DVD input, and list all discs reported
to work flawlessly to prevent bug regression.
Status: Done (collective work)
Task: 0x4e
Difficulty: Hard
Urgency: Important
Description: Write stream zones support
For random access we need to know where stream descriptors are valid
and reside (essentially DVD plugin).
Status: Done (stef)
Task: 0x4d
Difficulty: Hard
Urgency: Normal
Description: Write subtitles and stream information in YUV coordinates
... so that they can be displayed even in "overlay" mode.
Status: Done (sam)
Task: 0x4c
Difficulty: Medium
Urgency: Normal
Description: Update documentation
The input structures have undergone a major restructuration with
input-II. It might be a good idea to reflect thoses changes in the
documentation.
Status: Done 16 Jul 2001 (Meuuh)
Task: 0x4b
Difficulty: Guru
Urgency: Normal
Description: Write AVI input plugin
.avi files can use MPEG codec, if this is the case it shouldn't be
hard to read those files -> Meuuh
Status: Done 23 Apr 2002 (fenrir)
Task: 0x4a
Difficulty: Medium
Urgency: Normal
Description: Write ES input plugin
We need to be able to read .mpg video streams, or .mp* audio streams.
Status: Done 27 Jun 2001 (Meuuh)
Task: 0x49
Difficulty: Easy
Urgency: Important
Description: Write a new buffer allocator
Avoid malloc()s by reusing the recently released packets. More
information -> Meuuh
Status: Done 16 Apr 2001 (asmax)
Task: 0x48
Difficulty: Hard
Urgency: Critical
Description: Fix audio synchro
With some audio plugins, the audio stream is late because of buffer
sizes. See what's wrong and fix it.
Status: Done 12 July 2001 (reno)
Task: 0x47
Difficulty: Hard
Urgency: Normal
Description: Make decoders dynamically loadable
Status: Done 05 October 2001 (henri)
Task: 0x46
Difficulty: Hard
Urgency: Normal
Description: Make input plugins dynamically loadable
With a probe() function, and stuff...
Status: Done 7 Feb 2001 (sam)
Task: 0x45
Difficulty: Guru
Urgency: Normal
Description: Write DVD plugin
We need a DVD plugin which read the device directly, calls DeCSS
(optional) and parse .ifo files.
Status: Done 8 Feb 2001 (stef)
Task: 0x44
Difficulty: Guru
Urgency: Important
Description: Write input_ext-intf.c
This file will provide functions which allow the interface to change
the pace of reading and change the position in the file.
Status: Done 8 Feb 2001 (Meuuh)
Task: 0x43
Difficulty: Medium
Urgency: Important
Description: Write TS support
The parser has already been back-ported, but it still lacks the
PSI parser, and currently the functions to read from the network
are yet to be written.
Status: Done 7 Mar 2001 (henri)
Task: 0x42
Difficulty: Medium
Urgency: Important
Description: Write input_netlist.c
We need an interface to create fixed-size packets (for instance
188 bytes or 2 kB) and avoid using the system malloc().
Status: Done 23 Jan 2001 (henri)
Task: 0x41
Difficulty: Easy
Urgency: Important
Description: Write input_programs.c
We need a centralized manner of creating new programs, es, and
spawning new decoders.
Status: Done 20 Dec 2000 (Meuuh)
Task: 0x40
Difficulty: Medium
Urgency: Important
Description: Fix the PS plugin
The PS plugin should be able to recover from packet loss, to
read MPEG-1 .mpg files, and to pre-parse the stream (if possible)
to build the ES table. Check what's wrong and fix it. Now.
Status: Done 20 Dec 2000 (Meuuh)
Task: 0x3f
Difficulty: Easy
Urgency: Critical
Description: Enhance intf_*Msg
The intf_*Msg functions could be more clever : add "mymodule
warning/error:" and \n automatically. The new input already
uses such a behaviour, so we must hurry. It might be necessary
to modify all messages in all modules...
Status: Done 20 Dec 2000 (sam)
Task: 0x3e
Difficulty: Guru
Urgency: Critical
Description: Fix backwards moves
Sometimes the frames seem to go backwards for a short period of
time. This is due to the output methods and is known to happen
with the x11 and SDL plugins.
Status: Done 27 Nov 2000 (Meuuh)
Task: 0x3d
Difficulty: Easy
Urgency: Normal
Description: Have more statistics messages displayed
The vlc has structures to keep track of the interesting
events, but there is no way to print these structures. In stats
mode, we should print these structures regularly, or at quit
time (whichever is the more convenient).
Status: Done 27 Nov 2000 (Meuuh)
Task: 0x3c
Difficulty: Easy
Urgency: Important
Description: Separate optimizations from debug mode
We sometimes want to have the debug mode (which writes an
interesting log of debug messages) along with the compiler
optimizations (which allow decoding of more than 2 fps).
Status: Done 18 Nov 2000 (Meuuh)
Task: 0x3b
Difficulty: Easy
Urgency: Important
Description: Write intf_WarnMsg and intf_StatMsg
We have intf_ErrMsg to display fatal errors, but warnings are
drowned in an ocean of unreadable intf_DbgMsg. Same for
statistics messages.
Status: Done 23 Nov 2000 (Stef)
Task: 0x3a
Difficulty: Hard
Urgency: Important
Description: Support SDL Overlay
The SDL livrary has routines to use the video board to do the YUV
conversion, scaling and displaying. Using them will require a
partial rewrite of the video_output way of handling rendering
and displaying.
Status: Done 18 Dec 2000 (bozo and oct)
Task: 0x39
Difficulty: Medium
Urgency: Wishlist
Description: Rewrite the font display routines
The current font display routines aren't powerful enough. There
should be a way to display a big String at once, without needing
to compute the size of the string and its coordinates beforehand.
Status: Todo
Task: 0x38
Difficulty: Medium
Urgency: Important
Description: Make aout eat less CPU
When the vlc is launched without a stream, the audio_output thread
eats all memory, probably because there is no msleep() when no data
is available in the audio_output queue.
Status: Done (henri)
Task: 0x37
Difficulty: Guru
Urgency: Important
Description: Fix motion compensation bug
The motion compensation still has a small bug which can be well
noticed when there is a sudden color change, a few blocks remain
visible on the screen.
Status: Done 27 Aug 2000 (Meuuh)
Task: 0x36
Difficulty: Medium
Urgency: Normal
Description: Enhance the interface
. Finish the new keyboard input interface to support
interfaces that allow modifiers. This will allow the SDL to run
properly.
. Here are some details:
Allow any interface to have its own set of keys:
- allow the 'discovery' of the main interface of the binding
created by each interface:
what key ("control-C", what action (INTF...))
- extend the interface by a specific struct (meta+modifier+ascii)
- implement an interface specific getKey function.
Status: Todo
Task: 0x35
Difficulty: Medium
Urgency: Important
Description: Fix plugins namespace problem
When compiling a plugin, all symbols seem to be exported, while we
actually just need GetConfig and a few other things: the other
functions are accessed through function pointers.
Status: Done 10 Jan 2001 (sam)
Task: 0x34
Difficulty: Medium
Urgency: Important
Description: Fix plugin autoloading
At the moment, plugins to be detected are hardcoded in the code. We
need a better method to get all available plugins, by listing all the
files in selected directories.
Status: Done 7 Jan 2001 (sam)
Task: 0x33
Difficulty: Hard
Urgency: Important
Description: Real plugin API
We need some functions to register plugins, automatically detect which
ones are the most appropriate, as well as ways to express that plugin
A won't work unless plugin B is activated as well.
Status: Done 7 Jan 2001 (sam)
Task: 0x32
Difficulty: Medium
Urgency: Important
Description: Enable compiled-in plugins
Some plugins may have their place inside the main program, such as the
dummy plugin, or the beos plugin under BeOS. We should allow to link
them with the main app.
Status: Done 15 Apr 2001 (sam)
Task: 0x31
Difficulty: Easy
Urgency: Normal
Description: Optimize SPU rendering
There is an if() in the SPU display routine to double lines when needed,
whiwh is rather inefficient. It should be removed and put outside
the main loop.
Status: Done 26 Aug 2000 (henri)
Task: 0x30
Difficulty: Hard
Urgency: Important
Description: SPU error recovery
The SPU decoder does not behave very well when a packet is missed or when
it gets the stream at the middle of an SPU packet. Make it more error-
friendly.
Status: Done 26 Feb 2001 (sam)
Task: 0x2b
Difficulty: Hard
Urgency: Wishlist
Description: Shoot the TODO list on the web site
The TODO list on the web site hasn't been updated for months. We may
wonder then why the hell to we put a TODO list on the web site ? Maybe
we'd better shoot it in the head, that would make its suffering end.
Status: Done 5 Mar 2001 (sam)
Task: 0x2a
Difficulty: Medium
Urgency: Normal
Description: ALSA audio output support
ALSA is the Advanced Linux Sound Architecture and is believed to be
technically superior to the usual OSS support found in the Linux kernel.
Status: Done (henri)
Task: 0x29
Difficulty: Guru
Urgency: Wishlist
Description: Support for RTP
RTP is a transport protocol for realtime applications. MPEG1 and MPEG2
versions of RTP are described in RFCs 2038 and 2250. RFCs 1889 (RTP)
and 2508 (compressed RTP) can be interesting as well.
Status: Todo
Task: 0x28
Difficulty: Medium
Urgency: Wishlist
Description: Draw a font / support color fonts
The vlc currently uses an ugly font to display its data on the output
window, and we have a slow hack to make it outlined. Writing our own
font, or adding support for color fonts, would make us gain some time.
Status: Todo
Task: 0x27
Difficulty: Medium
Urgency: Important
Description: Layer 2 mono support
The vlc doesn't play layer 2 mono yet. We need it since a few of our
streams are in this audio format.
Status: Done 18 Dec 2000 (sam)
Task: 0x26
Difficulty: Hard
Urgency: Wishlist
Description: MP3 support
The vlc cannot play MPEG1/2 layer 3 yet. It might be nice to fix that.
Status: Done 10 May 2002 (fenrir)
Task: 0x25
Difficulty: Hard
Urgency: Normal
Description: Support for unencapsulated streams
Some streams are not encapsulated in PES/PS or TS packets, which the
vlc currently requires to properly decode a stream. Adding support for
this would require to rewrite the input code, and probably make it a
plugin.
Status: Done 1 Mar 2002 (Meuuh)
Task: 0x24
Difficulty: Guru
Urgency: Wishlist
Description: Ogg/Vorbis audio decoder support
The Ogg/Vorbis audio format is a free alternative to the patent-encumbered
MP3 format. The system packets are quite different than the MPEG ones, so
adding support for it would require a lot of code rewrite.
Status: In the works (Xavier Maillard)
Task: 0x23
Difficulty: Guru
Urgency: Normal
Description: Xv video output support
XFree 4.0 provides the Xv interface which can do hardware YUV on supported
hardware. Unfortunately, there doesn't seem to be much documentation
available.
Status: Done 1 Apr 2001 (shane)
Task: 0x22
Difficulty: Medium
Urgency: Normal
Description: SDL video output support
The Simple DirectMedia Layer library is a generic API that provides
YUV acceleration on some platforms. More information can be found
on http://www.devolution.com/~slouken/SDL/
Status: Done 21 Aug 2000 (octplane)
Task: 0x21
Difficulty: Medium
Urgency: Normal
Description: Implement pause
There is no real `pause' command yet. Pausing just stops
displaying and sound playback, but the streams continues to
be decoded. One will have to do a file implementation as
well as a network implementation.
Status: Done 8 Feb 2001 (Meuuh)
Task: 0x20
Difficulty: Hard
Urgency: Important
Description: Rewrite input for Program Stream files
Currently when we read a PS file, it is first translated to TS
because we first had only PS support. Now time has come to get
rid of this ugly kludge and integrate a proper PS input.
Status: Done 5 Dec 2000 (Meuuh) because of Input II
Task: 0x1f
Difficulty: Hard
Urgency: Normal
Description: DeCSS and DVD ioctls
The vlc needs the DVD ioctls support as well as the integration
of DeCSS to play DVDs properly. The person doing this should
probably not live in a country where DeCSS has been ruled illegal.
Status: Done 20 Jan 2001 (stef)
Task: 0x1e
Difficulty: Hard
Urgency: Wishlist
Description: ASCII-art output
For the ones who don't know how to waste their time, they can
try to do an ASCII-art output plugin.
Status: Done 19 Mar 2002 (Sigmund Augdal)
Task: 0x1d
Difficulty: Hard
Urgency: Normal
Description: LPCM decoder
The LPCM decoder is full of stubs, it only parses the stream
but does not decode it. Fix this.
Status: Done 12 Jun 2001 (henri)
Task: 0x1c
Difficulty: Guru
Urgency: Important
Description: Fix field pictures support
Some MPEG2 streams are interleaved, and the vlc does not support
this very well. Adding support for them requires an excellent
knowledge of the MPEG2 papers.
Status: Done 23 Aug 2000 (Meuuh)
Task: 0x1b
Difficulty: Hard
Urgency: Wishlist
Description: Modularize decoder
Make the decoder a plugin, so that two versions can coexist
without recompilation (MMX and non-MMX).
Status: Done 16 Jan 2001 (sam)
Task: 0x1a
Difficulty: Easy
Urgency: Normal
Description: Make interface more responsive
When in "waiting for stream" mode, the interface is refreshed
every 5 seconds. This is too long, and can be confusing for
the user. Make it refresh at least after a keyboard/mouse event.
Status: Done 28 Aug 2000 (oct)
Task: 0x19
Difficulty: Hard
Urgency: Normal
Description: Support MP1 and MP3
The vlc does not support all MPEG1 audio formats yet, nor
does it support MPEG1/2 layer 3.
Status: Done 18 Dec 2000 (sam) but see 0x25
Task: 0x18
Difficulty: Guru
Urgency: Wishlist
Description: Split interface/video_output
The interface and the vout modules are too dependant, which
makes it impossible to run the Glide output with the Gnome
interface for instance. This will require a major rewrite of
the interface, and a solid knowledge of how the vlc internals
work.
Status: Done 11 Feb 2001 (sam)
Task: 0x17
Difficulty: Hard
Urgency: Normal
Description: Add 24bpp YUV
There is no 24bpp support yet. Add it, either in MMX
or in C.
Status: Done 17 Mar 2002 (sam)
Task: 0x16
Difficulty: Medium
Urgency: Important
Description: Fix 8bpp YUV
The 8bpp YUV function is broken, there is some serious
alpha blending, and it scales pretty badly. Fix it.
Status: Done 14 Aug 2000 (sam)
Task: 0x15
Difficulty: Medium
Urgency: Critical
Description: Fix input_file exit
input_file does not exit cleanly when the file is finished,
which makes it impossible to quit the vlc. Fix it.
Status: Done 21 Aug 2000 (sam)
Task: 0x14
Difficulty: Guru
Urgency: Wishlist
Description: Debug MPEG1 video
The MPEG1 support has been done, but it still crashes.
Status: Done 23 Oct 2000 (Meuuh)
Task: 0x13
Difficulty: Hard
Urgency: Wishlist
Description: Support MPEG1 timecodes
The vlc can parse an MPEG1 system stream, but the parsed
PCR values do not seem to be correct. Check what's wrong.
Status: Done 5 Dec 2000 (Meuuh) because of Input II
Task: 0x12
Difficulty: Medium
Urgency: Important
Description: Fix 32bpp MMX YUV
The MMX 32bpp YUV function is buggy.
Status: Done 13 Aug 2000 (sam)
Task: 0x11
Difficulty: Hard
Urgency: Normal
Description: Optimize YUV scaling
The YUV scaling method does not seem very efficient. Perhaps
some CPU cycles can be gained by saving some buffers.
Status: Done (sam) because of vout 4
Task: 0x10
Difficulty: Easy
Urgency: Normal
Description: Draw a vlc icon
The vlc needs an icon. It should render well in 48x48 but
can be any size.
Status: Done 11 Apr 2001 (sam)
Task: 0x0f
Difficulty: Easy
Urgency: Normal
Description: Better black&white support
When in B&W mode, the chroma part of pictures is decoded,
but it would be more efficient not to decode at all when
the video decoder knows it does not need to.
Status: Done 25 Oct 2000 (reno)
Task: 0x0e
Difficulty: Easy
Urgency: Wishlist
Description: Rename channel names
Channels should start from 1 (not 0) like on a VCR or TV,
and Channel 0 should be renamed to "Playlist" or similar.
Status: Done
Task: 0x0d
Difficulty: Medium
Urgency: Important
Description: Framebuffer exit bug
When the vlc abnormally exits in framebuffer mode, it leaves
the console in an unusable state. This does not happen on
the Matrox framebuffer, but it does on the VESA one.
Status: Done 18 Feb 2001 (sam)
Task: 0x0c
Difficulty: Hard
Urgency: Critical
Description: Fix synchro
The synchronization algorithm sucks a bit. While it is
quite efficient on frameskipping on slow machines, it
is not smart enough on fast machines and does not detect
when it has enough time for a frame. Perhaps a better
handling of the dates might help.
Status: Done 13 Nov 2000 (Meuuh)
Task: 0x0b
Difficulty: Medium
Urgency: Important
Description: Allow to force synchro
Add a --force-synchro option to bypass the auto-adaptative
algorithm present in the vlc. Options should allow displaying
only I frames, only I and P, or all frames, or some more
fancy stuff such as half the Bs.
Status: Done 8 Aug 2000 (sam)
Task: 0x0a
Difficulty: Medium
Urgency: Important
Description: Do separate packages
The plugins can be compiled with specific libraries, such
as Gnome, GGI, Esound. Putting all of them in the same
package would require a lot of useless dependencies, thus
one should do separate packages: a core "vlc" package, and
"vlc-fb", "vlc-ggi", "vlc-esd" packages depending on the
core package.
Status: Done 15 Aug 2000 (sam)
Task: 0x09
Difficulty: Easy
Urgency: Normal
Description: Get rid of dumb vlc aliases
When compiling the vlc, some symlinks to the main app
are created, such as gvlc, ggivlc, etc. Actually this
might confuse the user, so they should be removed,
except perhaps gvlc and fbvlc which follow a usual
naming scheme.
Status: Done 8 Aug 2000 (sam)
Task: 0x08
Difficulty: Easy
Urgency: Important
Description: Get rid of floating instructions
Mixing floating instructions and MMX is seldom a good idea,
it might be interesting to remove all floating instructions
in a single thread. The audio decoders are of course not
concerned by this task.
Status: Done (sam)
Task: 0x07
Difficulty: Hard
Urgency: Critical
Description: Fix VDEC_SMP segfaults
When compiled to support SMP, the vlc segfaults. The synchro
code lacks locks, but there might be bugs elsewhere as well.
Status: Done 16 Nov 2000 (Meuuh)
Task: 0x06
Difficulty: Guru
Urgency: Important
Description: Optimize video parser
The video parser has some speed issues currently unexplained:
even though most functions are inlined, it keeps eating more
CPU than it should. This has to be investigated.
Status: Done 5 Dec 2000 (Meuuh) because of Input II
Task: 0x05
Difficulty: Easy
Urgency: Important
Description: Backport vlms input
The vlc uses the same file input code as the vlms (VideoLAN
Mini Server) which has been much improved. Someone should
port modifications done to the vlms back to the vlc.
Status: Done 5 Dec 2000 (Meuuh) because of Input II
Task: 0x04
Difficulty: Medium
Urgency: Normal
Description: Get rid of vlc.channels
The file vlc.channels should be removed and information
found in it put either into ~/.vlcrc or in another rc
file. Note that this file can be modified by the vlc.
Status: Done 9 Dec 2001 (sam)
Task: 0x03
Difficulty: Hard
Urgency: Important
Description: Playlist API
Currently only files given in the command line are played,
one after the other. We need a smarter way to handle this,
through AddFile(), MoveFile(), etc. functions. input_file
has to be modified to support this as well.
Status: Done 8 Feb 2001 (sam)
Task: 0x02
Difficulty: Medium
Urgency: Normal
Description: Better Gnome interface
The Gnome interface has many stubs and is actually rather
unfunctional. Someone should make the buttons work when
the appropriate hooks exist.
Status: Done 12 Feb 2001 (sam)
Task: 0x01
Difficulty: Hard
Urgency: Wishlist
Description: MGA YUV
The Matrox acceleration for the vlc does not work yet,
though there are initialization routines in the code.
Status: Done 15 Jan 2002 (sam)
Task: 0x00
Difficulty: Medium
Urgency: Wishlist
Description: Splash screen
The vlc needs a splash screen with a vlc logo, instead of
the "waiting for stream" message.
Status: Todo