GSoC/GCI Archive
Google Summer of Code 2011


Web Page:

Mailing List:

VideoLAN is a project and a non-profit organization, composed of volunteers developing and promoting free, open-source multimedia solutions.

VideoLAN is the home of very popular projects, like VLC media player, x264, DVBlast, libdvdcss or VLMC.


  • Assembly optimizations in VLC The main goal is to optimize video and audio filters of VLC, add SIMD x86 instruction using functions and clean their C code up. Next step is profiling of main VLC.
  • Generator of libVLC bindings for other languages It would be nice to able to use libvlc from other languages. There're autogenerated bindings for python, and it has nice class interface, but it requires to managing reference count (to call release() in the end) manually, which is not very pythony. The plan is to make an autogenerated C++ wrapper around C libvlc. Reference counting will be automatic via constructors/destructors. Produced wrapper will be used as input for SWIG, which can make bindings for many different languages.
  • H.264 MVC Stereo High Profile Encoder for x264 The goal is to Implement H.264 MVC stereo high profile encoder for x264 encoder. This will enable x264 to author 3D blu-ray discs. The initial approach will be to implement SHP without interlaced content and constant QP and once the initial skeleton is up, then the rate control will be added followed by interlaced content.
  • Improvements to old http + Mobile remote control improvements Improvements in the oldhttp interface for additional functionalities in addon applications, native application on Android, Symbian to remote control VLC on the PC over WiFi, lightweight http frontend to remote control VLC for non Android/Symbian phones
  • Improvements to SSA/ASS subtitle rendering Improvements to SSA/ASS subtitle rendering. Namely, support for complex text layout (needed for Arabic, Hebrew, Syrian and vertical CJK scripts) in libass as well as fixes and performance improvements to VLC integration.
  • LibNetMD The idea is to port the netmd python scripts from the linux-minidisc project (for communication with sony netmd minidisc player) to a c-based library that could be used by vlc and other applications. The library should be based on the unmaintained libnetmd, that is available on sourceforge.
  • OMA/ATRAC improvements The purpose of this project is to add playback support for audio files protected by Sony's DRM (OpenMG) and/or audio files encoded with ATRAC3+.
  • OpenGL interface for VLC A nice looking, intuitive, effect-oriented OpenGL interface for the VLC Media Player. It should combine the utility of the current Qt interface with the graphics of media centers. OpenGL will be used for all rendering operations for the interface, bringing a wide range of possibilities to develop pretty graphics. All the user interface elements will be specialized according to the needs of the VLC interface.
  • Reworked Mac OS X user interface The Mac OS X interface is in a bad shape for quite some time. Now it's time to rework it, to embed the video output within the playlist window and to add the missing features from the Qt4 interface. This is what I'll do.
  • Stereoscopic 3D Playback For Google Summer of Code 2011, I am proposing to add stereoscopic playback to the VideoLAN project and specifically to the VLC media player. Stereoscopy, informally known as 3D, refers to the process where two separate images are displayed to the viewer simultaneously, one image assigned to each eye, giving the illusion depth and volume. Upon completion of my Summer of Code project a user will be able to playback, with the correct equipment, stereoscopic video through the VLC media player.
  • Trellis Motion Estimation in x264 Using trellis optimization for motion estimation promises considerable savings while encoding motion vectors; however, if not done carefully, it can be very expensive. In order to improve performance, we can use techniques like early termination and investigate heuristics for RDO cost.
  • VLC Android Port Design and implement a cool GUI with gestures and using LibVlc implement callbacks, map user events etc