Difference between revisions of "SoC 2008"

From VideoLAN Wiki
Jump to navigation Jump to search
 
(74 intermediate revisions by 17 users not shown)
Line 1: Line 1:
 
Google Summer of Code 2008.
 
Google Summer of Code 2008.
  
''VideoLAN tries to be a mentoring organization''
+
''VideoLAN is an official mentoring organization'' for {{VLC}} and [[x264]] for Google Summer of Code 2008.
 +
 
 +
Look at the projects: [[SoC_2008_projects]].
  
 
== Introduction & Information ==
 
== Introduction & Information ==
  
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}}.
+
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 page list the ideas for VLC.
 +
* There is also a separate page for project ideas for the [[x264]]: [[SoC x264 2008]].
 +
 +
If you are a '''student''', please read the [[SoC_2008_Rules|rules]] and [[SoC_2008_Rules#Advices|advices]].
  
 
=== VLC media player ===
 
=== VLC media player ===
Line 21: Line 27:
  
 
=== Ideas ===
 
=== Ideas ===
'''Read this'''
 
  
We (the VideoLAN team, and [[User:J-b|jb]], the author of this page) have split this page in two lists of ideas:
+
'''''Read this'''''
 +
 
 +
We (the VideoLAN team, and [[User:J-b|jb]], the author of this page) have split this page 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 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 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.
  
 
We don't want to impose anything. This is free and Open Source software. Last year, many projects were external ideas.
 
We don't want to impose anything. This is free and Open Source software. Last year, many projects were external ideas.
  
 
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 IRC channel, you can have even more ideas.
 +
 +
===x264===
 +
For x264 ideas, please see [[SoC x264 2009]].
  
 
== Main ideas ==
 
== Main ideas ==
  
=== Fullscreen Controller ===
 
This project is easy to describe, it would provide a fullscreen controller for Linux/Unix and Windows, as {{VLC}} already has on Mac OS X version since 0.8.6.
 
 
It should be draggable, clickable and support the classical control buttons to control VLC playback in fullscreen mode.
 
 
With this project, which is not too long, there should be some related work on Vout (Making sure the video output does not close and reopen between files for example...)
 
 
This project needs basic C++ knowledge. Qt knowledge would be a plus.
 
 
''Proposed mentor: [[User:J-b|jb]]''
 
  
 
=== Test Suite ===
 
=== Test Suite ===
Line 58: Line 60:
 
''Proposed mentor: [[User:Pdherbemont]]'' (backup: courmisch)
 
''Proposed mentor: [[User:Pdherbemont]]'' (backup: courmisch)
  
=== MTP Service Discovery ===
+
=== MTP Device Service Discovery ===
Add support for reading medias from USB MTP (Media Transfer Protocol) devices,
+
This projects consists of adding support for finding and reading content from attached USB MTP (Media Transfer Protocol) devices,
 
such as the Apple iPod, as a Service Discovery and input plugins for VLC.
 
such as the Apple iPod, as a Service Discovery and input plugins for VLC.
  
This project might need improvements in the Service Discovery subsystem for hotplug
+
This project might need improvements in the Service Discovery subsystem for hotplug.
 +
 
 +
This project needs a student to have a MP3 player device...
 +
 
 +
You should have a look at [http://libmtp.sf.net libmtp library] and at [http://blog.songbirdnest.com/2008/02/29/mtp-device-support-for-windows/ Songbird MTP implementation].
 +
 
 +
''Proposed mentor: funman'' (backup jb)
  
''Proposed mentor: Unknown''
+
=== QuickTimeVR Playback ===
 +
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.
  
=== QuickTimeVR Playing ===
+
This project is likely to require some modification of the VLC image handling code.
This project deals with integration QuickTimeVR inside VLC using work from FreePV (SoC 2007).
 
This project will require some modification on image handling inside VLC.
 
  
''Proposed mentor: Unknown'' (backup Yuval Levy)
+
''Proposed mentor: dionoea'' (backup Yuval Levy)
 +
 
 +
''Interested students:'' [[User:Plouj]]
  
 
=== UPnP media service ===
 
=== UPnP media service ===
Add support for advertizing the VLC stream output on the LAN using Universal Plug'n'Play A/V  / DLNA.
+
This project involves adding support for advertizing the stream on the LAN using Universal Plug'n'Play A/V  / DLNA.
 +
 
 +
Streaming to the PS3 can be one achievement of it.
 +
 
 +
Using [http://libdlna.geexbox.org/ libdlna] might be a good idea.
 +
 
 +
Having a cross platform solution is almost a must.
 +
 
 +
''Proposed mentor: funman''
 +
 
 +
''Interested students: [http://wiki.videolan.org/User_talk:Suheaven Hang Su] [[User:Mr_Mirsal | Mirsal Ennaime]][User:herbert]''
 +
 
 +
===  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.
 +
 
 +
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.
  
''Proposed mentor: Unknown''
+
The look of the interface should not be a problem (it can be added later on).
  
== Other Ideas SoC 2008 ==
+
''Proposed mentor: dionoea''
 +
 
 +
=== Fullscreen Controller ===
 +
This project is easy to describe, it would provide a fullscreen controller for Linux/Unix and Windows, as {{VLC}} already has on Mac OS X version since 0.8.6.
 +
 
 +
It should:
 +
* be draggable,
 +
* be clickable,
 +
* support the classical control buttons to control VLC playback in fullscreen mode,
 +
* have all the VLC functionalities in it.
 +
 
 +
With this project, which is not too long, there should be some related work on Vout (Making sure the video output does not close and reopen between files for example...)
 +
 
 +
This project needs basic C++ knowledge. Qt knowledge would be a plus.
 +
 
 +
This project should be doable by any serious student in a summer.
 +
 
 +
Aim: [http://download.videolan.org/vlc/screenshots/0.8.6/VLC-mac-Fullscreen.jpg VLC on Mac fullscreen controller]
 +
 
 +
''Proposed mentor: [[User:J-b|jb]]'' (backup atmo)
 +
 
 +
== More Ideas ==
  
 
=== QTKit access ===
 
=== QTKit access ===
QTKit-based access module for OS X (allowing input from USB / FireWire cameras, audio devices, camcorders, tape recorders [, ...your favourite here] )
+
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] ).
  
''Proposed mentor: Unknown'' (backup feepk)
+
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: BigBen'' (backup feepk)
  
 
=== Leopard integration ===
 
=== Leopard integration ===
- a QuickLook-plugin for OS X Leopard  
+
* a QuickLook-plugin for OS X Leopard  
- Video Output animations
+
* Video Output animations
- VLC_app (VLCKit based) improvements.
+
* VLC_app (VLCKit based) improvements.
- VLCKit oneclick-Streaming Server implementation.
+
* VLCKit oneclick-Streaming Server implementation.
  
''Proposed mentor: pdherbemont, feepk''
+
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: pdherbemont, feepk''
  
 
=== iPhone / iPod touch port ===
 
=== iPhone / iPod touch port ===
Now that the SDK is approaching, we might consider the port of VLC to the iPhone / iPod touch platform. Obviously, this project requires the student to own such a device.
+
Port VLC to the iPhone / iPod touch platform.  
 +
 
 +
The student is not required to own such a device due to the availability of a simulator as part of the official SDK, although it may be helpful.
 +
 
 +
This project requires good C, preferably Obj-C, knowledge and basic skills in shell programming (autotools, ...). Previous experience with development for embedded devices is a strong plus.
 +
 
 +
''Proposed mentor: pdherbemont'' (backup feepk)
 +
 
 +
=== Vista acceleration and DirectX improvements ===
 +
Current versions of {{VLC}} have a lot of problems on Windows Vista (check the forums for specifics).
 +
 
 +
We need support for the new EVR (enhanced video renderer) in Windows Vista, and make it the default Video Output module for that OS.
  
''Proposed mentor: Unknown'' (backup feepk)
+
See [http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/MED134_WH06.ppt Windows Vista Video Pipeline Architecture And Implementation] and [http://msdn2.microsoft.com/en-us/library/ms788119.aspx DirectShow Improvements in Vista]
 +
 
 +
Some rework and enhancements of the DirectX and Direct3D Video Output modules may also be necessary.
 +
 
 +
This project requires C++ experience. Knowledge of the related Win32 APIs is obviously a plus.
 +
 
 +
''Proposed mentor: atmo''
 +
 
 +
=== 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.
 +
 
 +
''mentoring would be done by courmisch''
 +
 
 +
=== 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, Dark_Shikari"
  
 
=== Matroska (mkv) muxing ===
 
=== Matroska (mkv) muxing ===
Line 112: Line 209:
 
''Proposed mentor: djc.''
 
''Proposed mentor: djc.''
  
=== threading/locking consistency/correctness checker===
+
=== Skins improvements ===
This project would create a threading/locking consistency/correctness checker, much like the Linux kernel has, but VLC is simpler as it does not have interrupts.
 
 
 
''mentoring would be done by courmisch''
 
 
 
===  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.
 
 
 
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).
+
Better video output integration.
  
''Proposed mentor: dionoea''
+
Better skin support.
  
=== Vista acceleration and DirectX improvements ===
+
See with [[User:J-b|jb]]
Current versions of {{VLC}} have a lot of problems on Windows Vista (check the forums for specifics).
 
  
We need support for the new EVR (enhanced video renderer) in Windows Vista, and make it the default Video Output module for that OS.
+
=== SVCD handling ===
  
See [http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/MED134_WH06.ppt Windows Vista Video Pipeline Architecture And Implementation] and [http://msdn2.microsoft.com/en-us/library/ms788119.aspx DirectShow Improvements in Vista]
+
Make SVCD's work. Menu selection, navigation and hot spots.  
  
Some rework and enhancements of the DirectX and Direct3D Video Output modules may also be necessary.
+
''Proposed mentor: rockyb.''
  
''Proposed mentor: Quovodis''
+
== Mini Projects - More ideas ==
  
=== Mini Projects - More ideas ===
+
'''Original''' ideas will be '''rewarded.'''
  
 
We have a more general page for ideas for Project in {{VLC}}, that could give you ideas: [[Mini_Projects]].
 
We have a more general page for ideas for Project in {{VLC}}, that could give you ideas: [[Mini_Projects]].
 +
 +
* Visualisation improvements (libprojectM implementation ? )
 +
* Video rework.
  
 
== Questions? Contact us? ==
 
== Questions? Contact us? ==
Line 159: Line 246:
 
* djc
 
* djc
 
* feepk,
 
* feepk,
* Quovodis,
 
 
* pdherbemont,
 
* pdherbemont,
* robUx4
+
* jb,
 +
* funman,
 +
* robUx4,
 +
* BigBen
 +
* rockyb (for VCD/SVCD)
  
 
=== Administrators ===
 
=== Administrators ===
Line 167: Line 257:
 
* xtophe
 
* xtophe
  
[[Category:Activities]]
+
{{GSoC}}
 +
 
 +
[[Category:SoC 2008 Project|*]]

Latest revision as of 06:25, 5 February 2019

Google Summer of Code 2008.

VideoLAN is an official mentoring organization for VLC media player and x264 for Google Summer of Code 2008.

Look at the projects: SoC_2008_projects.

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

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

VLC media player

VLC media player is a cross-platform Multimedia player, and encoding and streaming 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 4 millions from the main website (not including third-party distributions (Linux)), which means about 30 million people have downloaded VLC 0.8.5 from the main website!

You can find more information on VLC on Wikipedia or on this wiki.

Summer of Code

If selected and developed, SoC ideas will be included in the VLC 0.9.1 or any later version release, and covered by the GPL licence.

Ideas

Read this

We (the VideoLAN team, and jb, the author of this page) have split this page 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 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.

We don't want to impose anything. This is free and Open Source software. Last year, many projects were external ideas.

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

Main ideas

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: User:Pdherbemont (backup: courmisch)

MTP Device Service Discovery

This projects consists of adding support for finding and reading content from attached USB MTP (Media Transfer Protocol) devices, such as the Apple iPod, as a Service Discovery and input plugins for VLC.

This project might need improvements in the Service Discovery subsystem for hotplug.

This project needs a student to have a MP3 player device...

You should have a look at libmtp library and at Songbird MTP implementation.

Proposed mentor: funman (backup 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 (backup Yuval Levy)

Interested students: User:Plouj

UPnP media service

This project involves adding support for advertizing the stream on the LAN using Universal Plug'n'Play A/V / DLNA.

Streaming to the PS3 can be one achievement of it.

Using libdlna might be a good idea.

Having a cross platform solution is almost a must.

Proposed mentor: funman

Interested students: Hang Su Mirsal Ennaime[User:herbert]

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

Fullscreen Controller

This project is easy to describe, it would provide a fullscreen controller for Linux/Unix and Windows, as VLC media player already has on Mac OS X version since 0.8.6.

It should:

  • be draggable,
  • be clickable,
  • support the classical control buttons to control VLC playback in fullscreen mode,
  • have all the VLC functionalities in it.

With this project, which is not too long, there should be some related work on Vout (Making sure the video output does not close and reopen between files for example...)

This project needs basic C++ knowledge. Qt knowledge would be a plus.

This project should be doable by any serious student in a summer.

Aim: VLC on Mac fullscreen controller

Proposed mentor: jb (backup atmo)

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: BigBen (backup feepk)

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: pdherbemont, feepk

iPhone / iPod touch port

Port VLC to the iPhone / iPod touch platform.

The student is not required to own such a device due to the availability of a simulator as part of the official SDK, although it may be helpful.

This project requires good C, preferably Obj-C, knowledge and basic skills in shell programming (autotools, ...). Previous experience with development for embedded devices is a strong plus.

Proposed mentor: pdherbemont (backup feepk)

Vista acceleration and DirectX improvements

Current versions of VLC media player have a lot of problems on Windows Vista (check the forums for specifics).

We need support for the new EVR (enhanced video renderer) in Windows Vista, and make it the default Video Output module for that OS.

See Windows Vista Video Pipeline Architecture And Implementation and DirectShow Improvements in Vista

Some rework and enhancements of the DirectX and Direct3D Video Output modules may also be necessary.

This project requires C++ experience. Knowledge of the related Win32 APIs is obviously a plus.

Proposed mentor: atmo

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.

mentoring would be done by courmisch

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, Dark_Shikari"

Matroska (mkv) muxing

This project is about writing a mkv muxer for VLC with advanced support (chapters, multiple audio and multiple subtitles, etc...) like when you need to rip or archive a DVD.

FFMPEG project has a similar project, and we could use the libavformat muxer and adapt ourselves, but we are not sure if we will be able to use therefore all the advanced features.

robUx4 can do the mentoring. He has already wrote the demux and has worked for matroska, so knows it very well.

WinCE port

The WinCE port has been broken for some time now before 0.8.4. Repairing the builds of all the external libraries build and making VLC build and work should take some time :D

Then a rework of the interface should happen.

Proposed mentor: djc.

Skins improvements

Better video output integration.

Better skin support.

See with jb

SVCD handling

Make SVCD's work. Menu selection, navigation and hot spots.

Proposed mentor: rockyb.

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:

Mentors

The proposed mentors are:

  • courmisch,
  • dionoea,
  • djc
  • feepk,
  • pdherbemont,
  • jb,
  • funman,
  • robUx4,
  • BigBen
  • rockyb (for VCD/SVCD)

Administrators

  • jb
  • xtophe


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