Difference between revisions of "SoC 2009"

From VideoLAN Wiki
Jump to navigation Jump to search
 
(58 intermediate revisions by 8 users not shown)
Line 1: Line 1:
Google Summer of Code 2009.
+
'''Google Summer of Code 2009.'''
 +
 
 
This wiki page covers the attempt by the [[VideoLAN]] project to act as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve {{VLC}} and [[x264]], the H.264 video encoder.
 
This wiki page covers the attempt by the [[VideoLAN]] project to act as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve {{VLC}} and [[x264]], the H.264 video encoder.
 +
 +
The projects that are being done in GSoC 2009 can be found [[SoC_2009_projects|here]].
  
 
== Introduction & Information ==
 
== Introduction & Information ==
Line 7: Line 10:
  
 
* This page list the ideas for VLC.
 
* This page list the ideas for VLC.
* There is also a separate page for project ideas for the [[x264]]: [[SoC x264]].
+
* There is also a separate page for project ideas for the [[x264]]: '''[[SoC x264 2009]]'''.
  
If you are a '''student''', please read the [[SoC_2008_Rules|rules]] and [[SoC_2008_Rules#Advices|advices]].
+
If you are a '''student''', please read [[SoC_2009_Rules|the rules and advice]].
  
 
=== VLC media player ===
 
=== VLC media player ===
{{VLC}} is a cross-platform Multimedia player, and encoding and streaming application.
+
{{VLC}} 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.
 
It is one of the most successful open-source projects without any professional structure underneath.
  
Line 21: Line 24:
 
=== Summer of Code ===
 
=== Summer of Code ===
  
If selected and developed, SoC ideas will be included in the VLC 1.1 or any later version release, and covered by the GPL licence.
+
If selected and developed, SoC projects for VLC will be included in the VLC 1.1 or any later version release.
  
=== Ideas ===
+
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'''''
 
'''''Read this'''''
  
 
This page is split in three lists of ideas:
 
This page is split in three lists of ideas:
* The ''main ideas'' are the ones we would like to focus on, and seem to be key projects for VLC and a lot more ''thrilling'' than the other ones; we have assigned a potential mentor to each of these.
+
# 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.
+
# The other ideas are less detailed but could be good ideas too.
* '''Original good ideas will be valued'''. Last year, half of the ideas were given by students. [[Mini_Projects]] has some ideas too.
+
# [[Mini_Projects]] has some ideas too.
  
We don't want to impose anything. This is free and Open Source software. Last year, many projects were external ideas.
+
* '''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!
 
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.
+
And on the IRC channel, you can have even more ideas.
  
===x264===
+
===Ideas for x264===
For x264 ideas, please see [[SoC_x264]].
+
For x264 ideas, please see [[SoC x264 2009]].
  
 
== Main ideas ==
 
== Main ideas ==
  
 
=== Qt pimping ===
 
=== 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.
+
Improve Qt interface, used on linux and windows with use of Qt-Kinetic or plasma.
 +
 
 +
The basic, primary interface is reasonable but it could be improved in many ways. The (sub)menus and popups need a lot of (re)design, evaluation, Q&A, tinkering, and so on. For example, adding files is cumbersome and repeated adding even more so. Sorting and other displaying options in the playlist would be nice. Error reporting, presentation, and resolution needs improving. For example, import a few audio streams (one or more m3u/pls playlists, perhaps), try to use them, and see what happens when some urls are not available.
 +
 
 +
Try to borrow the best ideas from amarok, iTunes, WMP, winamp, freeamp and integrate them into VLC.
 +
 
 +
Look at other Qt applications or KDE applications.
 +
 
 +
* You need some Qt and C++ knowlegde and a lot of creativity.
  
 
''Proposed mentor: [[User:J-b|jb]]''
 
''Proposed mentor: [[User:J-b|jb]]''
Line 52: Line 66:
 
=== QuickTimeVR Playback ===
 
=== QuickTimeVR Playback ===
 
This project deals with integration QuickTimeVR inside VLC using work from [http://freepv.sf.net FreePV] (SoC 2007).
 
This project deals with integration QuickTimeVR inside VLC using work from [http://freepv.sf.net FreePV] (SoC 2007).
 +
 
Other panoramic data inputs include video surveillance cameras with a 360° lens, regular images, etc.
 
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.
 
This project is likely to require some modification of the VLC image handling code.
  
''Proposed mentor: dionoea''
+
* Interests in photography is strongly suggested.
 +
 
 +
''Proposed mentor: [[User:Dionoea|Dionoea]]''
 +
 
 +
''Interested student: [[User:Leonox|Leonox]]''
 +
 
 +
[[SoC 2009/QuickTimeVR Playback|Project proposal]]
  
 
=== Assembly optimizations in VLC ===
 
=== 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.
 
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
+
* Profiling VLC.
* video filters ASM speedups
+
* memcpy implementations in SSE* and MMX (see modules/misc/memcpy/fastmemcpy.h)
* audio filters ASM speedups
+
* video filters ASM speedups (see modules/video_filter/blend.c)
 +
* audio filters ASM speedups (see modules/audio_filter/equalizer.c)
 
* Porting other ASM video filters to VLC.
 
* Porting other ASM video filters to VLC.
* Profiling VLC.
 
  
 
This project needs some good ASM knowledge and good C experience.
 
This project needs some good ASM knowledge and good C experience.
 +
 +
* Stuff to read: http://www.agner.org/optimize/
  
 
''Proposed mentor: [[User:J-b|jb]]''
 
''Proposed mentor: [[User:J-b|jb]]''
  
=== Audio Filtering in VLC ===
+
=== Audio Filters ===
  
We are looking for a skilled audiophile that knows a lot about audio theory and practice  
+
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 create or implement new algorithms, like SRS WoW or other 3D effects
* to work on channel mixing
+
* to work on channels mixing,
 +
* to work on tracks mixing,
 +
* to create scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script.
  
 
This project needs some good audio knowledge and good C experience.
 
This project needs some good audio knowledge and good C experience.
  
''Proposed mentor: [[User:J-b|jb]]''
+
''Proposed mentor: [[User:Geal|geal]]''
  
 
=== Test Suite ===
 
=== Test Suite ===
Line 90: Line 115:
 
* Write tests for the different bindings: Mac OS X Framework/Python Bindings... etc.
 
* Write tests for the different bindings: Mac OS X Framework/Python Bindings... etc.
  
This project is a code project, require some knowledge of C
+
This project is a code project, require good knowledge of C
  
''Proposed mentor: ?''
+
''Proposed mentor: Rémi''
  
 
=== Media Library work ===
 
=== Media Library work ===
This project is about working on the media library in SQL
+
This project is about working on the media library in SQL.
  
Mentor ''jpeg''
+
Modern media applications deal with a lot of huge quantity of data, and it can be difficult to deal with it.
 +
This can mean:
 +
* Smart Folders
 +
* Smart Playlists
 +
* IMDB integration
 +
* Integrated and saved bookmarks
 +
* MetaData searching and editing
 +
* Voting and external data integration
  
== More Ideas ==
+
See http://jpeg.dinauz.org/VideoLAN/gsoc/
 +
 
 +
Proposed mentor: ''jpeg''
 +
 
 +
 
 +
=== Services Discovery, like Jamendo integration ===
  
=== QTKit access ===
+
Jamendo, Last.fm and other online music and video services would be great to integrate into VLC.
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 deals with this 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.
+
* This needs lua, C and C++ programming skills.
  
 
''Proposed mentor: ?''
 
''Proposed mentor: ?''
  
=== Leopard integration ===
+
=== Flash Streaming ===
* a QuickLook-plugin for OS X Leopard
+
 
* Video Output animations
+
RTMP implementation for streaming to Flash10.
* VLC_app (VLCKit based) improvements.
+
 
* VLCKit oneclick-Streaming Server implementation.
+
''Proposed mentor: jpsaman''
 +
 
 +
=== 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: ILEoo''
 +
 
 +
== More Ideas ==
  
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.
+
=== QTKit access ===
 +
Build 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 component GUI.
  
''Proposed mentors: ?''
+
This project requires knowlege of C and preferably also Objective C, 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: thedj''
  
 
===  GUI interfaces for the browsers plug-ins ===
 
===  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}} as in WMP or Youtube player. These buttons need to be cross-platform and cross-browsers.
+
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}} as in WMP or Youtube player. These buttons need to be cross-platform and cross-browsers. A right-click context menu with basic commands might be a nice way to get started.
  
