]> git.sesse.net Git - vlc/blob - TODO
* Fixed backwards moves ;
[vlc] / TODO
1 #
2 #   vlc tasks
3 #   ---------
4 #
5 #
6 # Difficulty values: Easy, Medium, Hard, Guru
7 #
8 # Urgency values: Wishlist, Normal, Important, Critical
9
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
17
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
24
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
33
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
41
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
49
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
57
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
65
66 Task: 0x47
67 Difficulty: Hard
68 Urgency: Normal
69 Description: Make decoders dynamically loadable
70 Status: Todo
71
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: Todo
78
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: Todo
86
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: Todo
94
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
103
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)
111
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)
119
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)
128
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)
138
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)
147
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)
157
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)
166
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)
175
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: Todo
185
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
194
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: Todo
203
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)
212
213 Task: 0x36
214 Difficulty: Medium
215 Urgency: Normal
216  Description: 
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
228
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: Todo
237
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: Todo
246
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: Todo
255
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
264
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)
273
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: Todo
282
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: Todo
291
292 Task: 0x2a
293 Difficulty: Guru
294 Urgency: Critical
295 Description: Buy a new brain for Sam
296  Sam likes to show that he is a good developer, and for a good developer
297  hexadecimal notation really rules, though nobody really needs it. In this
298  TODO list, Sam has forgotten that 0x29 + 1 != 0x30, but 0x2a ! So, please
299  do something, and send your donations to sam@via.ecp.fr. Thanks for him.
300 Status: Todo
301
302 Task: 0x29
303 Difficulty: Medium
304 Urgency: Normal
305 Description: ALSA audio output support
306  ALSA is the Advanced Linux Sound Architecture and is believed to be
307  technically superior to the usual OSS support found in the Linux kernel.
308 Status: Done ( henri )
309
310 Task: 0x28
311 Difficulty: Guru
312 Urgency: Wishlist
313 Description: Support for RTP
314  RTP is a transport protocol for realtime applications. MPEG1 and MPEG2
315  versions of RTP are described in RFCs 2038 and 2250. RFCs 1889 (RTP)
316  and 2508 (compressed RTP) can be interesting as well.
317 Status: Todo
318
319 Task: 0x27
320 Difficulty: Medium
321 Urgency: Wishlist
322 Description: Draw a font / support color fonts
323  The vlc currently uses an ugly font to display its data on the output
324  window, and we have a slow hack to make it outlined. Writing our own
325  font, or adding support for color fonts, would make us gain some time.
326 Status: Todo
327
328 Task: 0x26
329 Difficulty: Medium
330 Urgency: Important
331 Description: Layer 2 mono support
332  The vlc doesn't play layer 2 mono yet. We need it since a few of our
333  streams are in this audio format.
334 Status: Todo
335
336 Task: 0x25
337 Difficulty: Hard
338 Urgency: Wishlist
339 Description: MP3 support
340  The vlc cannot play MPEG1/2 layer 3 yet. It might be nice to fix that.
341 Status: Todo
342
343 Task: 0x24
344 Difficulty: Hard
345 Urgency: Normal
346 Description: Support for unencapsulated streams
347  Some streams are not encapsulated in PES/PS or TS packets, which the
348  vlc currently requires to properly decode a stream. Adding support for
349  this would require to rewrite the input code, and probably make it a
350  plugin.
351 Status: Todo
352
353 Task: 0x24
354 Difficulty: Guru
355 Urgency: Wishlist
356 Description: Ogg/Vorbis audio decoder support
357  The Ogg/Vorbis audio format is a free alternative to the patent-encumbered
358  MP3 format. The system packets are quite different than the MPEG ones, so
359  adding support for it would require a lot of code rewrite.
360 Status: Todo
361
362 Task: 0x23
363 Difficulty: Guru
364 Urgency: Normal
365 Description: Xv video output support
366  XFree 4.0 provides the Xv interface which can do hardware YUV on supported
367  hardware. Unfortunately, there doesn't seem to be much documentation
368  available.
369 Status: Todo
370
371 Task: 0x22
372 Difficulty: Medium
373 Urgency: Normal
374 Description: SDL video output support
375  The Simple DirectMedia Layer library is a generic API that provides
376  YUV acceleration on some platforms. More information can be found
377  on http://www.devolution.com/~slouken/SDL/
378 Status: Done 21 Aug 2000 (octplane)
379
380 Task: 0x21
381 Difficulty: Medium
382 Urgency: Normal
383 Description: Implement pause
384  There is no real `pause' command yet. Pausing just stops
385  displaying and sound playback, but the streams continues to
386  be decoded. One will have to do a file implementation as
387  well as a network implementation.
388 Status: Todo
389
390 Task: 0x20
391 Difficulty: Hard
392 Urgency: Important
393 Description: Rewrite input for Program Stream files
394  Currently when we read a PS file, it is first translated to TS
395  because we first had only PS support. Now time has come to get
396  rid of this ugly kludge and integrate a proper PS input.
397 Status: Todo
398
399 Task: 0x1f
400 Difficulty: Hard
401 Urgency: Normal
402 Description: DeCSS and DVD ioctls
403  The vlc needs the DVD ioctls support as well as the integration
404  of DeCSS to play DVDs properly. The person doing this should
405  probably not live in a country where DeCSS has been ruled illegal.
406 Status: Todo
407
408 Task: 0x1e
409 Difficulty: Hard
410 Urgency: Wishlist
411 Description: ASCII-art output
412  For the ones who don't know how to waste their time, they can
413  try to do an ASCII-art output plugin.
414 Status: Todo
415
416 Task: 0x1d
417 Difficulty: Hard
418 Urgency: Normal
419 Description: LPCM decoder
420  The LPCM decoder is full of stubs, it only parses the stream
421  but does not decode it. Fix this.
422 Status: Todo
423
424 Task: 0x1c
425 Difficulty: Guru
426 Urgency: Important
427 Description: Fix field pictures support
428  Some MPEG2 streams are interleaved, and the vlc does not support
429  this very well. Adding support for them requires an excellent
430  knowledge of the MPEG2 papers.
431 Status: Done 23 Aug 2000 (Meuuh)
432
433 Task: 0x1b
434 Difficulty: Hard
435 Urgency: Wishlist
436 Description: Modularize decoder
437  Make the decoder a plugin, so that two versions can coexist
438  without recompilation (MMX and non-MMX).
439 Status: Todo
440
441 Task: 0x1a
442 Difficulty: Easy
443 Urgency: Normal
444 Description: Make interface more responsive
445 Status: Todo
446  When in "waiting for stream" mode, the interface is refreshed
447  every 5 seconds. This is too long, and can be confusing for
448  the user. Make it refresh at least after a keyboard/mouse event.
449 Status: Todo
450
451 Task: 0x19
452 Difficulty: Hard
453 Urgency: Normal
454 Description: Support MP1 and MP3
455  The vlc does not support all MPEG1 audio formats yet, nor
456  does it support MPEG1/2 layer 3.
457
458 Task: 0x18
459 Difficulty: Guru
460 Urgency: Wishlist
461 Description: Split interface/video_output
462  The interface and the vout modules are too dependant, which
463  makes it impossible to run the Glide output with the Gnome
464  interface for instance. This will require a major rewrite of
465  the interface, and a solid knowledge of how the vlc internals
466  work.
467 Status: Todo
468
469 Task: 0x17
470 Difficulty: Hard
471 Urgency: Normal
472 Description: Add 24bpp YUV
473  There is no 24bpp support yet. Add it, either in MMX
474  or in C.
475 Status: Todo
476
477 Task: 0x16
478 Difficulty: Medium
479 Urgency: Important
480 Description: Fix 8bpp YUV
481  The 8bpp YUV function is broken, there is some serious
482  alpha blending, and it scales pretty badly. Fix it.
483 Status: Done 14 Aug 2000 (sam)
484
485 Task: 0x15
486 Difficulty: Medium
487 Urgency: Critical
488 Description: Fix input_file exit
489  input_file does not exit cleanly when the file is finished,
490  which makes it impossible to quit the vlc. Fix it.
491 Status: Done 21 Aug 2000 (sam)
492
493 Task: 0x14
494 Difficulty: Guru
495 Urgency: Wishlist
496 Description: Debug MPEG1 video
497  The MPEG1 support has been done, but it still crashes.
498 Status: Done 23 Oct 2000 (Meuuh)
499
500 Task: 0x13
501 Difficulty: Hard
502 Urgency: Wishlist
503 Description: Support MPEG1 timecodes
504  The vlc can parse an MPEG1 system stream, but the parsed
505  PCR values do not seem to be correct. Check what's wrong.
506 Status: Todo
507
508 Task: 0x12
509 Difficulty: Medium
510 Urgency: Important
511 Description: Fix 32bpp MMX YUV
512  The MMX 32bpp YUV function is buggy.
513 Status: Done 13 Aug 2000 (sam)
514
515 Task: 0x11
516 Difficulty: Hard
517 Urgency: Normal
518 Description: Optimize YUV scaling
519  The YUV scaling method does not seem very efficient. Perhaps
520  some CPU cycles can be gained by saving some buffers.
521 Status: Todo
522
523 Task: 0x10
524 Difficulty: Easy
525 Urgency: Normal
526 Description: Draw a vlc icon
527  The vlc needs an icon. It should render well in 48x48 but
528  can be any size.
529 Status: Todo
530
531 Task: 0x0f
532 Difficulty: Easy
533 Urgency: Normal
534 Description: Better black&white support
535  When in B&W mode, the chroma part of pictures is decoded,
536  but it would be more efficient not to decode at all when
537  the video decoder knows it does not need to.
538 Status: Todo
539
540 Task: 0x0e
541 Difficulty: Easy
542 Urgency: Wishlist
543 Description: Rename channel names
544  Channels should start from 1 (not 0) like on a VCR or TV,
545  and Channel 0 should be renamed to "Playlist" or similar.
546 Status: Todo
547
548 Task: 0x0d
549 Difficulty: Medium
550 Urgency: Important
551 Description: Framebuffer exit bug
552  When the vlc abnormally exits in framebuffer mode, it leaves
553  the console in an unusable state. This does not happen on
554  the Matrox framebuffer, but it does on the VESA one.
555 Status: Todo
556
557 Task: 0x0c
558 Difficulty: Hard
559 Urgency: Critical
560 Description: Fix synchro
561  The synchronization algorithm sucks a bit. While it is
562  quite efficient on frameskipping on slow machines, it
563  is not smart enough on fast machines and does not detect
564  when it has enough time for a frame. Perhaps a better
565  handling of the dates might help.
566 Status: Done 13 Nov 2000 (Meuuh)
567
568 Task: 0x0b
569 Difficulty: Medium
570 Urgency: Important
571 Description: Allow to force synchro
572  Add a --force-synchro option to bypass the auto-adaptative
573  algorithm present in the vlc. Options should allow displaying
574  only I frames, only I and P, or all frames, or some more
575  fancy stuff such as half the Bs.
576 Status: Done 8 Aug 2000 (sam)
577
578 Task: 0x0a
579 Difficulty: Medium
580 Urgency: Important
581 Description: Do separate packages
582  The plugins can be compiled with specific libraries, such
583  as Gnome, GGI, Esound. Putting all of them in the same
584  package would require a lot of useless dependencies, thus
585  one should do separate packages: a core "vlc" package, and
586  "vlc-fb", "vlc-ggi", "vlc-esd" packages depending on the
587  core package.
588 Status: Done 15 Aug 2000 (sam)
589
590 Task: 0x09
591 Difficulty: Easy
592 Urgency: Normal
593 Description: Get rid of dumb vlc aliases
594  When compiling the vlc, some symlinks to the main app
595  are created, such as gvlc, ggivlc, etc. Actually this
596  might confuse the user, so they should be removed,
597  except perhaps gvlc and fbvlc which follow a usual
598  naming scheme.
599 Status: Done 8 Aug 2000 (sam)
600
601 Task: 0x08
602 Difficulty: Easy
603 Urgency: Important
604 Description: Get rid of floating instructions
605  Mixing floating instructions and MMX is seldom a good idea,
606  it might be interesting to remove all floating instructions
607  in a single thread. The audio decoders are of course not
608  concerned by this task.
609 Status: Todo
610
611 Task: 0x07
612 Difficulty: Hard
613 Urgency: Critical
614 Description: Fix VDEC_SMP segfaults
615  When compiled to support SMP, the vlc segfaults. The synchro
616  code lacks locks, but there might be bugs elsewhere as well.
617 Status: Done 16 Nov 2000 (Meuuh)
618
619 Task: 0x06
620 Difficulty: Guru
621 Urgency: Important
622 Description: Optimize video parser
623  The video parser has some speed issues currently unexplained:
624  even though most functions are inlined, it keeps eating more
625  CPU than it should. This has to be investigated.
626 Status: Todo
627
628 Task: 0x05
629 Difficulty: Easy
630 Urgency: Important
631 Description: Backport vlms input
632  The vlc uses the same file input code as the vlms (VideoLAN
633  Mini Server) which has been much improved. Someone should
634  port modifications done to the vlms back to the vlc.
635 Status: Todo
636
637 Task: 0x04
638 Difficulty: Medium
639 Urgency: Normal
640 Description: Get rid of vlc.channels
641  The file vlc.channels should be removed and information
642  found in it put either into ~/.vlcrc or in another rc
643  file. Note that this file can be modified by the vlc.
644 Status: Todo
645
646 Task: 0x03
647 Difficulty: Hard
648 Urgency: Important
649 Description: Playlist API
650  Currently only files given in the command line are played,
651  one after the other. We need a smarter way to handle this,
652  through AddFile(), MoveFile(), etc. functions. input_file
653  has to be modified to support this as well.
654 Status: Todo
655
656 Task: 0x02
657 Difficulty: Medium
658 Urgency: Normal
659 Description: Better Gnome interface
660  The Gnome interface has many stubs and is actually rather
661  unfunctional. Someone should make the buttons work when
662  the appropriate hooks exist.
663 Status: Todo
664
665 Task: 0x01
666 Difficulty: Hard
667 Urgency: Wishlist
668 Description: MGA YUV
669  The Matrox acceleration for the vlc does not work yet,
670  though there are initialization routines in the code.
671 Status: Todo
672
673 Task: 0x00
674 Difficulty: Medium
675 Urgency: Wishlist
676 Description: Splash screen
677  The vlc needs a splash screen with a vlc logo, instead of
678  the "waiting for stream" message.
679 Status: Todo
680
681
682