# # 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 ) 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: Todo 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: Todo 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: Todo 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: Todo 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