* Code cleanup: removed a few tabulations.
[vlc.git] / TODO
blob69657195ffd0474a0fd504a61ba981d1bd8df378
2 #   vlc tasks
3 #   ---------
6 # Difficulty values: Easy, Medium, Hard, Guru
8 # Urgency values: Wishlist, Normal, Important, Critical
10 Task: 0x4e
11 Difficulty: Hard
12 Urgency: High
13 Description: Write stream zones support
14  For random access we need to know where stream descriptors are valid
15  and reside (essentially DVD plugin). -> Meuuh
16 Status: Todo
18 Task: 0x4d
19 Difficulty: Hard
20 Urgency: Normal
21 Description: Write subtitles and stream information in YUV coordinates
22  ... so that they can be displayed even in "overlay" mode.
23 Status: Todo
25 Task: 0x4c
26 Difficulty: Medium
27 Urgency: Normal
28 Description: Update documentation
29  The input structures have undergone a major restructuration with
30  input-II. It might be a good idea to reflect thoses changes in the
31  documentation.
32 Status: Todo
34 Task: 0x4b
35 Difficulty: Guru
36 Urgency: Low
37 Description: Write AVI input plugin
38  .avi files can use MPEG codec, if this is the case it shouldn't be
39  hard to read those files -> Meuuh
40 Status: Todo
42 Task: 0x4a
43 Difficulty: Medium
44 Urgency: Normal
45 Description: Write ES input plugin
46  We need to be able to read .mpg video streams, or .mp* audio streams.
47  More information -> Meuuh
48 Status: Todo
50 Task: 0x49
51 Difficulty: Easy
52 Urgency: Important
53 Description: Write a new buffer allocator
54  Avoid malloc()s by reusing the recently released packets. More
55  information -> Meuuh
56 Status: Todo
58 Task: 0x48
59 Difficulty: Medium
60 Urgency: Critical
61 Description: Fix audio synchro
62  With some audio plugins, the audio stream is late because of buffer
63  sizes. See what's wrong and fix it.
64 Status: Todo
66 Task: 0x47
67 Difficulty: Hard
68 Urgency: Normal
69 Description: Make decoders dynamically loadable
70 Status: Todo
72 Task: 0x46
73 Difficulty: Hard
74 Urgency: Normal
75 Description: Make input plugins dynamically loadable
76  With a probe() function, and stuff...
77 Status: Done 7 Feb 2001 (sam)
79 Task: 0x45
80 Difficulty: Guru
81 Urgency: Normal
82 Description: Write DVD plugin
83  We need a DVD plugin which read the device directly, calls DeCSS
84  (optional) and parse .ifo files.
85 Status: Done 8 Feb 2001 (stef)
87 Task: 0x44
88 Difficulty: Guru
89 Urgency: Important
90 Description: Write input_ext-intf.c
91  This file will provide functions which allow the interface to change
92  the pace of reading and change the position in the file.
93 Status: Done 8 Feb 2001 (Meuuh)
95 Task: 0x43
96 Difficulty: Medium
97 Urgency: Important
98 Description: Write TS support
99  The parser has already been back-ported, but it still lacks the
100  PSI parser, and currently the functions to read from the network
101  are yet to be written.
102 Status: Todo
104 Task: 0x42
105 Difficulty: Medium
106 Urgency: Important
107 Description: Write input_netlist.c
108  We need an interface to create fixed-size packets (for instance
109  188 bytes or 2 kB) and avoid using the system malloc().
110 Status: Done 23 Jan 2001 (henri)
112 Task: 0x41
113 Difficulty: Easy
114 Urgency: Important
115 Description: Write input_programs.c
116  We need a centralized manner of creating new programs, es, and
117  spawning new decoders.
118 Status: Done 20 Dec 2000 (Meuuh)
120 Task: 0x40
121 Difficulty: Medium
122 Urgency: Important
123 Description: Fix the PS plugin
124  The PS plugin should be able to recover from packet loss, to
125  read MPEG-1 .mpg files, and to pre-parse the stream (if possible)
126  to build the ES table. Check what's wrong and fix it. Now.
127 Status: Done 20 Dec 2000 (Meuuh)
129 Task: 0x3f
130 Difficulty: Easy
131 Urgency: Critical
132 Description: Enhance intf_*Msg
133  The intf_*Msg functions could be more clever : add "mymodule
134  warning/error:" and \n automatically. The new input already
135  uses such a behaviour, so we must hurry. It might be necessary
136  to modify all messages in all modules...
137 Status: Done 20 Dec 2000 (sam)
139 Task: 0x3e
140 Difficulty: Guru
141 Urgency: Critical
142 Description: Fix backwards moves
143  Sometimes the frames seem to go backwards for a short period of
144  time. This is due to the output methods and is known to happen
145  with the x11 and SDL plugins.
146 Status: Done 27 Nov 2000 (Meuuh)
148 Task: 0x3d
149 Difficulty: Easy
150 Urgency: Normal
151 Description: Have more statistics messages displayed
152  The vlc has structures to keep track of the interesting
153  events, but there is no way to print these structures. In stats
154  mode, we should print these structures regularly, or at quit
155  time (whichever is the more convenient).
156 Status: Done 27 Nov 2000 (Meuuh)
158 Task: 0x3c
159 Difficulty: Easy
160 Urgency: Important
161 Description: Separate optimizations from debug mode
162  We sometimes want to have the debug mode (which writes an
163  interesting log of debug messages) along with the compiler
164  optimizations (which allow decoding of more than 2 fps).
165 Status: Done 18 Nov 2000 (Meuuh)
167 Task: 0x3b
168 Difficulty: Easy
169 Urgency: Important
170 Description: Write intf_WarnMsg and intf_StatMsg
171  We have intf_ErrMsg to display fatal errors, but warnings are
172  drowned in an ocean of unreadable intf_DbgMsg. Same for
173  statistics messages.
174 Status: Done 23 Nov 2000 (Stef)
176 Task: 0x3a
177 Difficulty: Hard
178 Urgency: Important
179 Description: Support SDL Overlay
180  The SDL livrary has routines to use the video board to do the YUV
181  conversion, scaling and displaying. Using them will require a
182  partial rewrite of the video_output way of handling rendering
183  and displaying.
184 Status: Done 18 Dec 2000 (bozo and oct)
186 Task: 0x39
187 Difficulty: Medium
188 Urgency: Wishlist
189 Description: Rewrite the font display routines
190  The current font display routines aren't powerful enough. There
191  should be a way to display a big String at once, without needing
192  to compute the size of the string and its coordinates beforehand.
193 Status: Todo
195 Task: 0x38
196 Difficulty: Medium
197 Urgency: Important
198 Description: Make aout eat less CPU
199  When the vlc is launched without a stream, the audio_output thread
200  eats all memory, probably because there is no msleep() when no data
201  is available in the audio_output queue.
202 Status: Done one doesn't know when by some unknown stranger
204 Task: 0x37
205 Difficulty: Guru
206 Urgency: Important
207 Description: Fix motion compensation bug
208  The motion compensation still has a small bug which can be well
209  noticed when there is a sudden color change, a few blocks remain
210  visible on the screen.
211 Status: Done 27 Aug 2000 (Meuuh)
213 Task: 0x36
214 Difficulty: Medium
215 Urgency: Normal
216 Description: Enhance the interface
217  . Finish the new keyboard input interface to support 
218    interfaces that allow modifiers. This will allow the SDL to run 
219    properly.
220  . Here are some details:
221    Allow any interface to have its own set of keys:
222     - allow the 'discovery' of the main interface of the binding 
223       created by each interface:
224        what key ("control-C", what action (INTF...))
225     - extend the interface by a specific struct (meta+modifier+ascii)
226     - implement an interface specific getKey function.
227 Status: Todo
229 Task: 0x35
230 Difficulty: Medium
231 Urgency: Important
232 Description: Fix plugins namespace problem
233  When compiling a plugin, all symbols seem to be exported, while we
234  actually just need GetConfig and a few other things: the other
235  functions are accessed through function pointers.
236 Status: Done 10 Jan 2001 (sam)
238 Task: 0x34
239 Difficulty: Medium
240 Urgency: Important
241 Description: Fix plugin autoloading
242  At the moment, plugins to be detected are hardcoded in the code. We
243  need a better method to get all available plugins, by listing all the
244  files in selected directories.
245 Status: Done 7 Jan 2001 (sam)
247 Task: 0x33
248 Difficulty: Hard
249 Urgency: Important
250 Description: Real plugin API
251  We need some functions to register plugins, automatically detect which
252  ones are the most appropriate, as well as ways to express that plugin
253  A won't work unless plugin B is activated as well.
254 Status: Done 7 Jan 2001 (sam)
256 Task: 0x32
257 Difficulty: Medium
258 Urgency: Important
259 Description: Enable compiled-in plugins
260  Some plugins may have their place inside the main program, such as the
261  dummy plugin, or the beos plugin under BeOS. We should allow to link
262  them with the main app.
263 Status: Todo
265 Task: 0x31
266 Difficulty: Easy
267 Urgency: Normal
268 Description: Optimize SPU rendering
269  There is an if() in the SPU display routine to double lines when needed,
270  whiwh is rather inefficient. It should be removed and put outside
271  the main loop.
272 Status: Done 26 Aug 2000 (henri)
274 Task: 0x30
275 Difficulty: Hard
276 Urgency: Important
277 Description: SPU error recovery
278  The SPU decoder does not behave very well when a packet is missed or when
279  it gets the stream at the middle of an SPU packet. Make it more error-
280  friendly.
281 Status: Done 26 Feb 2001 (sam)
283 Task: 0x2b
284 Difficulty: Hard
285 Urgency: Wishlist
286 Description: Shoot the TODO list on the web site
287  The TODO list on the web site hasn't been updated for months. We may
288  wonder then why the hell to we put a TODO list on the web site ? Maybe
289  we'd better shoot it in the head, that would make its suffering end.
290 Status: Done 5 Mar 2001 (sam)
292 Task: 0x2a
293 Difficulty: Medium
294 Urgency: Normal
295 Description: ALSA audio output support
296  ALSA is the Advanced Linux Sound Architecture and is believed to be
297  technically superior to the usual OSS support found in the Linux kernel.
298 Status: Done ( henri )
300 Task: 0x29
301 Difficulty: Guru
302 Urgency: Wishlist
303 Description: Support for RTP
304  RTP is a transport protocol for realtime applications. MPEG1 and MPEG2
305  versions of RTP are described in RFCs 2038 and 2250. RFCs 1889 (RTP)
306  and 2508 (compressed RTP) can be interesting as well.
307 Status: Todo
309 Task: 0x28
310 Difficulty: Medium
311 Urgency: Wishlist
312 Description: Draw a font / support color fonts
313  The vlc currently uses an ugly font to display its data on the output
314  window, and we have a slow hack to make it outlined. Writing our own
315  font, or adding support for color fonts, would make us gain some time.
316 Status: Todo
318 Task: 0x27
319 Difficulty: Medium
320 Urgency: Important
321 Description: Layer 2 mono support
322  The vlc doesn't play layer 2 mono yet. We need it since a few of our
323  streams are in this audio format.
324 Status: Done 18 Dec 2000 (sam)
326 Task: 0x26
327 Difficulty: Hard
328 Urgency: Wishlist
329 Description: MP3 support
330  The vlc cannot play MPEG1/2 layer 3 yet. It might be nice to fix that.
331 Status: Todo
333 Task: 0x25
334 Difficulty: Hard
335 Urgency: Normal
336 Description: Support for unencapsulated streams
337  Some streams are not encapsulated in PES/PS or TS packets, which the
338  vlc currently requires to properly decode a stream. Adding support for
339  this would require to rewrite the input code, and probably make it a
340  plugin.
341 Status: Todo
343 Task: 0x24
344 Difficulty: Guru
345 Urgency: Wishlist
346 Description: Ogg/Vorbis audio decoder support
347  The Ogg/Vorbis audio format is a free alternative to the patent-encumbered
348  MP3 format. The system packets are quite different than the MPEG ones, so
349  adding support for it would require a lot of code rewrite.
350 Status: Todo
352 Task: 0x23
353 Difficulty: Guru
354 Urgency: Normal
355 Description: Xv video output support
356  XFree 4.0 provides the Xv interface which can do hardware YUV on supported
357  hardware. Unfortunately, there doesn't seem to be much documentation
358  available.
359 Status: Todo
361 Task: 0x22
362 Difficulty: Medium
363 Urgency: Normal
364 Description: SDL video output support
365  The Simple DirectMedia Layer library is a generic API that provides
366  YUV acceleration on some platforms. More information can be found
367  on http://www.devolution.com/~slouken/SDL/
368 Status: Done 21 Aug 2000 (octplane)
370 Task: 0x21
371 Difficulty: Medium
372 Urgency: Normal
373 Description: Implement pause
374  There is no real `pause' command yet. Pausing just stops
375  displaying and sound playback, but the streams continues to
376  be decoded. One will have to do a file implementation as
377  well as a network implementation.
378 Status: Done 8 Feb 2001 (Meuuh)
380 Task: 0x20
381 Difficulty: Hard
382 Urgency: Important
383 Description: Rewrite input for Program Stream files
384  Currently when we read a PS file, it is first translated to TS
385  because we first had only PS support. Now time has come to get
386  rid of this ugly kludge and integrate a proper PS input.
387 Status: Done because of Input II on 5 Dec 2000 (Meuuh)
389 Task: 0x1f
390 Difficulty: Hard
391 Urgency: Normal
392 Description: DeCSS and DVD ioctls
393  The vlc needs the DVD ioctls support as well as the integration
394  of DeCSS to play DVDs properly. The person doing this should
395  probably not live in a country where DeCSS has been ruled illegal.
396 Status: Done 20 Jan 2001 (stef)
398 Task: 0x1e
399 Difficulty: Hard
400 Urgency: Wishlist
401 Description: ASCII-art output
402  For the ones who don't know how to waste their time, they can
403  try to do an ASCII-art output plugin.
404 Status: Todo
406 Task: 0x1d
407 Difficulty: Hard
408 Urgency: Normal
409 Description: LPCM decoder
410  The LPCM decoder is full of stubs, it only parses the stream
411  but does not decode it. Fix this.
412 Status: Todo
414 Task: 0x1c
415 Difficulty: Guru
416 Urgency: Important
417 Description: Fix field pictures support
418  Some MPEG2 streams are interleaved, and the vlc does not support
419  this very well. Adding support for them requires an excellent
420  knowledge of the MPEG2 papers.
421 Status: Done 23 Aug 2000 (Meuuh)
423 Task: 0x1b
424 Difficulty: Hard
425 Urgency: Wishlist
426 Description: Modularize decoder
427  Make the decoder a plugin, so that two versions can coexist
428  without recompilation (MMX and non-MMX).
429 Status: Done 16 Jan 2001 (sam)
431 Task: 0x1a
432 Difficulty: Easy
433 Urgency: Normal
434 Description: Make interface more responsive
435  When in "waiting for stream" mode, the interface is refreshed
436  every 5 seconds. This is too long, and can be confusing for
437  the user. Make it refresh at least after a keyboard/mouse event.
438 Status: Done 28 Aug 2000 (oct)
440 Task: 0x19
441 Difficulty: Hard
442 Urgency: Normal
443 Description: Support MP1 and MP3
444  The vlc does not support all MPEG1 audio formats yet, nor
445  does it support MPEG1/2 layer 3.
446 Status: Done 18 Dec 2000 (sam) but see 0x25
448 Task: 0x18
449 Difficulty: Guru
450 Urgency: Wishlist
451 Description: Split interface/video_output
452  The interface and the vout modules are too dependant, which
453  makes it impossible to run the Glide output with the Gnome
454  interface for instance. This will require a major rewrite of
455  the interface, and a solid knowledge of how the vlc internals
456  work.
457 Status: Done 11 Feb 2001 (sam)
459 Task: 0x17
460 Difficulty: Hard
461 Urgency: Normal
462 Description: Add 24bpp YUV
463  There is no 24bpp support yet. Add it, either in MMX
464  or in C.
465 Status: Todo
467 Task: 0x16
468 Difficulty: Medium
469 Urgency: Important
470 Description: Fix 8bpp YUV
471  The 8bpp YUV function is broken, there is some serious
472  alpha blending, and it scales pretty badly. Fix it.
473 Status: Done 14 Aug 2000 (sam)
475 Task: 0x15
476 Difficulty: Medium
477 Urgency: Critical
478 Description: Fix input_file exit
479  input_file does not exit cleanly when the file is finished,
480  which makes it impossible to quit the vlc. Fix it.
481 Status: Done 21 Aug 2000 (sam)
483 Task: 0x14
484 Difficulty: Guru
485 Urgency: Wishlist
486 Description: Debug MPEG1 video
487  The MPEG1 support has been done, but it still crashes.
488 Status: Done 23 Oct 2000 (Meuuh)
490 Task: 0x13
491 Difficulty: Hard
492 Urgency: Wishlist
493 Description: Support MPEG1 timecodes
494  The vlc can parse an MPEG1 system stream, but the parsed
495  PCR values do not seem to be correct. Check what's wrong.
496 Status: Done because of Input II on 5 Dec 2000 (Meuuh)
498 Task: 0x12
499 Difficulty: Medium
500 Urgency: Important
501 Description: Fix 32bpp MMX YUV
502  The MMX 32bpp YUV function is buggy.
503 Status: Done 13 Aug 2000 (sam)
505 Task: 0x11
506 Difficulty: Hard
507 Urgency: Normal
508 Description: Optimize YUV scaling
509  The YUV scaling method does not seem very efficient. Perhaps
510  some CPU cycles can be gained by saving some buffers.
511 Status: Todo
513 Task: 0x10
514 Difficulty: Easy
515 Urgency: Normal
516 Description: Draw a vlc icon
517  The vlc needs an icon. It should render well in 48x48 but
518  can be any size.
519 Status: Todo
521 Task: 0x0f
522 Difficulty: Easy
523 Urgency: Normal
524 Description: Better black&white support
525  When in B&W mode, the chroma part of pictures is decoded,
526  but it would be more efficient not to decode at all when
527  the video decoder knows it does not need to.
528 Status: Done 25 Oct 2000 (reno)
530 Task: 0x0e
531 Difficulty: Easy
532 Urgency: Wishlist
533 Description: Rename channel names
534  Channels should start from 1 (not 0) like on a VCR or TV,
535  and Channel 0 should be renamed to "Playlist" or similar.
536 Status: Todo
538 Task: 0x0d
539 Difficulty: Medium
540 Urgency: Important
541 Description: Framebuffer exit bug
542  When the vlc abnormally exits in framebuffer mode, it leaves
543  the console in an unusable state. This does not happen on
544  the Matrox framebuffer, but it does on the VESA one.
545 Status: Done 18 Feb 2001 (sam)
547 Task: 0x0c
548 Difficulty: Hard
549 Urgency: Critical
550 Description: Fix synchro
551  The synchronization algorithm sucks a bit. While it is
552  quite efficient on frameskipping on slow machines, it
553  is not smart enough on fast machines and does not detect
554  when it has enough time for a frame. Perhaps a better
555  handling of the dates might help.
556 Status: Done 13 Nov 2000 (Meuuh)
558 Task: 0x0b
559 Difficulty: Medium
560 Urgency: Important
561 Description: Allow to force synchro
562  Add a --force-synchro option to bypass the auto-adaptative
563  algorithm present in the vlc. Options should allow displaying
564  only I frames, only I and P, or all frames, or some more
565  fancy stuff such as half the Bs.
566 Status: Done 8 Aug 2000 (sam)
568 Task: 0x0a
569 Difficulty: Medium
570 Urgency: Important
571 Description: Do separate packages
572  The plugins can be compiled with specific libraries, such
573  as Gnome, GGI, Esound. Putting all of them in the same
574  package would require a lot of useless dependencies, thus
575  one should do separate packages: a core "vlc" package, and
576  "vlc-fb", "vlc-ggi", "vlc-esd" packages depending on the
577  core package.
578 Status: Done 15 Aug 2000 (sam)
580 Task: 0x09
581 Difficulty: Easy
582 Urgency: Normal
583 Description: Get rid of dumb vlc aliases
584  When compiling the vlc, some symlinks to the main app
585  are created, such as gvlc, ggivlc, etc. Actually this
586  might confuse the user, so they should be removed,
587  except perhaps gvlc and fbvlc which follow a usual
588  naming scheme.
589 Status: Done 8 Aug 2000 (sam)
591 Task: 0x08
592 Difficulty: Easy
593 Urgency: Important
594 Description: Get rid of floating instructions
595  Mixing floating instructions and MMX is seldom a good idea,
596  it might be interesting to remove all floating instructions
597  in a single thread. The audio decoders are of course not
598  concerned by this task.
599 Status: Done (sam)
601 Task: 0x07
602 Difficulty: Hard
603 Urgency: Critical
604 Description: Fix VDEC_SMP segfaults
605  When compiled to support SMP, the vlc segfaults. The synchro
606  code lacks locks, but there might be bugs elsewhere as well.
607 Status: Done 16 Nov 2000 (Meuuh)
609 Task: 0x06
610 Difficulty: Guru
611 Urgency: Important
612 Description: Optimize video parser
613  The video parser has some speed issues currently unexplained:
614  even though most functions are inlined, it keeps eating more
615  CPU than it should. This has to be investigated.
616 Status: Done because of Input II on 5 Dec 2000 (Meuuh)
618 Task: 0x05
619 Difficulty: Easy
620 Urgency: Important
621 Description: Backport vlms input
622  The vlc uses the same file input code as the vlms (VideoLAN
623  Mini Server) which has been much improved. Someone should
624  port modifications done to the vlms back to the vlc.
625 Status: Done because of Input II on 5 Dec 2000 (Meuuh)
627 Task: 0x04
628 Difficulty: Medium
629 Urgency: Normal
630 Description: Get rid of vlc.channels
631  The file vlc.channels should be removed and information
632  found in it put either into ~/.vlcrc or in another rc
633  file. Note that this file can be modified by the vlc.
634 Status: Todo
636 Task: 0x03
637 Difficulty: Hard
638 Urgency: Important
639 Description: Playlist API
640  Currently only files given in the command line are played,
641  one after the other. We need a smarter way to handle this,
642  through AddFile(), MoveFile(), etc. functions. input_file
643  has to be modified to support this as well.
644 Status: Done 8 Feb 2001 (sam)
646 Task: 0x02
647 Difficulty: Medium
648 Urgency: Normal
649 Description: Better Gnome interface
650  The Gnome interface has many stubs and is actually rather
651  unfunctional. Someone should make the buttons work when
652  the appropriate hooks exist.
653 Status: Done 12 Feb 2001 (sam)
655 Task: 0x01
656 Difficulty: Hard
657 Urgency: Wishlist
658 Description: MGA YUV
659  The Matrox acceleration for the vlc does not work yet,
660  though there are initialization routines in the code.
661 Status: Todo
663 Task: 0x00
664 Difficulty: Medium
665 Urgency: Wishlist
666 Description: Splash screen
667  The vlc needs a splash screen with a vlc logo, instead of
668  the "waiting for stream" message.
669 Status: Todo