GSoC/GCI Archive
Google Summer of Code 2010


Web Page:

Mailing List:

VideoLAN is a project, lead and composed by a team of volunteers, that develops open source solutions for multimedia.


VideoLAN produces free software under the GNU General Public License. The most well-known projects of VideoLAN are VLC, a cross-platform media player and streamer; and x264, an open source H.264 encoder.




  • Add Shader support using DirectX/OpenGL API for video post-processing A lot of video post-processing such as RGB-YUV conversion can be accelerated by using the GPU. This can either be achieved through a fragment shader, where it is the last step before a pixel is displayed on the screen, or it can be done with DirectCompute/CUDA/OpenCL. The method will vary depending on the task and intent. I will implement support for shaders by using the DirectX and OpenGL API and write a few shaders such as RGB-YUV conversion.
  • Application for x264 macroblock adaptive frame field interlacing support Proposal to implement in x264 adaptive interlacing support that works on a macroblock level.
  • Audio support for the x264 frontend Audio support on the x264 frontend. The plan is to, at the end of the project, have x264 capable of transcoding or copying audio as simply and correctly as possible. Usage should be as simple as 'x264 input -o output', with eventual support for {down,up}mixing and resampling. The used library for decoding and encoding will initially be libavcodec, but more libraries can be used in the future.
  • High-Level Capture API for Phonon The goal of this project would be to create an API to allow Phonon application to display and access input devices, like webcams. The API would then be implemented in phonon-vlc and other backends, such as phonon-gst, as time permits.
  • Higher bit depth encoding support for x264 Currently x264 is constrained to encoding videos with a sample depth of 8 bits. This often suffices for consumer needs, but for production purposes and high quality video encoding, it may not be sufficient. The primary goal for this project is to prepare the code base for encoding H.264 video with user defined sample depths.
  • Implementing BD-J support in libbluray and VLC This project will focus primarily on getting BD-J (Blu-ray Disc Java) support into libbluray. BD-J support is important because many of the advanced features and extra content in Blu-ray movies uses BD-J. Currently people with Blu-ray drives are tied to Windows if they want to access this content, they are forced to use proprietary Blu-ray software which does not run on Linux or various other operating systems. This project will also integrate the BD-J support into VLC.
  • Improving Matroska and ASF demuxers Some VLC demuxers could be improved, especially with seeking to I-frames and supporting new or rarely seen formats. This project aims to improve the Matroska and ASF demuxers in particular. Main working methods are browsing the bugtracker and writing tests and finding test files for the current code, and most important of all communicating with the people involved. Alternative refactored versions of both Matroska and ASF plugins are also introduced for possible merging.
  • Matroska demux improvements This task entails fixing problems with the current mkv demux functionality (lavf wrapper/native code) and adding some enhancements.
  • Media Library Integration and LV2 Audio Filters in VLC Player The goal of this project is to integrate the Media Library code in the GSoC repositories with the VLC master branch and to implement a Qt interface for the Media library. Secondarily, a basic host implementation of the LV2 will be completed.
  • Ogg and Matroska demuxers A demuxer, or demultiplexer, is an essential part of the audio/video decoding process. Its role is to work with the container format, to identify the types and properties of the streams (video, audio, subtitles), control seeking and synch within the container, and to feed stream packets into the appropriate decoders. My project would be to rewrite the ogg and matroska demuxers in VLC so that they work correctly and allow rapid, frame accurate seeking within files with these container types.
  • PCM I/O API for Phonon Design a fully featured PCM I/O API for Phonon, and provide an implementation for the Phonon-VLC backend and one other (either MPlayer or Xine). This API will allow developers to capture PCM data from devices like a sound card, or to play back raw audio from memory, or elsewhere. This will provide some important missing features in Phonon, and open the door for many applications waiting to make use of an API like this.
  • Symbian Port for VLC To prepare a Functional Symbian<S60 specifically> VLC <1.1.0> Port Project includes following : 1.Source code should be merged in the platform independent code of vlc 2.Port the minimum needed modules to showcase the functionality of the port (Other modules can be ported later after GSoC) 3.Eliminate the need of Symbian Build system , Create Make based Build system , If possible do necessary arrangements so that port can be compiled on GNU/Linux also.
  • Tube my Video! Youtube is the most popular video sharing website, right now. VLMC is a video editing software and having features in VLMC to search-retrieve videos, directly upload/update/delete videos on Youtube, within the application itself, would be awesome. The aim of this project is to write a small C++/Qt based Youtube client library for VLMC that provides her all the APIs to perform all those things.
  • UPNP DLNA Server and Client The Digital Living Network Alliance (DLNA) offers a standard that many manufacturers use as a way to keep compatibility across different products that use UPnP. As of 2008, over 5,500 different devices and over 200 million sold products use the DLNA standard. This project will improve the current UPNP model, and apply the DLNA standard as Client/Server modules.