[vlc-devel] VLC Dev Meeting '08: Technical decisions

Jean-Philippe André jpeg at videolan.org
Wed Dec 24 17:45:06 CET 2008


Hi VideoLAN people,

As you know, the first VLC developers meeting (in real life, yes!) took
place this week-end in Paris. Saturday afternoon was the occasion to
take a few technical decisions about the future of VLC.

Thannoy, pdherbemont and I took a few notes, and here is the report for
the meeting. Comments are welcome. As you will see, some topics have to
be discussed further on the ML. It would be great to open separate mail
threads.

And once again, I want to personally thank all the people who have
contributed to this event, especially jb, ivoire, M2X, Anevia and Free.

Best regards and merry christmas.
Joyeux Noël,

-- 
Jean-Philippe André (jpeg)
The attached file can also be found at the URL:
http://jpeg.dinauz.org/VideoLAN/dev-mtg-08/Technical_Meeting.txt

-------------- next part --------------
                      ----
         ---   VLC Dev Meeting '08  ---
  -* Technical meeting, saturday afternoon (20/12) *-
                      ----

Disclaimer:
I (JPeg) did not understand everything so the notes might be incomplete and or wrong.
The second part has been written by pdherbemont (Pierre D'Herbemont).
Some notes were taken by thannoy (Anthony Loiseau).

About 30 people were present in the room.


Summary:

I. Documentation
II. Malloc / Coverity / Security
III. Windows & Mac
IV. Tests
V. AVI seeking over HTTP
VI. UI customisation
VII. Misc
IX. Next release
X. GSoC & ECP
XI. #35
XII. Dirac (by David)



    I. Documentation

Doxygen, Outdated official, Wiki
Wiki: more up-to-date

2/3 years -> move to wiki
Specific modules only on wiki
Indian guys work on wiki

Wiki export? HTML / CHTML
Versioning (VLC versions) to clarify in the Wiki.

Git: doc/ folder.

Keep only one doc? Vote: 20 VS 0

Main documentation source should be?
Wiki:     15
Docbook:   2
Bored:     4

But keep Doxygen. Doxygen doc for the modules / API.
Note: for new modules, need to reconfigure Doxygen.



    II. Malloc / Coverity / Security

  A/ Malloc

Do we have to check every single malloc return?
David: fail when out of memory is bad instead of killing the faulty module -> there should be a default way
jpsaman: avoid crashing
fenrir: problem: the error path may be wrong

--> Further discussion on the ML
This is a decision taken in "The Debian Way"...


  B/ Coverity

Coverity: a static parser of VLC code
80 security issues (potential)

Vote: continue? Yes
Dionoea & Ivoire are coverity admins: ask them for an access

Note for JB: please mail coverity


  C/ Security

Do we do a security release for every single minor issue?

For windows: could create patch installers (not big), with only 1 or 2 DLLs fixed
Exploitable stuff: must be fixed AND update the installer
Blacklist modules / delete modules

Security patches: as debian is slow, do not publish the patches too early?
--> private Git? (with SSH access)

Vote: private Git for security patches? Yes.
For: majority
Against: nobody
Don't care: some people

  D/ Documentation on security issues
Documentation: we should check the patches, but also educate people:
    * check for scanf, int overflows, eg. ...





    III. Windows Port / Mac OS Port


  A/ Windows

Most devs don't care, don't use Windows...
Crash reports? Need to pay to get them.
We should distribute debug versions. Looks like we can distribute the debugging symbols separately.

We need developers. That's all.


  B/ Mac

Crash reports:
Problem: sort the crash reports.
Need something to parse the crash reports. We can give this TODO to someone (small project).

Current version broken!
Problem: cancellation points
OSX 10.5 issue: no one want to do it?

Problem: intf (see later)

Problem: there's a timer waiting for events (polling: sux)
Not a shall-stop.

To have more devs and debugging: Integration in the IDEs: Eclipse (for windows/mac)




    IV. Testing

  A/ Unit tests

JUnit for the Java bindings
Useful also for the native code (libVLC)

Eg. FFmpeg: FATE (automated testing env)

We should test modules (separately)
Need an automatic test chain


  B/ Reference streams

Separated Git repo for the streams? Public repo on a server? --> Create folders on a server (FTP) with reference streams
Automate tests on the new servers.

We want only to check for crash / non playing streams (regressions). We don't check if the image is fully correct.

Need someone to set up that stuff. With buildbot: simple script to perform the test

Question: can we dump the data between modules?
`-> Yes, but complicated
But doable using a fake video output.

That's a ToDo for ivoire, pdherbemont, jb.



    V. AVI seeking over HTTP

We have to pre cache the data.
fenrir: no technical issue, simply need someone to do it (some work to do)
-> No AVI seeking in order to stay cool with apache servers. But we can add an option.

* Have a big cache
* Progressive download

AVI seeking bug needs this caching.
This will be done (fenrir)



    VI. UI Modifications / CSS

CSS can help creating custom interfaces in Qt.
Integrate images for the buttons.
But CSS+Qt cannot set the position of every elements.

CSS: bigger, slower intf.
     not usable before Qt 4.4

Skins: repair? Yes
But who wants to do that?



    VIII. Miscellaneous

  A/ VOUT / AOUT recycling

Vout & Aout: Can be done. Need to move the management to the playlist to do so.
It can only be done if Chroma and size are the same.


  B/ OSD/Subtitle

- Video output & subtitle hardware mixing: Doable on OGL/DX


  C/ Timestamps

Extra flags to say if the timestamp is valid. instead of a =<0. Two  
approaches.
Fenrir is not against, afraid of the stream output. Fenrir will check.


  D/ Rockbox codecs and neuros branch:

- Forward port?
=> Yes


  E/ Version number

- 1.0.0
- packaging issue increase the number.


  F/ Coding Style

- Dead end, but please try to be consistent with the file you are in.


  G/ Git version release

- Multistage freeze
  - String freeze, Feature freeze, bugfix


  H/ AUTHORS file

- Nothing decided


  I/ Size (of the package)

- Less important than features 


  J/ Patch review

- Patch on the ml tracking system


  K/ Microsoft

- Ask for licences, crash reports


  L/ V4L

- We don't really care breaking all compatibility with previous (ie. current) implementation. Dionoea wants to change the cmd-line for v4l.



    IX. Next release

(Core/access) Feature freeze: 31/01
String freeze 2 weeks earlier: 14/01
J-b: Qt stuff
fenrir: Cache/prefetch
dionoea: http/
thedj: audio capture.

About 2+ weeks for the bugfixes


Distribution of -pre and then -rc:
Pop up Qt on prerelease. Packages for testers and stable usage.



    X. GSoC & SQL media library (ECP)

  A/ SQL ML

Note: the work can be found on git.v.o/vlc-ecp-project.git
Currently: meta data read from ID3 tags --> no good video support
--> get metas from the file names (classic patterns)
ML used to organize one's medias.
ToDos: A lot :)
Feel free to contact me to discuss that matter (jpeg), or ivoire, phytos, magsoft.


  B/ GSoC integration

Only 1/11 GSoC failed: Good point.

- Qt FS controler: merged
- Phonon backend: to be merged
- UPnP client and server: to be mergable in few days
- WinCE: merged
- NTP: not merged
- OSX integration: "dilan" 
- Browser plugin: failure, the guy disappeared



    XI. #35: World Domination

Presentation by JB.

  A/ Other players comparison
  B/ Ideas

- Gtk integration
- Totem VLC backend
- GStreamer VLC backend

  C/ Extensions

- This is why people still use firefox.
- We NEED extensions for #35
- Lua scripts controlling part of the GUI, basic interactions
  - Will allow stuff like Wikipedia fetch, IMDB, OpenSubtitles, Lyrics, Amazon, etc...

  D/ Device intergration

- iPod & other MP3 players
- DLNA/UPnP (GSoC Mirsal)



    XII. Dirac


  A/ Yet another compression algorithm?
By a BBC guy: David Flynn.

Objective: Patente-free VIDEO-only compression.
- mp4: licences :( pay lit money to encode, few readers for each formats
- bad for existent: per-product shipping licences (few dollars each) = big amount at the end

Dirac: similar concepts to mpeg2 (but wavelets-based?)
Manage discontiniutees between blocks by "overlaping blocks" technology --> no block artifacts

Standard wanted to be simpler than usual standards (mpeg4)
Dirac bought an identifier for mpeg2-ts streams, mp4 too
Hardware codecs are not yet ready


   B/ Future

- Supervison exists in Japan:
Width and height 4 times bigger than HD (==> 16 times bigger): BIG BIG bitrates.

- 3D screens (without special glasses).



More information about the vlc-devel mailing list