SoC 2009
Google Summer of Code 2009.
This wiki page covers the attempt by the VideoLAN project to act as a mentoring organization for Google Summer of Code, in order to improve VLC media player and x264, the H.264 video encoder.
Contents
Introduction & Information
This wiki page covers the attempt by the VideoLAN project to act as a mentoring organization for Google Summer of Code, in order to improve VLC media player and x264, the H.264 video encoder.
- This page list the ideas for VLC.
- There is also a separate page for project ideas for the x264: SoC x264.
If you are a student, please read the rules and advices.
VLC media player
VLC media player is a cross-platform multimedia player, encoder and streamer application. It is one of the most successful open-source projects without any professional structure underneath.
VLC media player is downloaded at an approximate monthly rate of 5 millions from the main website and that's not including third-party distributions (Linux)!
You can find more information on VLC on Wikipedia or on this wiki.
Summer of Code
If selected and developed, SoC projects for VLC will be included in the VLC 1.1 or any later version release.
SoC projects for x264 will be included in the main tree of the project.
All projects are covered by the GPL licence. (v2+)
Ideas for VLC
Read this
This page is split in three lists of ideas:
- The main ideas are what seem to be key projects for VLC and should be more thrilling than the other ones; we have assigned a potential mentor to each of these.
- The other ideas are less detailed but could be good ideas too.
- Mini_Projects has some ideas too.
- Original good ideas will be valued. Last year, half of the ideas were given by students. We don't want to impose anything. This is free and Open Source software.
If you don't want to apply for SoC but want other ideas to develop on, check the Mini Projects page!
And on IRC channel, you can have even more ideas.
x264
For x264 ideas, please see SoC_x264.
Main ideas
Qt pimping
Improve Qt interface with coverflow and use of Qt-Kinetic or plasma.
The basic interface is good but could be way-more improved.
Proposed mentor: jb
QuickTimeVR Playback
This project deals with integration QuickTimeVR inside VLC using work from FreePV (SoC 2007). Other panoramic data inputs include video surveillance cameras with a 360° lens, regular images, etc.
This project is likely to require some modification of the VLC image handling code.
Proposed mentor: dionoea
Assembly optimizations in VLC
If you are fond of writing ASM and you are fluent in MMX/SSE2, there are many interesting things in VLC to speed up.
- memcpy implementations in SSE2
- video filters ASM speedups
- audio filters ASM speedups
- Porting other ASM video filters to VLC.
- Profiling VLC.
This project needs some good ASM knowledge and good C experience.
Proposed mentor: jb
Audio Filtering in VLC
We are looking for a skilled audiophile that knows a lot about audio theory and practice
- to create or implement new algorithms, like SRS WoW or 3D effects
- to work on channel mixing
This project needs some good audio knowledge and good C experience.
Proposed mentor: jb
Test Suite
This project aims at making automatic tests to improve VLC quality.
- Write a series of tests for vlc-internal
- Integrate a framework for automated plugins testing with the automake build system
- Automate the different codec playback/mux/etc tests
- Automate the subtitles tests
- Write tests for the different bindings: Mac OS X Framework/Python Bindings... etc.
This project is a code project, require some knowledge of C
Proposed mentor: ?
Media Library work
This project is about working on the media library in SQL
Mentor jpeg
More Ideas
QTKit access
This project means to deal with building a QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] ).
This access module will also need a nice GUI Integration.
This project requires C, preferably Obj-C, knowledge and interest in video/audio capture devices. Obviously, the student is required to own at a least a Mac with a (embedded) webcam and an audio input facility for development. Knowledge of the QuickTime APIs and previous experience with Cocoa are strong pluses.
Proposed mentor: ?
Leopard integration
- a QuickLook-plugin for OS X Leopard
- Video Output animations
- VLC_app (VLCKit based) improvements.
- VLCKit oneclick-Streaming Server implementation.
This project requires C, preferably Obj-C, knowledge and interest in GUI programming. Previous experience with Cocoa preferred. Basic Core Animation knowledge is a plus, but far from being absolutely necessary.
Proposed mentors: ?
GUI interfaces for the browsers plug-ins
This project focuses on adding interfaces to our browser plug-ins, in order to have, in the web pages embedded mode, buttons to control VLC media player as in WMP or Youtube player. These buttons need to be cross-platform and cross-browsers.
The second part of this project aims to provide a replacement for all preconfigured media players embedded in web pages, if possible.
For example, when a webpage asks for WMP embedded plugin, youtube player, quicktime player or any other, VLC would detect the stream and display it. This would mean less CPU needed than Flash based players...
This project may need to work in concert with some improvements on the cache handling module access.
The look of the interface should not be a problem (it can be added later on).
Proposed mentor: ?
Automated threading error detection
VLC is heavily multithreaded.
This project would involve extending the VLC threading APIs to provide better run-time consistency checks, and possibly proof of correctness.
This could be similar to the lock consistency checking in the Linux kernel, albeit more simple - VLC does not have to deal with interruptions neither atomic operation and has fewer thread and synchronisation constructs.
This project requires working knowledge of the C programming language and POSIX threads.
proposed mentor: ?
Skins improvements
Better video output integration.
Better skin support.
Proposed mentor: ?
SVCD handling
Make SVCD's work. Menu selection, navigation and hot spots.
Proposed mentor: ?
Lua audio filters
VLC currently uses Lua as an interface, to handle specific URLs, and to fetch media information. This project aims at creating an audio filter in Lua, and enabling users to create whatever audio filtering function they want in a Lua script.
Proposed mentor: Geal
Qt embedded interface
VLC uses Qt for its main interfaces on desktop systems. It would be nice to have the same type of UI on systems like Maemo or Windows Mobile.
Proposed mentor: ?
OpenMAX AL bindings for LibVLC
OpenMAX is a portable framework for handling audio, video and pictures. OpenMAX AL is an API designed to create and control media players, and make them communicate with devices such as audio inputs and outputs, cameras, LEDs, etc. In this project, the student would integrate LibVLC, the VLC framework with OpenMAX.
Proposed mentor: ?
DXVA Integration
Since Windows Vista, some nice APIs are available, and you can do fun things like GPU-based decoding. Some good work could be done here.
'Proposed mentor: ?
Mini Projects - More ideas
Original ideas will be rewarded.
We have a more general page for ideas for Project in VLC media player, that could give you ideas: Mini_Projects.
- Visualisation improvements (libprojectM implementation ? )
- Video rework.
Questions? Contact us?
If you need to contact us for any questions, you can:
- use this Talk page,
- use the vlc-devel mailing list,
- come on IRC irc://irc.videolan.org #videolan
- contact one of the mentors or the backup mentors,
- or contact Jean-Baptiste Kempf
Mentors
The proposed mentors are:
- ?
Administrators
- jb
- xtophe