The second part of this project aims to provide a replacement for all preconfigured media players embedded in web pages, if possible.
+
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.
 
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.
 
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).
+
The look of the interface should not be a problem. There is a proof of concept and a better design can be added later on.
  
''Proposed mentor: ?''
+
''Proposed mentor: jpsaman and jpd''
 +
 
 +
=== 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: Rémi''
 +
 
 +
=== 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: geal''
 +
 
 +
=== Linux GPU Acceleration Integration ===
 +
Some nice APIs are available like VAAPI and like XvBA, and you can do fun things like GPU-based decoding.
  
 +
''Proposed mentor: jpsaman''
  
 
=== Automated threading error detection ===
 
=== Automated threading error detection ===
Line 145: Line 206:
  
 
''proposed mentor: ?''
 
''proposed mentor: ?''
 
  
 
=== Skins improvements ===
 
=== Skins improvements ===
Line 160: Line 220:
  
 
''Proposed mentor: ?''
 
''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 ==
 
== Mini Projects - More ideas ==
Line 191: Line 228:
  
 
* Visualisation improvements (libprojectM implementation ? )
 
* Visualisation improvements (libprojectM implementation ? )
* Video rework.
+
* Quick Look plug-in for Mac OS X (Uses VLC to play videos in the Quick Look preview rather than, for example, Flip4Mac WMV via QuickTime)
  
 
== Questions? Contact us? ==
 
