Difference between revisions of "SoC 2017"

From VideoLAN Wiki
Jump to navigation Jump to search
Line 1: Line 1:
 
{{DISPLAYTITLE:Google Summer of Code 2017}}
 
{{DISPLAYTITLE:Google Summer of Code 2017}}
  
This page summarize the current list of ideas for VideoLAN project, for [https://summerofcode.withgoogle.com Google Summer Of Code 2017]. The list is not exhaustive, and is not limitative. Feel free to apply with your own idea!
+
This page summarize the current list of ideas for VideoLAN project, for [https://summerofcode.withgoogle.com Google Summer Of Code 2017].
 +
 
 +
The list is not exhaustive, and is not limitative. Feel free to apply with your own idea!
  
 
== Introduction & Information  ==
 
== Introduction & Information  ==
Line 39: Line 41:
  
 
=== Let's get in touch ===
 
=== Let's get in touch ===
 +
 +
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.
 +
 
We have 3 major communication channels: Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics. Furthermore, we have our [http://forum.videolan.org web forums] for VLC-related end-user support - a VLMC section will be created once the product is published. Finally, there is our IRC channel ''#videolan'' (for libVLC) and ''#vlmc'' on the ''Freenode'' network. It's open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.
 
We have 3 major communication channels: Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics. Furthermore, we have our [http://forum.videolan.org web forums] for VLC-related end-user support - a VLMC section will be created once the product is published. Finally, there is our IRC channel ''#videolan'' (for libVLC) and ''#vlmc'' on the ''Freenode'' network. It's open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.
  
== Key ideas for VLMC ==
+
= Key ideas for VLMC =
  
=== Port to Android ===
+
== Port to Android ==
  
 
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, starting by Android.
 
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, starting by Android.
Line 60: Line 65:
 
''Proposed mentors: Geoffrey/Hugo''
 
''Proposed mentors: Geoffrey/Hugo''
  
=== Workflow rework ===
+
== Workflow rework ==
  
 
VLMC is now working on the desktop, but it is quite slow and missing some common use cases.
 
VLMC is now working on the desktop, but it is quite slow and missing some common use cases.
Line 70: Line 75:
 
''Proposed mentors: Hugo''
 
''Proposed mentors: Hugo''
  
=== Workflow audio filters ===
+
== Workflow audio filters ==
  
 
VLMC is now working on the desktop, but it is missing several audio and video filters.
 
VLMC is now working on the desktop, but it is missing several audio and video filters.
Line 78: Line 83:
 
''Proposed mentors: J-B''
 
''Proposed mentors: J-B''
  
=== Workflow video filters ===
+
== Workflow video filters ==
  
 
VLMC is now working on the desktop, but it is missing several audio and video filters.
 
VLMC is now working on the desktop, but it is missing several audio and video filters.
Line 86: Line 91:
 
''Proposed mentors: Felix''
 
''Proposed mentors: Felix''
  
== Key ideas for libVLC ==
+
= Key ideas for libVLC =
  
=== Fuzz libVLC with LibFuzzer ===
+
== Fuzz libVLC with LibFuzzer ==
  
 
libFuzzer ((http://llvm.org/docs/LibFuzzer.html).) is a library for coverage-guided fuzz testing.
 
libFuzzer ((http://llvm.org/docs/LibFuzzer.html).) is a library for coverage-guided fuzz testing.
Line 104: Line 109:
 
''Proposed mentor: tguillem''
 
''Proposed mentor: tguillem''
  
=== libVLC AirPlay support ===
+
== libVLC AirPlay support ==
  
 
libVLC is now able to send video to the ChromeCast devices. We want to be able to do the same using the Airplay protocol, for Apple devices.
 
libVLC is now able to send video to the ChromeCast devices. We want to be able to do the same using the Airplay protocol, for Apple devices.
Line 126: Line 131:
 
''Proposed mentor: steve''
 
''Proposed mentor: steve''
  
=== libVLC UPnP renderer support ===
+
== libVLC UPnP renderer support ==
  
 
libVLC is now able to send video to the ChromeCast devices. We want to be able to do the same using the UPnP Renderer protocol, for all the connected TV devices that support this protocol.
 
libVLC is now able to send video to the ChromeCast devices. We want to be able to do the same using the UPnP Renderer protocol, for all the connected TV devices that support this protocol.
Line 141: Line 146:
 
''Proposed mentor: tguillem''
 
''Proposed mentor: tguillem''
  
=== VLC web interface modern look ===
+
== VLC web interface modern look ==
  
 
The Web interface of VLC is a very ugly player and we want to improve that quite a bit.
 
The Web interface of VLC is a very ugly player and we want to improve that quite a bit.
Line 151: Line 156:
 
''Proposed mentor: David Loiret''
 
''Proposed mentor: David Loiret''
  
=== libVLC 3D video support ===
+
== libVLC 3D video support ==
  
 
libVLC is able to play most 2D and Side-By-Side videos, but the support of 3D is very limited.
 
libVLC is able to play most 2D and Side-By-Side videos, but the support of 3D is very limited.
Line 161: Line 166:
 
''Proposed mentor: adrien''
 
''Proposed mentor: adrien''
  
=== libVLC VR support ===
+
== libVLC VR support ==
  
 
libVLC is able to play most 2D and 360 videos, but the support of VR is very limited.
 
libVLC is able to play most 2D and 360 videos, but the support of VR is very limited.
Line 173: Line 178:
 
''Proposed mentor: adrien''
 
''Proposed mentor: adrien''
  
=== VLC macOS interface rework ===
+
== VLC macOS interface rework ==
  
 
The VLC interface is quite outdated on macOS.
 
The VLC interface is quite outdated on macOS.
Line 183: Line 188:
 
''Proposed mentor: David F''
 
''Proposed mentor: David F''
  
=== VLC Qt interface rework ===
+
== VLC Qt interface rework ==
  
 
The VLC interface is quite outdated on Linux and Windows. It has a lot of features, but some are not properly exposed.
 
The VLC interface is quite outdated on Linux and Windows. It has a lot of features, but some are not properly exposed.
Line 197: Line 202:
 
''Proposed mentor: J-B''
 
''Proposed mentor: J-B''
  
=== VLC cryptographic updates ===
+
== VLC cryptographic updates ==
  
 
VLC is already using GPG signatures to achieve secure updates on the Windows platform. But the updates are currently signed
 
VLC is already using GPG signatures to achieve secure updates on the Windows platform. But the updates are currently signed

Revision as of 23:43, 23 February 2017


This page summarize the current list of ideas for VideoLAN project, for Google Summer Of Code 2017.

The list is not exhaustive, and is not limitative. Feel free to apply with your own idea!

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 VLMC and the libVLC engine.

VideoLAN was a mentoring organization in 2007, 2008, 2009, 2010, 2011, 2013 and 2016.

This page list the ideas for VLMC and libVLC.

VideoLAN Movie Creator

VLMC is a cross-platform non-linear video editing software based on libVLC technology. It was started as a final year student project at the French IT school EPITECH.

VLMC currently awaits a transition to the current libvlc API and it's actual 1.0 release!

libVLC

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

The engine of VLC is libVLC, and is used by VLMC.

Summer of Code

If selected and developed, SoC projects for VLMC and VLC will be included in later releases.

All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.

Compile libVLC or VLMC

This may sound trivial, but it's harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.

Provide a small patch

To demonstrate your skills, share a small patch with us. This will let you become familiar with Git, in case you don't know it already and our process on merging patches.

Let's get in touch

If you have a doubt, are not sure about anything or want clarification, please get in touch with us.

We have 3 major communication channels: Our mailing-lists to discuss patches and further development related topics. Furthermore, we have our web forums for VLC-related end-user support - a VLMC section will be created once the product is published. Finally, there is our IRC channel #videolan (for libVLC) and #vlmc on the Freenode network. It's open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.

Key ideas for VLMC

Port to Android

VLMC is now working on the desktop. It would be nice to port it also to the mobile world, starting by Android.

This project would require to adapt to smaller screens, and simplify the UI to fit the Android workflow.

What needs to be done:

  1. Fix the VLMC build on Android. As libVLC works fine on Android, this is more focused on compiling the Qt part for Android.
  2. Then, split more parts of the UI in components that are reusable on mobile.
  3. Change the components to fit the small resolutions of the Android devices.
  4. Rewrite some UI components in QML.
  5. Write a simpler timeline widget for Mobile workflows.

This project requires C++/Qt/qml knowledge, and access to Android devices.

Proposed mentors: Geoffrey/Hugo

Workflow rework

VLMC is now working on the desktop, but it is quite slow and missing some common use cases.

This should be fixed in MLT framework backend for libVLC. See the work from the previous Summer of Code.

The current VLC MLT backend is written in C, but needs polishing. An effort to move this to a cleaner state in C++ has started and needs to be continued. It would be nice to have this code merged upstream so we don't need to have a out of tree MLT backend.

Proposed mentors: Hugo

Workflow audio filters

VLMC is now working on the desktop, but it is missing several audio and video filters.

This project would add audio filters on the MLT framework backend using the LADSPA library or a similar open source library.

Proposed mentors: J-B

Workflow video filters

VLMC is now working on the desktop, but it is missing several audio and video filters.

This project would add video filters on the MLT framework backend using the lv2 library or a similar open source library.

Proposed mentors: Felix

Key ideas for libVLC

Fuzz libVLC with LibFuzzer

libFuzzer ((http://llvm.org/docs/LibFuzzer.html).) is a library for coverage-guided fuzz testing.

  • The first step of this GSoC project is to implement Fuzz Targets (http://llvm.org/docs/LibFuzzer.html#fuzz-target) to test various parts of the libVLC project. The non exhaustive parts will be the following libVLC modules API: "decoder", "encoder, "access", "packetizer", "demuxer". For each parts, the student will have to understand the module API in order to effectively implement the target.
  • The second step is to find valid corpus (http://llvm.org/docs/LibFuzzer.html#corpus) for every module types and for every modules (mkv input for mkv demuxer, mp4 input for mp4 demuxer, h264 input for h264 decoder...).
  • The third step is to host and run the fuzzer. It's not decided yet if the fuzzer will be hosted by google (https://github.com/google/oss-fuzz) or by the VideoLan association.
  • If there is enough time, the fourth and final step is to fix the issues that has emerged during the previous steps.

This project requires C and C++ knowledge.

Proposed mentor: tguillem

libVLC AirPlay support

libVLC is now able to send video to the ChromeCast devices. We want to be able to do the same using the Airplay protocol, for Apple devices.

We want to be able to cast from any device, including Android or Windows machines, on all support Airplay devices, like Apple TV, iOS devices and audio amplificators.

This will use the new renderer APIs added in libVLC 3.0. Those APIs will need to be extended to allow the renderer to kick in during the playback.

Please have a look at the following files:

A motivated and fast enough student could pair this task with the UPnP renderer!

The work will consist of the following tasks:

  • documentation on the AirPlay protocol,
  • implementation of the detection/discovery of the supported devices,
  • implementation of the protocol to discuss with the device,
  • modify the control to transcode on demand,
  • polish and release.

This project requires C knowledge and access to some Airplay devices.

Proposed mentor: steve

libVLC UPnP renderer support

libVLC is now able to send video to the ChromeCast devices. We want to be able to do the same using the UPnP Renderer protocol, for all the connected TV devices that support this protocol.

We want to be able to do that from any device, including Android, iOS or Windows machines.

This will use the new renderer APIs added in libVLC 3.0. Those APIs will need to be extended to allow the renderer to kick in during the playback.

Please have a look at the following files:

A motivated and fast enough student could pair this task with the Airplay renderer!

This project requires C knowledge and access to some connected TV supporting this protocol.

Proposed mentor: tguillem

VLC web interface modern look

The Web interface of VLC is a very ugly player and we want to improve that quite a bit.

This can be done in React, RxJS or Vue.JS to achieve a modern look, with transparency and cross-platform support.

This project requires JavaScript knowledge and experience. The choice of the Framework can be changed if needed.

Proposed mentor: David Loiret

libVLC 3D video support

libVLC is able to play most 2D and Side-By-Side videos, but the support of 3D is very limited.

Because of 360 and VR support, the attention about 3D is getting very popular those days. We need to support that in libVLC.

This project requires C knowledge.

Proposed mentor: adrien

libVLC VR support

libVLC is able to play most 2D and 360 videos, but the support of VR is very limited.

Because of 360 and VR support, the attention about VR is getting very popular those days. We need to support that in libVLC.

This project is mostly connecting a new headset to libVLC to get support in all libVLC applications.

This project requires C knowledge.

Proposed mentor: adrien

VLC macOS interface rework

The VLC interface is quite outdated on macOS.

This project for the summer is to rework heavily this interface to make it beautiful and useful again.

This project requires Obj-C knowledge.

Proposed mentor: David F

VLC Qt interface rework

The VLC interface is quite outdated on Linux and Windows. It has a lot of features, but some are not properly exposed.

This project for the summer is to rework heavily this interface to make it beautiful and useful again.

Ultimately, the idea is to get closer to what the WinRT/UWP interface looks like. It is simpler, more user friendly, and has a better "media center" feel into it.

Qml is the preferred way of improving the UI, but switching to Qml directly is probably too steep of a road at start.

This project requires Qt/C++ knowledge.

Proposed mentor: J-B

VLC cryptographic updates

VLC is already using GPG signatures to achieve secure updates on the Windows platform. But the updates are currently signed with a single master key which is pinned into the source code and VLCs in the wild aren't able to check for revocations of this key.

Therefore we would like to improve this situation by:

  • being able to sign developers' keys that can sign VLC binaries on behalf of this master key
  • support revocations of these developer's key
  • provide a master key upgrade path

This project requires solid notions of C and Crypto.

Proposed mentor: geal


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