== Questions? Contact us? ==
Line 203: Line 240:
 
=== Mentors ===
 
=== Mentors ===
 
The proposed mentors are:
 
The proposed mentors are:
* ?
+
* jpeg
 +
* remi
 +
* xtophe
 +
* jb
 +
* dionoea
 +
* jpsaman
 +
* jpd
  
 
=== Administrators ===
 
=== Administrators ===
Line 209: Line 252:
 
* xtophe
 
* xtophe
  
[[Category:Activities]] [[Category:SoC]]
+
{{GSoC}}
 +
 
 +
[[Category:SoC 2009 Project|*]]

Latest revision as of 06:22, 5 February 2019

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.

The projects that are being done in GSoC 2009 can be found here.

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 2009.

If you are a student, please read the rules and advice.

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:

  1. 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.
  2. The other ideas are less detailed but could be good ideas too.
  3. 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 the IRC channel, you can have even more ideas.

Ideas for x264

For x264 ideas, please see SoC x264 2009.

Main ideas

Qt pimping

Improve Qt interface, used on linux and windows with use of Qt-Kinetic or plasma.

The basic, primary interface is reasonable but it could be improved in many ways. The (sub)menus and popups need a lot of (re)design, evaluation, Q&A, tinkering, and so on. For example, adding files is cumbersome and repeated adding even more so. Sorting and other displaying options in the playlist would be nice. Error reporting, presentation, and resolution needs improving. For example, import a few audio streams (one or more m3u/pls playlists, perhaps), try to use them, and see what happens when some urls are not available.

Try to borrow the best ideas from amarok, iTunes, WMP, winamp, freeamp and integrate them into VLC.

Look at other Qt applications or KDE applications.

  • You need some Qt and C++ knowlegde and a lot of creativity.

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.

  • Interests in photography is strongly suggested.

Proposed mentor: Dionoea

Interested student: Leonox

Project proposal

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.

  • Profiling VLC.
  • memcpy implementations in SSE* and MMX (see modules/misc/memcpy/fastmemcpy.h)
  • video filters ASM speedups (see modules/video_filter/blend.c)
  • audio filters ASM speedups (see modules/audio_filter/equalizer.c)
  • Porting other ASM video filters to VLC.

This project needs some good ASM knowledge and good C experience.

Proposed mentor: jb

Audio Filters

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 other 3D effects
  • to work on channels mixing,
  • to work on tracks mixing,
  • to create scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script.

This project needs some good audio knowledge and good C experience.

Proposed mentor: geal

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 good knowledge of C

Proposed mentor: Rémi

Media Library work

This project is about working on the media library in SQL.

Modern media applications deal with a lot of huge quantity of data, and it can be difficult to deal with it. This can mean:

  • Smart Folders
  • Smart Playlists
  • IMDB integration
  • Integrated and saved bookmarks
  • MetaData searching and editing
  • Voting and external data integration

See http://jpeg.dinauz.org/VideoLAN/gsoc/

Proposed mentor: jpeg


Services Discovery, like Jamendo integration

Jamendo, Last.fm and other online music and video services would be great to integrate into VLC.

This project deals with this integration.

  • This needs lua, C and C++ programming skills.

Proposed mentor: ?

Flash Streaming

RTMP implementation for streaming to Flash10.

Proposed mentor: jpsaman

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: ILEoo

More Ideas

QTKit access

Build 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 component GUI.

This project requires knowlege of C and preferably also Objective C, 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: thedj

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. A right-click context menu with basic commands might be a nice way to get started.

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. There is a proof of concept and a better design can be added later on.

Proposed mentor: jpsaman and jpd

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: Rémi

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: geal

Linux GPU Acceleration Integration

Some nice APIs are available like VAAPI and like XvBA, and you can do fun things like GPU-based decoding.

Proposed mentor: jpsaman

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: ?

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 ? )
  • Quick Look plug-in for Mac OS X (Uses VLC to play videos in the Quick Look preview rather than, for example, Flip4Mac WMV via QuickTime)

Questions? Contact us?

If you need to contact us for any questions, you can:

Mentors

The proposed mentors are:

  • jpeg
  • remi
  • xtophe
  • jb
  • dionoea
  • jpsaman
  • jpd

Administrators

  • jb
  • xtophe


VideoLAN Google Summer of Code (GSoC/SoC) mentoring projects
20072008200920102011 (GCi 2011SOCIS x264 2011)20122013201620172018201920202021202220232024