<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tguillem</id>
	<title>VideoLAN Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tguillem"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Tguillem/"/>
	<updated>2026-11-04T15:56:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2019&amp;diff=57377</id>
		<title>SoC 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2019&amp;diff=57377"/>
		<updated>2019-02-01T15:12:20Z</updated>

		<summary type="html">&lt;p&gt;Tguillem: /* Interactive movie support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2019}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page summarize the current list of ideas for VideoLAN project, for [https://summerofcode.withgoogle.com Google Summer Of Code 2019].&lt;br /&gt;
&lt;br /&gt;
The list is not exhaustive, and is not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp;amp; Information  ==&lt;br /&gt;
[[File:Asterix VLC.svg|frameless|right]]&lt;br /&gt;
&lt;br /&gt;
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 [[VLMC]] and [[VLC]] (or the [[libVLC]] engine).&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for &#039;&#039;&#039;university students&#039;&#039;&#039; to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]], [[SoC_2017|2017]] and [[SoC_2018|2018]]. &lt;br /&gt;
&lt;br /&gt;
This page list some ideas for Summer of Code projects on VLMC, libVLC and {{VLC}}.&lt;br /&gt;
&lt;br /&gt;
=== VLC &amp;amp; libVLC  ===&lt;br /&gt;
&lt;br /&gt;
{{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. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 23 millions from the main website and that&#039;s not including third-party distributions (Linux)! &lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
The engine of VLC is &#039;&#039;&#039;libVLC&#039;&#039;&#039;, and is used by &#039;&#039;&#039;VLMC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN Movie Creator ===&lt;br /&gt;
[[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 [http://www.epitech.eu EPITECH].&lt;br /&gt;
&lt;br /&gt;
[[VLMC]] currently awaits a transition to the current libvlc API and it&#039;s actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code  ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLMC and VLC will be included in later releases.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.&lt;br /&gt;
&lt;br /&gt;
== How to Start ==&lt;br /&gt;
=== Find an idea ===&lt;br /&gt;
First, you need to find an idea.&lt;br /&gt;
&lt;br /&gt;
This current page gives you a list of ideas. Those ideas are &#039;&#039;&#039;NOT exhaustive&#039;&#039;&#039;: you can bring your own idea! Some of the best ideas we&#039;ve ever had were &#039;&#039;&#039;custom&#039;&#039;&#039; ideas!&lt;br /&gt;
&lt;br /&gt;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
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 &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;Freenode&#039;&#039; network. It&#039;s open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Qt interface redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on Linux and Windows. It has a lot of features, but some are not properly exposed.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the WinRT/UWP interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The WinRT interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the preferred way of improving the current UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Qt/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC macOS interface  redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on macOS.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the Apple TV/iOS interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The iOS/AppleTV interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Starting from the current UI is a requirement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU shader filters ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines. It is now possible to do all kinds of video processing that was done in the CPU directly in the GPU.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to port some of the existing CPU filters to the GPU using shaders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The first task will be to identify all the video filters in VLC and identify the ones that could be done as shaders. Then implement them. Either in OpenGL shaders, Direct3D11 shaders, both and maybe Vulkan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;OpenGL&#039;&#039;&#039; or &#039;&#039;&#039;Direct3D11&#039;&#039;&#039; shaders knowledge as well as knowledge on video filters in general.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Integrate JS engine in VLC ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is scriptable today with the Lua programming language. While slim and efficient, it is a less known programming language than other, like JS.&lt;br /&gt;
&lt;br /&gt;
The goal is to create a PoC to get a small JS engine inside of VLC to program extensions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Find the correct JS engine for VLC use-case&lt;br /&gt;
* Embed the engine in VLC&lt;br /&gt;
* Map the VLC calls to JS&lt;br /&gt;
* Write some extensions&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC on Android Testsuite ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC on Android is the port of VLC on the Android platform. It is one of the most used version of VLC.&lt;br /&gt;
&lt;br /&gt;
Sadly it currently doesn&#039;t have any tests that ensure the stability of playback and deterministic behavior.&lt;br /&gt;
This can lead to regressions that are noticed too late and unexpected behavior that sometimes even make it into the Playstore, notably across Android versions.&lt;br /&gt;
&lt;br /&gt;
The project for this summer is to build a Testsuite around libvlc-onAndroid to ensure that the library becomes and stays stable and interface tests.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Get an overview of the current behavior of the Android version. &lt;br /&gt;
*Write a suite with different testtargets to ensure the correct behavior of the main UI views&lt;br /&gt;
*Use so called &amp;quot;stubbing&amp;quot; and &amp;quot;mocking&amp;quot; of classes for testing purposes&lt;br /&gt;
*Make sure that the testtarget runs once every day on gitlab to ensure that no regressions have been introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Java&#039;&#039;&#039; and &#039;&#039;&#039;Kotlin&#039;&#039;&#039; knowledge and some development on Android.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Geoffrey Metais&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLCKit Testsuite ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit is the wrapper framework around libvlc that powers VLC for iOS and the respective tvOS app.&lt;br /&gt;
The framework is furthermore used by thousands of Apps all over the world and subject to everyday change. &lt;br /&gt;
&lt;br /&gt;
Sadly it currently doesn&#039;t have any tests that ensure the stability of playback and deterministic behavior.&lt;br /&gt;
This frequently leads to regressions that are noticed too late and unexpected behavior that sometimes even make it into the Appstore. &lt;br /&gt;
&lt;br /&gt;
The project for this summer is to build a Testsuite around VLCKit to ensure that the framwork becomes and stays stable.&lt;br /&gt;
This indirectly has a huge impact on the stability of the macOS app since iOS and macOS share a code base.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Get an overview of the current behavior of the Framework. &lt;br /&gt;
*Write a suite with different testtargets to ensure the correct behavior of every single class&lt;br /&gt;
*Use so called &amp;quot;stubbing&amp;quot; and &amp;quot;mocking&amp;quot; of classes for testing purposes&lt;br /&gt;
*Make sure that the testtarget runs once every day on jenkins to ensure that no regressions have been introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge and ideally knowledge of writing tests for iOS but this can be learned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Carola Nitz, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Open Source Fuzzing platform ==&lt;br /&gt;
&lt;br /&gt;
The idea of this project is to develop a new web platform to support fuzzing or code analysis, like oss_fuzz, but open source.&amp;lt;br /&amp;gt;&lt;br /&gt;
That would allow to see the defects, to be able to act on them.&lt;br /&gt;
&lt;br /&gt;
It should be adaptable for clang-analyser or other similar tools.&lt;br /&gt;
&lt;br /&gt;
It can be based on gitlab, if needed, but should be developed in Go.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Go&#039;&#039;&#039; knowledge and ideally knowledge of &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Hugo Beauzée-Luyssen&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Interactive movie support ==&lt;br /&gt;
&lt;br /&gt;
The idea is to add support for interactive movies inside VLC using the matroska.org mkv format. An interactive movie is like a gamebook but for movies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extend the MKV spec to add support for titles, menus, that will be used by interactive movies&lt;br /&gt;
* Improve a MKV muxing tool (ffmpeg, mkvtoolnix) to support the extended spec&lt;br /&gt;
* Add interactive movies support inside VLC&#039;s MKV module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Other ideas for VLC &amp;amp; libVLC ==&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
&lt;br /&gt;
* Integrate Rust inside VLC, as a demuxer or a parser&lt;br /&gt;
* Work on the Vulkan output for VLC&lt;br /&gt;
* MPD server inside VLC&lt;br /&gt;
* Improve fast-seek in MP4 and WMV demuxers&lt;br /&gt;
* Improve id3 tag parsing.&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Bridge module for GMI&#039;C or other video filters&lt;br /&gt;
* Automated Testing Environment like ffmpeg Fate (port ?) for demuxing, non-hw decoding&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLMC =&lt;br /&gt;
&lt;br /&gt;
== Port to Android ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, starting by Android.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the Android workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for Android. As libVLC works fine on Android, this is more focused on compiling the Qt part for Android.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the Android devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Geoffrey/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Port to iOS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, also on iOS.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the iOS workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for iOS. As libVLC works fine on iOS, this is more focused on compiling the Qt part for iOS.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the iOS devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Workflow rework ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but the media workflow is quite slow and is missing some common use cases.&lt;br /&gt;
&lt;br /&gt;
This should be fixed in [https://github.com/mltframework/mlt MLT] framework backend for libVLC and is the continuation from the work from the previous Summer of Code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the MLT libVLC backend codebase,&lt;br /&gt;
# Clean the backend and port it to a cleaner code state in C++,&lt;br /&gt;
# Benchmark the code and make it more efficient,&lt;br /&gt;
# Work to merge this backend upstream,&lt;br /&gt;
# Implement all the missing features in libVLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge, and understanding of multimedia concepts is a good positive point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow audio filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of audio filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add audio filters on the MLT framework backend using the [https://en.wikipedia.org/wiki/LADSPA LADSPA]/[http://lv2plug.in/ LV2] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Prepare visualizations, and notably for soundwave filters,&lt;br /&gt;
# Integrate those inside the timeline UI,&lt;br /&gt;
# Optimize.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and enough understanding of audio.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow video filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of video filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add video filters on the MLT framework backend using the [https://git.sesse.net/?p=movit;a=summary movit] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Add transitions between clips&lt;br /&gt;
# Code the interface to manage those transitions,&lt;br /&gt;
# Optimize the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve multiplatform support ==&lt;br /&gt;
VLMC is aiming at being fully cross platform, but drifted a bit from that goal. While most VLMC&#039;s code is cross platform, and can be easily built targeting platforms, some dependencies might prove more difficult to build or compose with VLMC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix MLT cross compilation for Windows (This will most likely require patching directly inside MLT, all contributions must be sent upstream). &lt;br /&gt;
# Fix medialibrary code &amp;amp; build process on macOS (and potentially iOS). The medialibrary misses some platform specific code to be able to list all connected drives (hard drives &amp;amp; USB removable storage, mostly) along with filesystem browsing&lt;br /&gt;
# Update the documentation along the way&lt;br /&gt;
# Create jenkins build configuration to have nightly builds on jenkins.videolan.org &amp;amp; nightlies.videolan.org for all supported platforms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires buildsystems/toolchains knowledge, basic system programming on macOS &amp;amp; Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remote UI ==&lt;br /&gt;
&lt;br /&gt;
We would like to have a way to use VLMC from a web browser. You can easily imagine having a nice, shiny &amp;amp; simple UI for minimal movie edition, which would go hand in hand with the cloud storage feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
This task aims toward the uncoupling of the rendering backend &amp;amp; UI, as the renderer will run server side, while the UI runs on the client side.&lt;br /&gt;
&lt;br /&gt;
The idea is to be able to have a UI interacting with the renderer without having to be in the same process, or even machine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: jb, chouquette, fkuehne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== libmicrodns refactoring ==&lt;br /&gt;
&lt;br /&gt;
Our current mDNS discoverer is working, but is not so respectful of the RFC.&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* Device TTL support&lt;br /&gt;
* Device removal detection&lt;br /&gt;
* Better request pacing&lt;br /&gt;
* Delegate socket interactions to the caller&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DAV1D Arm NEON optimization ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV1 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Profiling to identify hotspots of new libdav1d video decoder on arm64 across common test files&lt;br /&gt;
* Analysis of potential benefits of Neon SIMD for these hotspots&lt;br /&gt;
* Write arm64 NEON optimization using directly written arm64 Neon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;/div&gt;</summary>
		<author><name>Tguillem</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2019&amp;diff=57376</id>
		<title>SoC 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2019&amp;diff=57376"/>
		<updated>2019-02-01T15:11:47Z</updated>

		<summary type="html">&lt;p&gt;Tguillem: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2019}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page summarize the current list of ideas for VideoLAN project, for [https://summerofcode.withgoogle.com Google Summer Of Code 2019].&lt;br /&gt;
&lt;br /&gt;
The list is not exhaustive, and is not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp;amp; Information  ==&lt;br /&gt;
[[File:Asterix VLC.svg|frameless|right]]&lt;br /&gt;
&lt;br /&gt;
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 [[VLMC]] and [[VLC]] (or the [[libVLC]] engine).&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for &#039;&#039;&#039;university students&#039;&#039;&#039; to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]], [[SoC_2017|2017]] and [[SoC_2018|2018]]. &lt;br /&gt;
&lt;br /&gt;
This page list some ideas for Summer of Code projects on VLMC, libVLC and {{VLC}}.&lt;br /&gt;
&lt;br /&gt;
=== VLC &amp;amp; libVLC  ===&lt;br /&gt;
&lt;br /&gt;
{{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. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 23 millions from the main website and that&#039;s not including third-party distributions (Linux)! &lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
The engine of VLC is &#039;&#039;&#039;libVLC&#039;&#039;&#039;, and is used by &#039;&#039;&#039;VLMC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN Movie Creator ===&lt;br /&gt;
[[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 [http://www.epitech.eu EPITECH].&lt;br /&gt;
&lt;br /&gt;
[[VLMC]] currently awaits a transition to the current libvlc API and it&#039;s actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code  ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLMC and VLC will be included in later releases.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.&lt;br /&gt;
&lt;br /&gt;
== How to Start ==&lt;br /&gt;
=== Find an idea ===&lt;br /&gt;
First, you need to find an idea.&lt;br /&gt;
&lt;br /&gt;
This current page gives you a list of ideas. Those ideas are &#039;&#039;&#039;NOT exhaustive&#039;&#039;&#039;: you can bring your own idea! Some of the best ideas we&#039;ve ever had were &#039;&#039;&#039;custom&#039;&#039;&#039; ideas!&lt;br /&gt;
&lt;br /&gt;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
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 &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;Freenode&#039;&#039; network. It&#039;s open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Qt interface redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on Linux and Windows. It has a lot of features, but some are not properly exposed.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the WinRT/UWP interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The WinRT interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the preferred way of improving the current UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Qt/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC macOS interface  redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on macOS.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the Apple TV/iOS interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The iOS/AppleTV interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Starting from the current UI is a requirement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU shader filters ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines. It is now possible to do all kinds of video processing that was done in the CPU directly in the GPU.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to port some of the existing CPU filters to the GPU using shaders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The first task will be to identify all the video filters in VLC and identify the ones that could be done as shaders. Then implement them. Either in OpenGL shaders, Direct3D11 shaders, both and maybe Vulkan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;OpenGL&#039;&#039;&#039; or &#039;&#039;&#039;Direct3D11&#039;&#039;&#039; shaders knowledge as well as knowledge on video filters in general.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Integrate JS engine in VLC ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is scriptable today with the Lua programming language. While slim and efficient, it is a less known programming language than other, like JS.&lt;br /&gt;
&lt;br /&gt;
The goal is to create a PoC to get a small JS engine inside of VLC to program extensions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Find the correct JS engine for VLC use-case&lt;br /&gt;
* Embed the engine in VLC&lt;br /&gt;
* Map the VLC calls to JS&lt;br /&gt;
* Write some extensions&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC on Android Testsuite ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC on Android is the port of VLC on the Android platform. It is one of the most used version of VLC.&lt;br /&gt;
&lt;br /&gt;
Sadly it currently doesn&#039;t have any tests that ensure the stability of playback and deterministic behavior.&lt;br /&gt;
This can lead to regressions that are noticed too late and unexpected behavior that sometimes even make it into the Playstore, notably across Android versions.&lt;br /&gt;
&lt;br /&gt;
The project for this summer is to build a Testsuite around libvlc-onAndroid to ensure that the library becomes and stays stable and interface tests.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Get an overview of the current behavior of the Android version. &lt;br /&gt;
*Write a suite with different testtargets to ensure the correct behavior of the main UI views&lt;br /&gt;
*Use so called &amp;quot;stubbing&amp;quot; and &amp;quot;mocking&amp;quot; of classes for testing purposes&lt;br /&gt;
*Make sure that the testtarget runs once every day on gitlab to ensure that no regressions have been introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Java&#039;&#039;&#039; and &#039;&#039;&#039;Kotlin&#039;&#039;&#039; knowledge and some development on Android.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Geoffrey Metais&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLCKit Testsuite ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit is the wrapper framework around libvlc that powers VLC for iOS and the respective tvOS app.&lt;br /&gt;
The framework is furthermore used by thousands of Apps all over the world and subject to everyday change. &lt;br /&gt;
&lt;br /&gt;
Sadly it currently doesn&#039;t have any tests that ensure the stability of playback and deterministic behavior.&lt;br /&gt;
This frequently leads to regressions that are noticed too late and unexpected behavior that sometimes even make it into the Appstore. &lt;br /&gt;
&lt;br /&gt;
The project for this summer is to build a Testsuite around VLCKit to ensure that the framwork becomes and stays stable.&lt;br /&gt;
This indirectly has a huge impact on the stability of the macOS app since iOS and macOS share a code base.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Get an overview of the current behavior of the Framework. &lt;br /&gt;
*Write a suite with different testtargets to ensure the correct behavior of every single class&lt;br /&gt;
*Use so called &amp;quot;stubbing&amp;quot; and &amp;quot;mocking&amp;quot; of classes for testing purposes&lt;br /&gt;
*Make sure that the testtarget runs once every day on jenkins to ensure that no regressions have been introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge and ideally knowledge of writing tests for iOS but this can be learned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Carola Nitz, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Open Source Fuzzing platform ==&lt;br /&gt;
&lt;br /&gt;
The idea of this project is to develop a new web platform to support fuzzing or code analysis, like oss_fuzz, but open source.&amp;lt;br /&amp;gt;&lt;br /&gt;
That would allow to see the defects, to be able to act on them.&lt;br /&gt;
&lt;br /&gt;
It should be adaptable for clang-analyser or other similar tools.&lt;br /&gt;
&lt;br /&gt;
It can be based on gitlab, if needed, but should be developed in Go.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Go&#039;&#039;&#039; knowledge and ideally knowledge of &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Hugo Beauzée-Luyssen&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Interactive movie support ==&lt;br /&gt;
&lt;br /&gt;
The idea is to add support for interactive movies inside VLC using the matroska.org mkv format. An interactive movie is like a gamebook but for movies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extend the MKV spec to add support for titles, menus, that will be used by interactive movies&lt;br /&gt;
* Improve a MKV muxing tool (ffmpeg, mkvtoolnix) to support the extended spec&lt;br /&gt;
* Add interactive movies support in VLC&#039;s MKV module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Other ideas for VLC &amp;amp; libVLC ==&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
&lt;br /&gt;
* Integrate Rust inside VLC, as a demuxer or a parser&lt;br /&gt;
* Work on the Vulkan output for VLC&lt;br /&gt;
* MPD server inside VLC&lt;br /&gt;
* Improve fast-seek in MP4 and WMV demuxers&lt;br /&gt;
* Improve id3 tag parsing.&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Bridge module for GMI&#039;C or other video filters&lt;br /&gt;
* Automated Testing Environment like ffmpeg Fate (port ?) for demuxing, non-hw decoding&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLMC =&lt;br /&gt;
&lt;br /&gt;
== Port to Android ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, starting by Android.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the Android workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for Android. As libVLC works fine on Android, this is more focused on compiling the Qt part for Android.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the Android devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Geoffrey/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Port to iOS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, also on iOS.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the iOS workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for iOS. As libVLC works fine on iOS, this is more focused on compiling the Qt part for iOS.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the iOS devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Workflow rework ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but the media workflow is quite slow and is missing some common use cases.&lt;br /&gt;
&lt;br /&gt;
This should be fixed in [https://github.com/mltframework/mlt MLT] framework backend for libVLC and is the continuation from the work from the previous Summer of Code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the MLT libVLC backend codebase,&lt;br /&gt;
# Clean the backend and port it to a cleaner code state in C++,&lt;br /&gt;
# Benchmark the code and make it more efficient,&lt;br /&gt;
# Work to merge this backend upstream,&lt;br /&gt;
# Implement all the missing features in libVLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge, and understanding of multimedia concepts is a good positive point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow audio filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of audio filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add audio filters on the MLT framework backend using the [https://en.wikipedia.org/wiki/LADSPA LADSPA]/[http://lv2plug.in/ LV2] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Prepare visualizations, and notably for soundwave filters,&lt;br /&gt;
# Integrate those inside the timeline UI,&lt;br /&gt;
# Optimize.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and enough understanding of audio.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow video filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of video filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add video filters on the MLT framework backend using the [https://git.sesse.net/?p=movit;a=summary movit] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Add transitions between clips&lt;br /&gt;
# Code the interface to manage those transitions,&lt;br /&gt;
# Optimize the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve multiplatform support ==&lt;br /&gt;
VLMC is aiming at being fully cross platform, but drifted a bit from that goal. While most VLMC&#039;s code is cross platform, and can be easily built targeting platforms, some dependencies might prove more difficult to build or compose with VLMC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix MLT cross compilation for Windows (This will most likely require patching directly inside MLT, all contributions must be sent upstream). &lt;br /&gt;
# Fix medialibrary code &amp;amp; build process on macOS (and potentially iOS). The medialibrary misses some platform specific code to be able to list all connected drives (hard drives &amp;amp; USB removable storage, mostly) along with filesystem browsing&lt;br /&gt;
# Update the documentation along the way&lt;br /&gt;
# Create jenkins build configuration to have nightly builds on jenkins.videolan.org &amp;amp; nightlies.videolan.org for all supported platforms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires buildsystems/toolchains knowledge, basic system programming on macOS &amp;amp; Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remote UI ==&lt;br /&gt;
&lt;br /&gt;
We would like to have a way to use VLMC from a web browser. You can easily imagine having a nice, shiny &amp;amp; simple UI for minimal movie edition, which would go hand in hand with the cloud storage feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
This task aims toward the uncoupling of the rendering backend &amp;amp; UI, as the renderer will run server side, while the UI runs on the client side.&lt;br /&gt;
&lt;br /&gt;
The idea is to be able to have a UI interacting with the renderer without having to be in the same process, or even machine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: jb, chouquette, fkuehne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== libmicrodns refactoring ==&lt;br /&gt;
&lt;br /&gt;
Our current mDNS discoverer is working, but is not so respectful of the RFC.&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* Device TTL support&lt;br /&gt;
* Device removal detection&lt;br /&gt;
* Better request pacing&lt;br /&gt;
* Delegate socket interactions to the caller&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DAV1D Arm NEON optimization ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV1 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Profiling to identify hotspots of new libdav1d video decoder on arm64 across common test files&lt;br /&gt;
* Analysis of potential benefits of Neon SIMD for these hotspots&lt;br /&gt;
* Write arm64 NEON optimization using directly written arm64 Neon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;/div&gt;</summary>
		<author><name>Tguillem</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2019&amp;diff=57375</id>
		<title>SoC 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2019&amp;diff=57375"/>
		<updated>2019-02-01T13:29:29Z</updated>

		<summary type="html">&lt;p&gt;Tguillem: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2019}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page summarize the current list of ideas for VideoLAN project, for [https://summerofcode.withgoogle.com Google Summer Of Code 2019].&lt;br /&gt;
&lt;br /&gt;
The list is not exhaustive, and is not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp;amp; Information  ==&lt;br /&gt;
[[File:Asterix VLC.svg|frameless|right]]&lt;br /&gt;
&lt;br /&gt;
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 [[VLMC]] and [[VLC]] (or the [[libVLC]] engine).&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for &#039;&#039;&#039;university students&#039;&#039;&#039; to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]], [[SoC_2017|2017]] and [[SoC_2018|2018]]. &lt;br /&gt;
&lt;br /&gt;
This page list some ideas for Summer of Code projects on VLMC, libVLC and {{VLC}}.&lt;br /&gt;
&lt;br /&gt;
=== VLC &amp;amp; libVLC  ===&lt;br /&gt;
&lt;br /&gt;
{{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. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 23 millions from the main website and that&#039;s not including third-party distributions (Linux)! &lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
The engine of VLC is &#039;&#039;&#039;libVLC&#039;&#039;&#039;, and is used by &#039;&#039;&#039;VLMC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN Movie Creator ===&lt;br /&gt;
[[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 [http://www.epitech.eu EPITECH].&lt;br /&gt;
&lt;br /&gt;
[[VLMC]] currently awaits a transition to the current libvlc API and it&#039;s actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code  ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLMC and VLC will be included in later releases.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.&lt;br /&gt;
&lt;br /&gt;
== How to Start ==&lt;br /&gt;
=== Find an idea ===&lt;br /&gt;
First, you need to find an idea.&lt;br /&gt;
&lt;br /&gt;
This current page gives you a list of ideas. Those ideas are &#039;&#039;&#039;NOT exhaustive&#039;&#039;&#039;: you can bring your own idea! Some of the best ideas we&#039;ve ever had were &#039;&#039;&#039;custom&#039;&#039;&#039; ideas!&lt;br /&gt;
&lt;br /&gt;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
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 &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;Freenode&#039;&#039; network. It&#039;s open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Qt interface redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on Linux and Windows. It has a lot of features, but some are not properly exposed.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the WinRT/UWP interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The WinRT interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the preferred way of improving the current UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Qt/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC macOS interface  redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on macOS.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the Apple TV/iOS interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The iOS/AppleTV interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Starting from the current UI is a requirement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU shader filters ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines. It is now possible to do all kinds of video processing that was done in the CPU directly in the GPU.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to port some of the existing CPU filters to the GPU using shaders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The first task will be to identify all the video filters in VLC and identify the ones that could be done as shaders. Then implement them. Either in OpenGL shaders, Direct3D11 shaders, both and maybe Vulkan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;OpenGL&#039;&#039;&#039; or &#039;&#039;&#039;Direct3D11&#039;&#039;&#039; shaders knowledge as well as knowledge on video filters in general.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Integrate JS engine in VLC ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is scriptable today with the Lua programming language. While slim and efficient, it is a less known programming language than other, like JS.&lt;br /&gt;
&lt;br /&gt;
The goal is to create a PoC to get a small JS engine inside of VLC to program extensions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Find the correct JS engine for VLC use-case&lt;br /&gt;
* Embed the engine in VLC&lt;br /&gt;
* Map the VLC calls to JS&lt;br /&gt;
* Write some extensions&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC on Android Testsuite ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC on Android is the port of VLC on the Android platform. It is one of the most used version of VLC.&lt;br /&gt;
&lt;br /&gt;
Sadly it currently doesn&#039;t have any tests that ensure the stability of playback and deterministic behavior.&lt;br /&gt;
This can lead to regressions that are noticed too late and unexpected behavior that sometimes even make it into the Playstore, notably across Android versions.&lt;br /&gt;
&lt;br /&gt;
The project for this summer is to build a Testsuite around libvlc-onAndroid to ensure that the library becomes and stays stable and interface tests.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Get an overview of the current behavior of the Android version. &lt;br /&gt;
*Write a suite with different testtargets to ensure the correct behavior of the main UI views&lt;br /&gt;
*Use so called &amp;quot;stubbing&amp;quot; and &amp;quot;mocking&amp;quot; of classes for testing purposes&lt;br /&gt;
*Make sure that the testtarget runs once every day on gitlab to ensure that no regressions have been introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Java&#039;&#039;&#039; and &#039;&#039;&#039;Kotlin&#039;&#039;&#039; knowledge and some development on Android.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Geoffrey Metais&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLCKit Testsuite ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit is the wrapper framework around libvlc that powers VLC for iOS and the respective tvOS app.&lt;br /&gt;
The framework is furthermore used by thousands of Apps all over the world and subject to everyday change. &lt;br /&gt;
&lt;br /&gt;
Sadly it currently doesn&#039;t have any tests that ensure the stability of playback and deterministic behavior.&lt;br /&gt;
This frequently leads to regressions that are noticed too late and unexpected behavior that sometimes even make it into the Appstore. &lt;br /&gt;
&lt;br /&gt;
The project for this summer is to build a Testsuite around VLCKit to ensure that the framwork becomes and stays stable.&lt;br /&gt;
This indirectly has a huge impact on the stability of the macOS app since iOS and macOS share a code base.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Get an overview of the current behavior of the Framework. &lt;br /&gt;
*Write a suite with different testtargets to ensure the correct behavior of every single class&lt;br /&gt;
*Use so called &amp;quot;stubbing&amp;quot; and &amp;quot;mocking&amp;quot; of classes for testing purposes&lt;br /&gt;
*Make sure that the testtarget runs once every day on jenkins to ensure that no regressions have been introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge and ideally knowledge of writing tests for iOS but this can be learned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Carola Nitz, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Open Source Fuzzing platform ==&lt;br /&gt;
&lt;br /&gt;
The idea of this project is to develop a new web platform to support fuzzing or code analysis, like oss_fuzz, but open source.&amp;lt;br /&amp;gt;&lt;br /&gt;
That would allow to see the defects, to be able to act on them.&lt;br /&gt;
&lt;br /&gt;
It should be adaptable for clang-analyser or other similar tools.&lt;br /&gt;
&lt;br /&gt;
It can be based on gitlab, if needed, but should be developed in Go.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Go&#039;&#039;&#039; knowledge and ideally knowledge of &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Hugo Beauzée-Luyssen&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Interactive movie support ==&lt;br /&gt;
&lt;br /&gt;
The idea is to add support for interactive movies inside VLC using the matroska.org mkv format. An interactive movie is like a gamebook but for movies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extend the MKV spec to add support for titles, menus, that will be used by interactive movies&lt;br /&gt;
* Extend a MKV encoding tool (ffmpeg, mkvtoolnix) to support the extended spec&lt;br /&gt;
* Add interactive movies support in VLC&#039;s MKV module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Other ideas for VLC &amp;amp; libVLC ==&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
&lt;br /&gt;
* Integrate Rust inside VLC, as a demuxer or a parser&lt;br /&gt;
* Work on the Vulkan output for VLC&lt;br /&gt;
* MPD server inside VLC&lt;br /&gt;
* Improve fast-seek in MP4 and WMV demuxers&lt;br /&gt;
* Improve id3 tag parsing.&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Bridge module for GMI&#039;C or other video filters&lt;br /&gt;
* Automated Testing Environment like ffmpeg Fate (port ?) for demuxing, non-hw decoding&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLMC =&lt;br /&gt;
&lt;br /&gt;
== Port to Android ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, starting by Android.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the Android workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for Android. As libVLC works fine on Android, this is more focused on compiling the Qt part for Android.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the Android devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Geoffrey/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Port to iOS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, also on iOS.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the iOS workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for iOS. As libVLC works fine on iOS, this is more focused on compiling the Qt part for iOS.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the iOS devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Workflow rework ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but the media workflow is quite slow and is missing some common use cases.&lt;br /&gt;
&lt;br /&gt;
This should be fixed in [https://github.com/mltframework/mlt MLT] framework backend for libVLC and is the continuation from the work from the previous Summer of Code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the MLT libVLC backend codebase,&lt;br /&gt;
# Clean the backend and port it to a cleaner code state in C++,&lt;br /&gt;
# Benchmark the code and make it more efficient,&lt;br /&gt;
# Work to merge this backend upstream,&lt;br /&gt;
# Implement all the missing features in libVLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge, and understanding of multimedia concepts is a good positive point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow audio filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of audio filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add audio filters on the MLT framework backend using the [https://en.wikipedia.org/wiki/LADSPA LADSPA]/[http://lv2plug.in/ LV2] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Prepare visualizations, and notably for soundwave filters,&lt;br /&gt;
# Integrate those inside the timeline UI,&lt;br /&gt;
# Optimize.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and enough understanding of audio.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow video filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of video filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add video filters on the MLT framework backend using the [https://git.sesse.net/?p=movit;a=summary movit] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Add transitions between clips&lt;br /&gt;
# Code the interface to manage those transitions,&lt;br /&gt;
# Optimize the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve multiplatform support ==&lt;br /&gt;
VLMC is aiming at being fully cross platform, but drifted a bit from that goal. While most VLMC&#039;s code is cross platform, and can be easily built targeting platforms, some dependencies might prove more difficult to build or compose with VLMC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix MLT cross compilation for Windows (This will most likely require patching directly inside MLT, all contributions must be sent upstream). &lt;br /&gt;
# Fix medialibrary code &amp;amp; build process on macOS (and potentially iOS). The medialibrary misses some platform specific code to be able to list all connected drives (hard drives &amp;amp; USB removable storage, mostly) along with filesystem browsing&lt;br /&gt;
# Update the documentation along the way&lt;br /&gt;
# Create jenkins build configuration to have nightly builds on jenkins.videolan.org &amp;amp; nightlies.videolan.org for all supported platforms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires buildsystems/toolchains knowledge, basic system programming on macOS &amp;amp; Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remote UI ==&lt;br /&gt;
&lt;br /&gt;
We would like to have a way to use VLMC from a web browser. You can easily imagine having a nice, shiny &amp;amp; simple UI for minimal movie edition, which would go hand in hand with the cloud storage feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
This task aims toward the uncoupling of the rendering backend &amp;amp; UI, as the renderer will run server side, while the UI runs on the client side.&lt;br /&gt;
&lt;br /&gt;
The idea is to be able to have a UI interacting with the renderer without having to be in the same process, or even machine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: jb, chouquette, fkuehne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== libmicrodns refactoring ==&lt;br /&gt;
&lt;br /&gt;
Our current mDNS discoverer is working, but is not so respectful of the RFC.&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* Device TTL support&lt;br /&gt;
* Device removal detection&lt;br /&gt;
* Better request pacing&lt;br /&gt;
* Delegate socket interactions to the caller&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DAV1D Arm NEON optimization ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV1 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Profiling to identify hotspots of new libdav1d video decoder on arm64 across common test files&lt;br /&gt;
* Analysis of potential benefits of Neon SIMD for these hotspots&lt;br /&gt;
* Write arm64 NEON optimization using directly written arm64 Neon&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;/div&gt;</summary>
		<author><name>Tguillem</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2018&amp;diff=56380</id>
		<title>SoC 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2018&amp;diff=56380"/>
		<updated>2018-03-23T17:14:53Z</updated>

		<summary type="html">&lt;p&gt;Tguillem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2018}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page summarize the current list of ideas for VideoLAN project, for [https://summerofcode.withgoogle.com Google Summer Of Code 2018].&lt;br /&gt;
&lt;br /&gt;
The list is not exhaustive, and is not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp;amp; Information  ==&lt;br /&gt;
[[File:Asterix VLC.svg|frameless|right]]&lt;br /&gt;
&lt;br /&gt;
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 [[VLMC]] and [[VLC]] (or the [[libVLC]] engine).&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for &#039;&#039;&#039;university students&#039;&#039;&#039; to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]] and [[SoC_2017|2017]]. &lt;br /&gt;
&lt;br /&gt;
This page list some ideas for Summer of Code projects on VLMC, libVLC and {{VLC}}.&lt;br /&gt;
&lt;br /&gt;
=== VLC &amp;amp; libVLC  ===&lt;br /&gt;
&lt;br /&gt;
{{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. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 23 millions from the main website and that&#039;s not including third-party distributions (Linux)! &lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
The engine of VLC is &#039;&#039;&#039;libVLC&#039;&#039;&#039;, and is used by &#039;&#039;&#039;VLMC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN Movie Creator ===&lt;br /&gt;
[[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 [http://www.epitech.eu EPITECH].&lt;br /&gt;
&lt;br /&gt;
[[VLMC]] currently awaits a transition to the current libvlc API and it&#039;s actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code  ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLMC and VLC will be included in later releases.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.&lt;br /&gt;
&lt;br /&gt;
== How to Start ==&lt;br /&gt;
=== Find an idea ===&lt;br /&gt;
First, you need to find an idea.&lt;br /&gt;
&lt;br /&gt;
This current page gives you a list of ideas. Those ideas are &#039;&#039;&#039;NOT exhaustive&#039;&#039;&#039;: you can bring your own idea! Some of the best ideas we&#039;ve ever had were &#039;&#039;&#039;custom&#039;&#039;&#039; ideas!&lt;br /&gt;
&lt;br /&gt;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
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 &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;Freenode&#039;&#039; network. It&#039;s open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
== libVLC AirPlay support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
The work will consist of the following tasks:&lt;br /&gt;
* documentation on the [https://nto.github.io/AirPlay.html AirPlay protocol],&lt;br /&gt;
* documentation on the &#039;&#039;&#039;RAOP&#039;&#039;&#039; VLC module,&lt;br /&gt;
* implementation of the detection/discovery of the supported devices,&lt;br /&gt;
* implementation of the protocol to discuss with the device,&lt;br /&gt;
* modify the device control in order to transcode on demand,&lt;br /&gt;
* polish and release.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advice&#039;&#039;&#039;&lt;br /&gt;
Please have a look at the following files: {{file|modules/stream_out/chromecast/chromecast_ctrl.cpp|Chromecast}} {{file|include/vlc_renderer_discovery.h|renderer API}}&lt;br /&gt;
A motivated and fast enough student could pair this task with the UPnP renderer!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to some Airplay devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: steve&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bonus: AirPlay target ===&lt;br /&gt;
&lt;br /&gt;
See https://trac.videolan.org/vlc/ticket/5752&lt;br /&gt;
&lt;br /&gt;
== libVLC UPnP renderer support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
We want to be able to do that from any device, including Android, iOS or Windows machines.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
The work will consist of the following tasks:&lt;br /&gt;
* documentation on the [http://upnp.org/resources/documents/UPnP_AV_tutorial_July2014.pdf UPnP renderer] protocol and on the libupnp APIs,&lt;br /&gt;
* implementation of the detection/discovery of the supported devices,&lt;br /&gt;
* implementation of the protocol to discuss with the device,&lt;br /&gt;
* modify the control of the device in order to transcode on demand,&lt;br /&gt;
* polish and release.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advice&#039;&#039;&#039;:&lt;br /&gt;
Please have a look at the following files: {{file|modules/stream_out/chromecast/chromecast_ctrl.cpp|Chromecast}} {{file|include/vlc_renderer_discovery.h|renderer API}}&lt;br /&gt;
A motivated and fast enough student could pair this task with the Airplay renderer!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to some connected TV supporting this protocol.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== libVLC VR support ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
libVLC is able to play most 2D and 360 videos, but the support of VR is very limited.&lt;br /&gt;
&lt;br /&gt;
Because of 360 and VR support, the attention about &#039;&#039;&#039;VR&#039;&#039;&#039; is getting very popular those days. We need to support that in libVLC, with an Oculus, a Vive, or a similar headset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* understand the different types of 360, 360-stereo, VR movie types and the different headsets types,&lt;br /&gt;
* integrate a new headset view in a libvlccore module,&lt;br /&gt;
* integrate a new headset control in a libvlccore module, to get rotation,&lt;br /&gt;
* integrate the control UI with the headset,&lt;br /&gt;
* optionaly code a VR theater mode inside the OpenGL or D3D module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to a VR headset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: adrien&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Qt interface redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on Linux and Windows. It has a lot of features, but some are not properly exposed.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the WinRT/UWP interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The WinRT interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the preferred way of improving the current UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Qt/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC macOS interface  redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on macOS.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the Apple TV/iOS interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The iOS/AppleTV interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Starting from the current UI is a requirement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLCKit Testsuite ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit is the wrapper framework around libvlc that powers VLC for iOS and the respective tvOS app.&lt;br /&gt;
The framework is furthermore used by thousands of Apps all over the world and subject to everyday change. &lt;br /&gt;
&lt;br /&gt;
Sadly it currently doesn&#039;t have any tests that ensure the stability of playback and deterministic behavior.&lt;br /&gt;
This frequently leads to regressions that are noticed too late and unexpected behavior that sometimes even make it into the Appstore. &lt;br /&gt;
&lt;br /&gt;
The project for this summer is to build a Testsuite around VLCKit to ensure that the framwork becomes and stays stable.&lt;br /&gt;
This indirectly has a huge impact on the stability of the macOS app since iOS and macOS share a code base.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Get an overview of the current behavior of the Framework. &lt;br /&gt;
*Write a suite with different testtargets to ensure the correct behavior of every single class&lt;br /&gt;
*Use so called &amp;quot;stubbing&amp;quot; and &amp;quot;mocking&amp;quot; of classes for testing purposes&lt;br /&gt;
*Make sure that the testtarget runs once every day on jenkins to ensure that no regressions have been introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge and ideally knowledge of writing tests for iOS but this can be learned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Carola Nitz, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC cryptographic updates ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is already using &#039;&#039;&#039;GPG signatures&#039;&#039;&#039; to achieve secure updates on the Windows platform.&lt;br /&gt;
&lt;br /&gt;
But the updates are currently signed&lt;br /&gt;
with a single master key which is pinned into the source code and VLCs in the wild aren&#039;t able to check for revocations of this key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Therefore we would like to improve this situation by:&lt;br /&gt;
&lt;br /&gt;
* being able to sign developers&#039; keys that can sign VLC binaries on behalf of this master key&lt;br /&gt;
* support revocations of these developer&#039;s key&lt;br /&gt;
* provide a master key upgrade path&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires solid notions of &#039;&#039;&#039;C and Crypto&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Move VLC build system to Meson Build ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC Currently uses autotools but using Meson would make it easier to use it with IDEs and use a more modern language.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to build the core VLC, its modules and libvlc with Meson Build on Linux, Windows, MacOS and possibly Android, iOS and Universal Windows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Building VLC can be tricky because of all the dependencies and reliance on autotools. Using a meta-build system like [http://mesonbuild.com/ Meson Build] would make things easier. Because we support a lot of platforms it can also be tricky to handle all the configurations where VLC can be built.&lt;br /&gt;
&lt;br /&gt;
Integration in XCode and Visual Studio should help with such a meta-build system. It would also help the integration of other languages like Rust in the whole project.&lt;br /&gt;
&lt;br /&gt;
Building some of the contribs with Meson Build would be a good plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Python&#039;&#039;&#039;, &#039;&#039;&#039;autotools&#039;&#039;&#039; and &#039;&#039;&#039;bash&#039;&#039;&#039;  knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU shader filters ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines. It is now possible to do all kinds of video processing that was done in the CPU directly in the GPU.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to port some of the existing CPU filters to the GPU using shaders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The first task will be to identify all the video filters in VLC and identify the ones that could be done as shaders. Then implement them. Either in OpenGL shaders, Direct3D11 shaders, both and maybe Vulkan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;OpenGL&#039;&#039;&#039; or &#039;&#039;&#039;Direct3D11&#039;&#039;&#039; shaders knowledge as well as knowledge on video filters in general.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== libplacebo integration and improvement ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
libplacebo (https://github.com/haasn/libplacebo) is a new library for GPU-accelerated video/image rendering primitives.&lt;br /&gt;
&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines via its own plugins. We plan to use future graphics library (Metal and Vulkain) via libplacebo (that will implements them).&lt;br /&gt;
libplacebo also handle colorimetry via shaders (only OpenGL for now) or via future graphic library API.&lt;br /&gt;
It will or already support HDR, jinc scaling, debanding...&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to add Metal/OpenGL/Direct3D support inside libplacebo, improve libplacebo and integrate it inside VLC as modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
1. Implement vulkan context creation inside VLC using libplacebo or direct Vulkan API calls&lt;br /&gt;
&lt;br /&gt;
2. Implement a new libplacebo video output module&lt;br /&gt;
&lt;br /&gt;
3. Add the missing features to libplacebo and make it production-ready (needs lots of testing)&lt;br /&gt;
&lt;br /&gt;
4. Implement support for more graphics APIs: OpenGL, Direct3D 11, Metal (via MoltenVK ?)&lt;br /&gt;
&lt;br /&gt;
Tasks 1/2 and 3/4 can be done by 2 students in parallel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;OpenGL&#039;&#039;&#039;, &#039;&#039;&#039;Vulkan&#039;&#039;&#039;, &#039;&#039;&#039;Metal&#039;&#039;&#039;, or &#039;&#039;&#039;generic image processing&#039;&#039;&#039; knowledge as well as knowledge on VLC vout display/window plugins.&lt;br /&gt;
&lt;br /&gt;
More information about missing features and Metal support on the following discussion: https://mailman.videolan.org/pipermail/vlc-devel/2018-March/118229.html&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLMC =&lt;br /&gt;
&lt;br /&gt;
== Port to Android ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, starting by Android.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the Android workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for Android. As libVLC works fine on Android, this is more focused on compiling the Qt part for Android.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the Android devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Geoffrey/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Port to iOS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, also on iOS.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the iOS workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for iOS. As libVLC works fine on iOS, this is more focused on compiling the Qt part for iOS.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the iOS devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Workflow rework ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but the media workflow is quite slow and is missing some common use cases.&lt;br /&gt;
&lt;br /&gt;
This should be fixed in [https://github.com/mltframework/mlt MLT] framework backend for libVLC and is the continuation from the work from the previous Summer of Code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the MLT libVLC backend codebase,&lt;br /&gt;
# Clean the backend and port it to a cleaner code state in C++,&lt;br /&gt;
# Benchmark the code and make it more efficient,&lt;br /&gt;
# Work to merge this backend upstream,&lt;br /&gt;
# Implement all the missing features in libVLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge, and understanding of multimedia concepts is a good positive point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow audio filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of audio filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add audio filters on the MLT framework backend using the [https://en.wikipedia.org/wiki/LADSPA LADSPA]/[http://lv2plug.in/ LV2] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Prepare visualizations, and notably for soundwave filters,&lt;br /&gt;
# Integrate those inside the timeline UI,&lt;br /&gt;
# Optimize.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and enough understanding of audio.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow video filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of video filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add video filters on the MLT framework backend using the [https://git.sesse.net/?p=movit;a=summary movit] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Add transitions between clips&lt;br /&gt;
# Code the interface to manage those transitions,&lt;br /&gt;
# Optimize the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve multiplatform support ==&lt;br /&gt;
VLMC is aiming at being fully cross platform, but drifted a bit from that goal. While most VLMC&#039;s code is cross platform, and can be easily built targeting platforms, some dependencies might prove more difficult to build or compose with VLMC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix MLT cross compilation for Windows (This will most likely require patching directly inside MLT, all contributions must be sent upstream). &lt;br /&gt;
# Fix medialibrary code &amp;amp; build process on macOS (and potentially iOS). The medialibrary misses some platform specific code to be able to list all connected drives (hard drives &amp;amp; USB removable storage, mostly) along with filesystem browsing&lt;br /&gt;
# Update the documentation along the way&lt;br /&gt;
# Create jenkins build configuration to have nightly builds on jenkins.videolan.org &amp;amp; nightlies.videolan.org for all supported platforms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires buildsystems/toolchains knowledge, basic system programming on macOS &amp;amp; Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remote UI ==&lt;br /&gt;
&lt;br /&gt;
We would like to have a way to use VLMC from a web browser. You can easily imagine having a nice, shiny &amp;amp; simple UI for minimal movie edition, which would go hand in hand with the cloud storage feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
This task aims toward the uncoupling of the rendering backend &amp;amp; UI, as the renderer will run server side, while the UI runs on the client side.&lt;br /&gt;
&lt;br /&gt;
The idea is to be able to have a UI interacting with the renderer without having to be in the same process, or even machine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: jb, chouquette, fkuehne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== libmicrodns refactoring ==&lt;br /&gt;
&lt;br /&gt;
Our current mDNS discoverer is working, but is not so respectful of the RFC.&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* Device TTL support&lt;br /&gt;
* Device removal detection&lt;br /&gt;
* Better request pacing&lt;br /&gt;
* Delegate socket interactions to the caller&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
== libdsm SMBv2/3 support ==&lt;br /&gt;
&lt;br /&gt;
libdsm works great for SMBv1, but doesn&#039;t support later version of the protocol. This will become a problem soon, and we need to fix it.&lt;br /&gt;
&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* SMBv2 support&lt;br /&gt;
* SMBv3 support&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
= Other ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
&lt;br /&gt;
* Integrate Rust inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve the PPAPI chrome plugin to add hardware decoding&lt;br /&gt;
* Improve the SMB/Samba share library&lt;br /&gt;
* Work on Vulkan output for VLC&lt;br /&gt;
* VLC javascript work&lt;br /&gt;
* Improve fast-seek in MP4 and WMV demuxers&lt;br /&gt;
* Improve id3 tag parsing.&lt;br /&gt;
&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Bridge module for GMI&#039;C or other video filters&lt;br /&gt;
* Automated Testing Environment like ffmpeg Fate (port ?) for demuxing, non hw decoding&lt;br /&gt;
{{GSoC}}&lt;/div&gt;</summary>
		<author><name>Tguillem</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2018&amp;diff=56352</id>
		<title>SoC 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2018&amp;diff=56352"/>
		<updated>2018-01-24T15:52:37Z</updated>

		<summary type="html">&lt;p&gt;Tguillem: /* libplacebo integration and improvement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2018}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page summarize the current list of ideas for VideoLAN project, for [https://summerofcode.withgoogle.com Google Summer Of Code 2018].&lt;br /&gt;
&lt;br /&gt;
The list is not exhaustive, and is not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp;amp; Information  ==&lt;br /&gt;
[[File:Asterix VLC.svg|frameless|right]]&lt;br /&gt;
&lt;br /&gt;
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 [[VLMC]] and [[VLC]] (or the [[libVLC]] engine).&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for &#039;&#039;&#039;university students&#039;&#039;&#039; to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]] and [[SoC_2017|2017]]. &lt;br /&gt;
&lt;br /&gt;
This page list some ideas for Summer of Code projects on VLMC, libVLC and {{VLC}}.&lt;br /&gt;
&lt;br /&gt;
=== VLC &amp;amp; libVLC  ===&lt;br /&gt;
&lt;br /&gt;
{{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. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 23 millions from the main website and that&#039;s not including third-party distributions (Linux)! &lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
The engine of VLC is &#039;&#039;&#039;libVLC&#039;&#039;&#039;, and is used by &#039;&#039;&#039;VLMC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN Movie Creator ===&lt;br /&gt;
[[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 [http://www.epitech.eu EPITECH].&lt;br /&gt;
&lt;br /&gt;
[[VLMC]] currently awaits a transition to the current libvlc API and it&#039;s actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code  ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLMC and VLC will be included in later releases.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.&lt;br /&gt;
&lt;br /&gt;
== How to Start ==&lt;br /&gt;
=== Find an idea ===&lt;br /&gt;
First, you need to find an idea.&lt;br /&gt;
&lt;br /&gt;
This current page gives you a list of ideas. Those ideas are &#039;&#039;&#039;NOT exhaustive&#039;&#039;&#039;: you can bring your own idea! Some of the best ideas we&#039;ve ever had were &#039;&#039;&#039;custom&#039;&#039;&#039; ideas!&lt;br /&gt;
&lt;br /&gt;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
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 &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;Freenode&#039;&#039; network. It&#039;s open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
== libVLC AirPlay support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
The work will consist of the following tasks:&lt;br /&gt;
* documentation on the [https://nto.github.io/AirPlay.html AirPlay protocol],&lt;br /&gt;
* documentation on the &#039;&#039;&#039;RAOP&#039;&#039;&#039; VLC module,&lt;br /&gt;
* implementation of the detection/discovery of the supported devices,&lt;br /&gt;
* implementation of the protocol to discuss with the device,&lt;br /&gt;
* modify the device control in order to transcode on demand,&lt;br /&gt;
* polish and release.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advice&#039;&#039;&#039;&lt;br /&gt;
Please have a look at the following files: {{file|modules/stream_out/chromecast/chromecast_ctrl.cpp|Chromecast}} {{file|include/vlc_renderer_discovery.h|renderer API}}&lt;br /&gt;
A motivated and fast enough student could pair this task with the UPnP renderer!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to some Airplay devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: steve&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bonus: AirPlay target ===&lt;br /&gt;
&lt;br /&gt;
See https://trac.videolan.org/vlc/ticket/5752&lt;br /&gt;
&lt;br /&gt;
== libVLC UPnP renderer support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
We want to be able to do that from any device, including Android, iOS or Windows machines.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
The work will consist of the following tasks:&lt;br /&gt;
* documentation on the [http://upnp.org/resources/documents/UPnP_AV_tutorial_July2014.pdf UPnP renderer] protocol and on the libupnp APIs,&lt;br /&gt;
* implementation of the detection/discovery of the supported devices,&lt;br /&gt;
* implementation of the protocol to discuss with the device,&lt;br /&gt;
* modify the control of the device in order to transcode on demand,&lt;br /&gt;
* polish and release.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advice&#039;&#039;&#039;:&lt;br /&gt;
Please have a look at the following files: {{file|modules/stream_out/chromecast/chromecast_ctrl.cpp|Chromecast}} {{file|include/vlc_renderer_discovery.h|renderer API}}&lt;br /&gt;
A motivated and fast enough student could pair this task with the Airplay renderer!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to some connected TV supporting this protocol.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== libVLC VR support ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
libVLC is able to play most 2D and 360 videos, but the support of VR is very limited.&lt;br /&gt;
&lt;br /&gt;
Because of 360 and VR support, the attention about &#039;&#039;&#039;VR&#039;&#039;&#039; is getting very popular those days. We need to support that in libVLC, with an Oculus, a Vive, or a similar headset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* understand the different types of 360, 360-stereo, VR movie types and the different headsets types,&lt;br /&gt;
* integrate a new headset view in a libvlccore module,&lt;br /&gt;
* integrate a new headset control in a libvlccore module, to get rotation,&lt;br /&gt;
* integrate the control UI with the headset,&lt;br /&gt;
* optionaly code a VR theater mode inside the OpenGL or D3D module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to a VR headset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: adrien&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Qt interface redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on Linux and Windows. It has a lot of features, but some are not properly exposed.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the WinRT/UWP interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The WinRT interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the preferred way of improving the current UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Qt/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC macOS interface  redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on macOS.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the Apple TV/iOS interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The iOS/AppleTV interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Starting from the current UI is a requirement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLCKit Testsuite ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit is the wrapper framework around libvlc that powers VLC for iOS and the respective tvOS app.&lt;br /&gt;
The framework is furthermore used by thousands of Apps all over the world and subject to everyday change. &lt;br /&gt;
&lt;br /&gt;
Sadly it currently doesn&#039;t have any tests that ensure the stability of playback and deterministic behavior.&lt;br /&gt;
This frequently leads to regressions that are noticed too late and unexpected behavior that sometimes even make it into the Appstore. &lt;br /&gt;
&lt;br /&gt;
The project for this summer is to build a Testsuite around VLCKit to ensure that the framwork becomes and stays stable.&lt;br /&gt;
This indirectly has a huge impact on the stability of the macOS app since iOS and macOS share a code base.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Get an overview of the current behavior of the Framework. &lt;br /&gt;
*Write a suite with different testtargets to ensure the correct behavior of every single class&lt;br /&gt;
*Use so called &amp;quot;stubbing&amp;quot; and &amp;quot;mocking&amp;quot; of classes for testing purposes&lt;br /&gt;
*Make sure that the testtarget runs once every day on jenkins to ensure that no regressions have been introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge and ideally knowledge of writing tests for iOS but this can be learned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Carola Nitz, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC cryptographic updates ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is already using &#039;&#039;&#039;GPG signatures&#039;&#039;&#039; to achieve secure updates on the Windows platform.&lt;br /&gt;
&lt;br /&gt;
But the updates are currently signed&lt;br /&gt;
with a single master key which is pinned into the source code and VLCs in the wild aren&#039;t able to check for revocations of this key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Therefore we would like to improve this situation by:&lt;br /&gt;
&lt;br /&gt;
* being able to sign developers&#039; keys that can sign VLC binaries on behalf of this master key&lt;br /&gt;
* support revocations of these developer&#039;s key&lt;br /&gt;
* provide a master key upgrade path&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires solid notions of &#039;&#039;&#039;C and Crypto&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Move VLC build system to Meson Build ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC Currently uses autotools but using Meson would make it easier to use it with IDEs and use a more modern language.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to build the core VLC, its modules and libvlc with Meson Build on Linux, Windows, MacOS and possibly Android, iOS and Universal Windows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Building VLC can be tricky because of all the dependencies and reliance on autotools. Using a meta-build system like [http://mesonbuild.com/ Meson Build] would make things easier. Because we support a lot of platforms it can also be tricky to handle all the configurations where VLC can be built.&lt;br /&gt;
&lt;br /&gt;
Integration in XCode and Visual Studio should help with such a meta-build system. It would also help the integration of other languages like Rust in the whole project.&lt;br /&gt;
&lt;br /&gt;
Building some of the contribs with Meson Build would be a good plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Python&#039;&#039;&#039;, &#039;&#039;&#039;autotools&#039;&#039;&#039; and &#039;&#039;&#039;bash&#039;&#039;&#039;  knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU shader filters ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines. It is now possible to do all kinds of video processing that was done in the CPU directly in the GPU.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to port some of the existing CPU filters to the GPU using shaders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The first task will be to identify all the video filters in VLC and identify the ones that could be done as shaders. Then implement them. Either in OpenGL shaders, Direct3D11 shaders, both and maybe Vulkan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;OpenGL&#039;&#039;&#039; or &#039;&#039;&#039;Direct3D11&#039;&#039;&#039; shaders knowledge as well as knowledge on video filters in general.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== libplacebo integration and improvement ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
libplacebo (https://github.com/haasn/libplacebo) is a new library for GPU-accelerated video/image rendering primitives.&lt;br /&gt;
&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines via its own plugins. We plan to use future graphics library (Metal and Vulkain) via libplacebo (that will implements them).&lt;br /&gt;
libplacebo also handle colorimetry via shaders (only OpenGL for now) or via future graphic library API.&lt;br /&gt;
It will or already support HDR, jinc scaling, debanding...&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to add Metal/OpenGL/Direct3D support inside libplacebo, improve libplacebo and integrate it inside VLC as modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
1. Implement vulkain context creation inside VLC using libplacebo or direct Vulkan API calls&lt;br /&gt;
&lt;br /&gt;
2. Implement a new libplacebo video output module&lt;br /&gt;
&lt;br /&gt;
3. Add the missing features to libplacebo and make it production-ready (needs lots of testing especially)&lt;br /&gt;
&lt;br /&gt;
4. Implement support for more graphics APIs (OpenGL, Direct3D 11, Metal)&lt;br /&gt;
&lt;br /&gt;
Tasks 1/2 and 3/4 can be done by 2 students in parallel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;OpenGL&#039;&#039;&#039;, &#039;&#039;&#039;Vulkan&#039;&#039;&#039;, &#039;&#039;&#039;Metal&#039;&#039;&#039;, or &#039;&#039;&#039;generic image processing&#039;&#039;&#039; knowledge as well as knowledge on VLC vout display/window plugins.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLMC =&lt;br /&gt;
&lt;br /&gt;
== Port to Android ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, starting by Android.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the Android workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for Android. As libVLC works fine on Android, this is more focused on compiling the Qt part for Android.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the Android devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Geoffrey/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Port to iOS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, also on iOS.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the iOS workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for iOS. As libVLC works fine on iOS, this is more focused on compiling the Qt part for iOS.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the iOS devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Workflow rework ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but the media workflow is quite slow and is missing some common use cases.&lt;br /&gt;
&lt;br /&gt;
This should be fixed in [https://github.com/mltframework/mlt MLT] framework backend for libVLC and is the continuation from the work from the previous Summer of Code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the MLT libVLC backend codebase,&lt;br /&gt;
# Clean the backend and port it to a cleaner code state in C++,&lt;br /&gt;
# Benchmark the code and make it more efficient,&lt;br /&gt;
# Work to merge this backend upstream,&lt;br /&gt;
# Implement all the missing features in libVLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge, and understanding of multimedia concepts is a good positive point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow audio filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of audio filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add audio filters on the MLT framework backend using the [https://en.wikipedia.org/wiki/LADSPA LADSPA]/[http://lv2plug.in/ LV2] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Prepare visualizations, and notably for soundwave filters,&lt;br /&gt;
# Integrate those inside the timeline UI,&lt;br /&gt;
# Optimize.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and enough understanding of audio.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow video filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of video filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add video filters on the MLT framework backend using the [https://git.sesse.net/?p=movit;a=summary movit] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Add transitions between clips&lt;br /&gt;
# Code the interface to manage those transitions,&lt;br /&gt;
# Optimize the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve multiplatform support ==&lt;br /&gt;
VLMC is aiming at being fully cross platform, but drifted a bit from that goal. While most VLMC&#039;s code is cross platform, and can be easily built targeting platforms, some dependencies might prove more difficult to build or compose with VLMC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix MLT cross compilation for Windows (This will most likely require patching directly inside MLT, all contributions must be sent upstream). &lt;br /&gt;
# Fix medialibrary code &amp;amp; build process on macOS (and potentially iOS). The medialibrary misses some platform specific code to be able to list all connected drives (hard drives &amp;amp; USB removable storage, mostly) along with filesystem browsing&lt;br /&gt;
# Update the documentation along the way&lt;br /&gt;
# Create jenkins build configuration to have nightly builds on jenkins.videolan.org &amp;amp; nightlies.videolan.org for all supported platforms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires buildsystems/toolchains knowledge, basic system programming on macOS &amp;amp; Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remote UI ==&lt;br /&gt;
&lt;br /&gt;
We would like to have a way to use VLMC from a web browser. You can easily imagine having a nice, shiny &amp;amp; simple UI for minimal movie edition, which would go hand in hand with the cloud storage feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
This task aims toward the uncoupling of the rendering backend &amp;amp; UI, as the renderer will run server side, while the UI runs on the client side.&lt;br /&gt;
&lt;br /&gt;
The idea is to be able to have a UI interacting with the renderer without having to be in the same process, or even machine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: jb, chouquette, fkuehne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== libmicrodns refactoring ==&lt;br /&gt;
&lt;br /&gt;
Our current mDNS discoverer is working, but is not so respectful of the RFC.&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* Device TTL support&lt;br /&gt;
* Device removal detection&lt;br /&gt;
* Better request pacing&lt;br /&gt;
* Delegate socket interactions to the caller&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
== libdsm SMBv2/3 support ==&lt;br /&gt;
&lt;br /&gt;
libdsm works great for SMBv1, but doesn&#039;t support later version of the protocol. This will become a problem soon, and we need to fix it.&lt;br /&gt;
&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* SMBv2 support&lt;br /&gt;
* SMBv3 support&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
= Other ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
&lt;br /&gt;
* Integrate Rust inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve the PPAPI chrome plugin to add hardware decoding&lt;br /&gt;
* Improve the SMB/Samba share library&lt;br /&gt;
* Work on Vulkan output for VLC&lt;br /&gt;
* VLC javascript work&lt;br /&gt;
* Improve fast-seek in MP4 and WMV demuxers&lt;br /&gt;
* Improve id3 tag parsing.&lt;br /&gt;
&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Bridge module for GMI&#039;C or other video filters&lt;br /&gt;
* Automated Testing Environment like ffmpeg Fate (port ?) for demuxing, non hw decoding&lt;br /&gt;
{{GSoC}}&lt;/div&gt;</summary>
		<author><name>Tguillem</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2018&amp;diff=56351</id>
		<title>SoC 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2018&amp;diff=56351"/>
		<updated>2018-01-24T15:51:29Z</updated>

		<summary type="html">&lt;p&gt;Tguillem: /* libplacebo integration and improvement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2018}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page summarize the current list of ideas for VideoLAN project, for [https://summerofcode.withgoogle.com Google Summer Of Code 2018].&lt;br /&gt;
&lt;br /&gt;
The list is not exhaustive, and is not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp;amp; Information  ==&lt;br /&gt;
[[File:Asterix VLC.svg|frameless|right]]&lt;br /&gt;
&lt;br /&gt;
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 [[VLMC]] and [[VLC]] (or the [[libVLC]] engine).&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for &#039;&#039;&#039;university students&#039;&#039;&#039; to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]] and [[SoC_2017|2017]]. &lt;br /&gt;
&lt;br /&gt;
This page list some ideas for Summer of Code projects on VLMC, libVLC and {{VLC}}.&lt;br /&gt;
&lt;br /&gt;
=== VLC &amp;amp; libVLC  ===&lt;br /&gt;
&lt;br /&gt;
{{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. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 23 millions from the main website and that&#039;s not including third-party distributions (Linux)! &lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
The engine of VLC is &#039;&#039;&#039;libVLC&#039;&#039;&#039;, and is used by &#039;&#039;&#039;VLMC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN Movie Creator ===&lt;br /&gt;
[[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 [http://www.epitech.eu EPITECH].&lt;br /&gt;
&lt;br /&gt;
[[VLMC]] currently awaits a transition to the current libvlc API and it&#039;s actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code  ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLMC and VLC will be included in later releases.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.&lt;br /&gt;
&lt;br /&gt;
== How to Start ==&lt;br /&gt;
=== Find an idea ===&lt;br /&gt;
First, you need to find an idea.&lt;br /&gt;
&lt;br /&gt;
This current page gives you a list of ideas. Those ideas are &#039;&#039;&#039;NOT exhaustive&#039;&#039;&#039;: you can bring your own idea! Some of the best ideas we&#039;ve ever had were &#039;&#039;&#039;custom&#039;&#039;&#039; ideas!&lt;br /&gt;
&lt;br /&gt;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
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 &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;Freenode&#039;&#039; network. It&#039;s open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
== libVLC AirPlay support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
The work will consist of the following tasks:&lt;br /&gt;
* documentation on the [https://nto.github.io/AirPlay.html AirPlay protocol],&lt;br /&gt;
* documentation on the &#039;&#039;&#039;RAOP&#039;&#039;&#039; VLC module,&lt;br /&gt;
* implementation of the detection/discovery of the supported devices,&lt;br /&gt;
* implementation of the protocol to discuss with the device,&lt;br /&gt;
* modify the device control in order to transcode on demand,&lt;br /&gt;
* polish and release.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advice&#039;&#039;&#039;&lt;br /&gt;
Please have a look at the following files: {{file|modules/stream_out/chromecast/chromecast_ctrl.cpp|Chromecast}} {{file|include/vlc_renderer_discovery.h|renderer API}}&lt;br /&gt;
A motivated and fast enough student could pair this task with the UPnP renderer!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to some Airplay devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: steve&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bonus: AirPlay target ===&lt;br /&gt;
&lt;br /&gt;
See https://trac.videolan.org/vlc/ticket/5752&lt;br /&gt;
&lt;br /&gt;
== libVLC UPnP renderer support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
We want to be able to do that from any device, including Android, iOS or Windows machines.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
The work will consist of the following tasks:&lt;br /&gt;
* documentation on the [http://upnp.org/resources/documents/UPnP_AV_tutorial_July2014.pdf UPnP renderer] protocol and on the libupnp APIs,&lt;br /&gt;
* implementation of the detection/discovery of the supported devices,&lt;br /&gt;
* implementation of the protocol to discuss with the device,&lt;br /&gt;
* modify the control of the device in order to transcode on demand,&lt;br /&gt;
* polish and release.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advice&#039;&#039;&#039;:&lt;br /&gt;
Please have a look at the following files: {{file|modules/stream_out/chromecast/chromecast_ctrl.cpp|Chromecast}} {{file|include/vlc_renderer_discovery.h|renderer API}}&lt;br /&gt;
A motivated and fast enough student could pair this task with the Airplay renderer!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to some connected TV supporting this protocol.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== libVLC VR support ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
libVLC is able to play most 2D and 360 videos, but the support of VR is very limited.&lt;br /&gt;
&lt;br /&gt;
Because of 360 and VR support, the attention about &#039;&#039;&#039;VR&#039;&#039;&#039; is getting very popular those days. We need to support that in libVLC, with an Oculus, a Vive, or a similar headset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* understand the different types of 360, 360-stereo, VR movie types and the different headsets types,&lt;br /&gt;
* integrate a new headset view in a libvlccore module,&lt;br /&gt;
* integrate a new headset control in a libvlccore module, to get rotation,&lt;br /&gt;
* integrate the control UI with the headset,&lt;br /&gt;
* optionaly code a VR theater mode inside the OpenGL or D3D module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to a VR headset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: adrien&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Qt interface redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on Linux and Windows. It has a lot of features, but some are not properly exposed.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the WinRT/UWP interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The WinRT interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the preferred way of improving the current UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Qt/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC macOS interface  redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on macOS.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the Apple TV/iOS interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The iOS/AppleTV interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Starting from the current UI is a requirement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLCKit Testsuite ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit is the wrapper framework around libvlc that powers VLC for iOS and the respective tvOS app.&lt;br /&gt;
The framework is furthermore used by thousands of Apps all over the world and subject to everyday change. &lt;br /&gt;
&lt;br /&gt;
Sadly it currently doesn&#039;t have any tests that ensure the stability of playback and deterministic behavior.&lt;br /&gt;
This frequently leads to regressions that are noticed too late and unexpected behavior that sometimes even make it into the Appstore. &lt;br /&gt;
&lt;br /&gt;
The project for this summer is to build a Testsuite around VLCKit to ensure that the framwork becomes and stays stable.&lt;br /&gt;
This indirectly has a huge impact on the stability of the macOS app since iOS and macOS share a code base.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
*Get an overview of the current behavior of the Framework. &lt;br /&gt;
*Write a suite with different testtargets to ensure the correct behavior of every single class&lt;br /&gt;
*Use so called &amp;quot;stubbing&amp;quot; and &amp;quot;mocking&amp;quot; of classes for testing purposes&lt;br /&gt;
*Make sure that the testtarget runs once every day on jenkins to ensure that no regressions have been introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge and ideally knowledge of writing tests for iOS but this can be learned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Carola Nitz, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC cryptographic updates ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is already using &#039;&#039;&#039;GPG signatures&#039;&#039;&#039; to achieve secure updates on the Windows platform.&lt;br /&gt;
&lt;br /&gt;
But the updates are currently signed&lt;br /&gt;
with a single master key which is pinned into the source code and VLCs in the wild aren&#039;t able to check for revocations of this key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Therefore we would like to improve this situation by:&lt;br /&gt;
&lt;br /&gt;
* being able to sign developers&#039; keys that can sign VLC binaries on behalf of this master key&lt;br /&gt;
* support revocations of these developer&#039;s key&lt;br /&gt;
* provide a master key upgrade path&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires solid notions of &#039;&#039;&#039;C and Crypto&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Move VLC build system to Meson Build ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC Currently uses autotools but using Meson would make it easier to use it with IDEs and use a more modern language.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to build the core VLC, its modules and libvlc with Meson Build on Linux, Windows, MacOS and possibly Android, iOS and Universal Windows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Building VLC can be tricky because of all the dependencies and reliance on autotools. Using a meta-build system like [http://mesonbuild.com/ Meson Build] would make things easier. Because we support a lot of platforms it can also be tricky to handle all the configurations where VLC can be built.&lt;br /&gt;
&lt;br /&gt;
Integration in XCode and Visual Studio should help with such a meta-build system. It would also help the integration of other languages like Rust in the whole project.&lt;br /&gt;
&lt;br /&gt;
Building some of the contribs with Meson Build would be a good plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Python&#039;&#039;&#039;, &#039;&#039;&#039;autotools&#039;&#039;&#039; and &#039;&#039;&#039;bash&#039;&#039;&#039;  knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU shader filters ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines. It is now possible to do all kinds of video processing that was done in the CPU directly in the GPU.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to port some of the existing CPU filters to the GPU using shaders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The first task will be to identify all the video filters in VLC and identify the ones that could be done as shaders. Then implement them. Either in OpenGL shaders, Direct3D11 shaders, both and maybe Vulkan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;OpenGL&#039;&#039;&#039; or &#039;&#039;&#039;Direct3D11&#039;&#039;&#039; shaders knowledge as well as knowledge on video filters in general.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== libplacebo integration and improvement ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
libplacebo (https://github.com/haasn/libplacebo) is a new library for GPU-accelerated video/image rendering primitives.&lt;br /&gt;
&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines via its own plugins. We plan to use future graphics library (Metal and Vulkain) via libplacebo (that will implements them).&lt;br /&gt;
libplacebo also handle colorimetry via shaders (only OpenGL for now) or via future graphic library API.&lt;br /&gt;
It will or already support HDR, jinc scaling, debanding...&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to add Metal/OpenGL/Direct3D support inside libplacebo, improve libplacebo and integrate it inside VLC as modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
1. Implement vulkain context creation inside VLC using libplacebo or direct Vulkan API calls&lt;br /&gt;
2. Implement a new libplacebo video output module&lt;br /&gt;
3. Add the missing features to libplacebo and make it production-ready (needs lots of testing especially)&lt;br /&gt;
4. Implement support for more graphics APIs (OpenGL, Direct3D 11, Metal)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;OpenGL&#039;&#039;&#039;, &#039;&#039;&#039;Vulkan&#039;&#039;&#039;, &#039;&#039;&#039;Metal&#039;&#039;&#039;, or &#039;&#039;&#039;generic image processing&#039;&#039;&#039; knowledge as well as knowledge on VLC vout display/window plugins.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLMC =&lt;br /&gt;
&lt;br /&gt;
== Port to Android ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, starting by Android.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the Android workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for Android. As libVLC works fine on Android, this is more focused on compiling the Qt part for Android.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the Android devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Geoffrey/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Port to iOS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, also on iOS.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the iOS workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for iOS. As libVLC works fine on iOS, this is more focused on compiling the Qt part for iOS.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the iOS devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Workflow rework ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but the media workflow is quite slow and is missing some common use cases.&lt;br /&gt;
&lt;br /&gt;
This should be fixed in [https://github.com/mltframework/mlt MLT] framework backend for libVLC and is the continuation from the work from the previous Summer of Code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the MLT libVLC backend codebase,&lt;br /&gt;
# Clean the backend and port it to a cleaner code state in C++,&lt;br /&gt;
# Benchmark the code and make it more efficient,&lt;br /&gt;
# Work to merge this backend upstream,&lt;br /&gt;
# Implement all the missing features in libVLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge, and understanding of multimedia concepts is a good positive point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow audio filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of audio filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add audio filters on the MLT framework backend using the [https://en.wikipedia.org/wiki/LADSPA LADSPA]/[http://lv2plug.in/ LV2] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Prepare visualizations, and notably for soundwave filters,&lt;br /&gt;
# Integrate those inside the timeline UI,&lt;br /&gt;
# Optimize.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and enough understanding of audio.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow video filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of video filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add video filters on the MLT framework backend using the [https://git.sesse.net/?p=movit;a=summary movit] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Add transitions between clips&lt;br /&gt;
# Code the interface to manage those transitions,&lt;br /&gt;
# Optimize the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve multiplatform support ==&lt;br /&gt;
VLMC is aiming at being fully cross platform, but drifted a bit from that goal. While most VLMC&#039;s code is cross platform, and can be easily built targeting platforms, some dependencies might prove more difficult to build or compose with VLMC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix MLT cross compilation for Windows (This will most likely require patching directly inside MLT, all contributions must be sent upstream). &lt;br /&gt;
# Fix medialibrary code &amp;amp; build process on macOS (and potentially iOS). The medialibrary misses some platform specific code to be able to list all connected drives (hard drives &amp;amp; USB removable storage, mostly) along with filesystem browsing&lt;br /&gt;
# Update the documentation along the way&lt;br /&gt;
# Create jenkins build configuration to have nightly builds on jenkins.videolan.org &amp;amp; nightlies.videolan.org for all supported platforms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires buildsystems/toolchains knowledge, basic system programming on macOS &amp;amp; Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remote UI ==&lt;br /&gt;
&lt;br /&gt;
We would like to have a way to use VLMC from a web browser. You can easily imagine having a nice, shiny &amp;amp; simple UI for minimal movie edition, which would go hand in hand with the cloud storage feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
This task aims toward the uncoupling of the rendering backend &amp;amp; UI, as the renderer will run server side, while the UI runs on the client side.&lt;br /&gt;
&lt;br /&gt;
The idea is to be able to have a UI interacting with the renderer without having to be in the same process, or even machine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: jb, chouquette, fkuehne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== libmicrodns refactoring ==&lt;br /&gt;
&lt;br /&gt;
Our current mDNS discoverer is working, but is not so respectful of the RFC.&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* Device TTL support&lt;br /&gt;
* Device removal detection&lt;br /&gt;
* Better request pacing&lt;br /&gt;
* Delegate socket interactions to the caller&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
== libdsm SMBv2/3 support ==&lt;br /&gt;
&lt;br /&gt;
libdsm works great for SMBv1, but doesn&#039;t support later version of the protocol. This will become a problem soon, and we need to fix it.&lt;br /&gt;
&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* SMBv2 support&lt;br /&gt;
* SMBv3 support&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
= Other ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
&lt;br /&gt;
* Integrate Rust inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve the PPAPI chrome plugin to add hardware decoding&lt;br /&gt;
* Improve the SMB/Samba share library&lt;br /&gt;
* Work on Vulkan output for VLC&lt;br /&gt;
* VLC javascript work&lt;br /&gt;
* Improve fast-seek in MP4 and WMV demuxers&lt;br /&gt;
* Improve id3 tag parsing.&lt;br /&gt;
&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Bridge module for GMI&#039;C or other video filters&lt;br /&gt;
* Automated Testing Environment like ffmpeg Fate (port ?) for demuxing, non hw decoding&lt;br /&gt;
{{GSoC}}&lt;/div&gt;</summary>
		<author><name>Tguillem</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2018&amp;diff=56344</id>
		<title>SoC 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2018&amp;diff=56344"/>
		<updated>2018-01-23T13:50:35Z</updated>

		<summary type="html">&lt;p&gt;Tguillem: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2018}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page summarize the current list of ideas for VideoLAN project, for [https://summerofcode.withgoogle.com Google Summer Of Code 2018].&lt;br /&gt;
&lt;br /&gt;
The list is not exhaustive, and is not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp;amp; Information  ==&lt;br /&gt;
[[File:Asterix VLC.svg|frameless|right]]&lt;br /&gt;
&lt;br /&gt;
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 [[VLMC]] and [[VLC]] (or the [[libVLC]] engine).&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for &#039;&#039;&#039;university students&#039;&#039;&#039; to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]] and [[SoC_2017|2017]]. &lt;br /&gt;
&lt;br /&gt;
This page list some ideas for Summer of Code projects on VLMC, libVLC and {{VLC}}.&lt;br /&gt;
&lt;br /&gt;
=== VLC &amp;amp; libVLC  ===&lt;br /&gt;
&lt;br /&gt;
{{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. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 23 millions from the main website and that&#039;s not including third-party distributions (Linux)! &lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
The engine of VLC is &#039;&#039;&#039;libVLC&#039;&#039;&#039;, and is used by &#039;&#039;&#039;VLMC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN Movie Creator ===&lt;br /&gt;
[[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 [http://www.epitech.eu EPITECH].&lt;br /&gt;
&lt;br /&gt;
[[VLMC]] currently awaits a transition to the current libvlc API and it&#039;s actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code  ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLMC and VLC will be included in later releases.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.&lt;br /&gt;
&lt;br /&gt;
== How to Start ==&lt;br /&gt;
=== Find an idea ===&lt;br /&gt;
First, you need to find an idea.&lt;br /&gt;
&lt;br /&gt;
This current page gives you a list of ideas. Those ideas are &#039;&#039;&#039;NOT exhaustive&#039;&#039;&#039;: you can bring your own idea! Some of the best ideas we&#039;ve ever had were &#039;&#039;&#039;custom&#039;&#039;&#039; ideas!&lt;br /&gt;
&lt;br /&gt;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
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 &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;Freenode&#039;&#039; network. It&#039;s open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
== libVLC AirPlay support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
The work will consist of the following tasks:&lt;br /&gt;
* documentation on the [https://nto.github.io/AirPlay.html AirPlay protocol],&lt;br /&gt;
* documentation on the &#039;&#039;&#039;RAOP&#039;&#039;&#039; VLC module,&lt;br /&gt;
* implementation of the detection/discovery of the supported devices,&lt;br /&gt;
* implementation of the protocol to discuss with the device,&lt;br /&gt;
* modify the device control in order to transcode on demand,&lt;br /&gt;
* polish and release.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advice&#039;&#039;&#039;&lt;br /&gt;
Please have a look at the following files: {{file|modules/stream_out/chromecast/chromecast_ctrl.cpp|Chromecast}} {{file|include/vlc_renderer_discovery.h|renderer API}}&lt;br /&gt;
A motivated and fast enough student could pair this task with the UPnP renderer!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to some Airplay devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: steve&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bonus: AirPlay target ===&lt;br /&gt;
&lt;br /&gt;
See https://trac.videolan.org/vlc/ticket/5752&lt;br /&gt;
&lt;br /&gt;
== libVLC UPnP renderer support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
We want to be able to do that from any device, including Android, iOS or Windows machines.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
The work will consist of the following tasks:&lt;br /&gt;
* documentation on the [http://upnp.org/resources/documents/UPnP_AV_tutorial_July2014.pdf UPnP renderer] protocol and on the libupnp APIs,&lt;br /&gt;
* implementation of the detection/discovery of the supported devices,&lt;br /&gt;
* implementation of the protocol to discuss with the device,&lt;br /&gt;
* modify the control of the device in order to transcode on demand,&lt;br /&gt;
* polish and release.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advice&#039;&#039;&#039;:&lt;br /&gt;
Please have a look at the following files: {{file|modules/stream_out/chromecast/chromecast_ctrl.cpp|Chromecast}} {{file|include/vlc_renderer_discovery.h|renderer API}}&lt;br /&gt;
A motivated and fast enough student could pair this task with the Airplay renderer!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to some connected TV supporting this protocol.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== libVLC VR support ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
libVLC is able to play most 2D and 360 videos, but the support of VR is very limited.&lt;br /&gt;
&lt;br /&gt;
Because of 360 and VR support, the attention about &#039;&#039;&#039;VR&#039;&#039;&#039; is getting very popular those days. We need to support that in libVLC, with an Oculus, a Vive, or a similar headset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* understand the different types of 360, 360-stereo, VR movie types and the different headsets types,&lt;br /&gt;
* integrate a new headset view in a libvlccore module,&lt;br /&gt;
* integrate a new headset control in a libvlccore module, to get rotation,&lt;br /&gt;
* integrate the control UI with the headset,&lt;br /&gt;
* optionaly code a VR theater mode inside the OpenGL or D3D module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge and access to a VR headset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: adrien&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Qt interface redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on Linux and Windows. It has a lot of features, but some are not properly exposed.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the WinRT/UWP interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The WinRT interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the preferred way of improving the current UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Qt/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC macOS interface  redesign ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC interface is quite outdated on macOS.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to rework heavily this interface to make it beautiful and useful again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the Apple TV/iOS interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;, but other ideas are welcome.&lt;br /&gt;
&lt;br /&gt;
The iOS/AppleTV interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Starting from the current UI is a requirement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Obj-C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David F&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC cryptographic updates ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is already using &#039;&#039;&#039;GPG signatures&#039;&#039;&#039; to achieve secure updates on the Windows platform.&lt;br /&gt;
&lt;br /&gt;
But the updates are currently signed&lt;br /&gt;
with a single master key which is pinned into the source code and VLCs in the wild aren&#039;t able to check for revocations of this key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Therefore we would like to improve this situation by:&lt;br /&gt;
&lt;br /&gt;
* being able to sign developers&#039; keys that can sign VLC binaries on behalf of this master key&lt;br /&gt;
* support revocations of these developer&#039;s key&lt;br /&gt;
* provide a master key upgrade path&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires solid notions of &#039;&#039;&#039;C and Crypto&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: geal&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Move VLC build system to Meson Build ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC Currently uses autotools but using Meson would make it easier to use it with IDEs and use a more modern language.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to build the core VLC, its modules and libvlc with Meson Build on Linux, Windows, MacOS and possibly Android, iOS and Universal Windows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Building VLC can be tricky because of all the dependencies and reliance on autotools. Using a meta-build system like [http://mesonbuild.com/ Meson Build] would make things easier. Because we support a lot of platforms it can also be tricky to handle all the configurations where VLC can be built.&lt;br /&gt;
&lt;br /&gt;
Integration in XCode and Visual Studio should help with such a meta-build system. It would also help the integration of other languages like Rust in the whole project.&lt;br /&gt;
&lt;br /&gt;
Building some of the contribs with Meson Build would be a good plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Python&#039;&#039;&#039;, &#039;&#039;&#039;autotools&#039;&#039;&#039; and &#039;&#039;&#039;bash&#039;&#039;&#039;  knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU shader filters ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines. It is now possible to do all kinds of video processing that was done in the CPU directly in the GPU.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to port some of the existing CPU filters to the GPU using shaders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The first task will be to identify all the video filters in VLC and identify the ones that could be done as shaders. Then implement them. Either in OpenGL shaders, Direct3D11 shaders, both and maybe Vulkan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;OpenGL&#039;&#039;&#039; or &#039;&#039;&#039;Direct3D11&#039;&#039;&#039; shaders knowledge as well as knowledge on video filters in general.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== libplacebo integration and improvement ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
libplacebo (https://github.com/haasn/libplacebo) is a new library for GPU-accelerated video/image rendering primitives.&lt;br /&gt;
&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines via its own plugins. We plan to use future graphics library (Metal and Vulkain) via libplacebo (that will implements them).&lt;br /&gt;
libplacebo should also handle colorimetry via shaders (only OpenGL for now) or via future graphic library API.&lt;br /&gt;
It will support HDR, jinc scaling, debanding...&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to improve Vulkan/Metal/colorimetry inside libplacebo and integrate it inside VLC as modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The first task is to have a working Vulkan or Metal rendering engine inside libplacebo using a basic test sample.&lt;br /&gt;
The second task is to integrate that works inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;OpenGL&#039;&#039;&#039;, &#039;&#039;&#039;Vulkan&#039;&#039;&#039;, &#039;&#039;&#039;Metal&#039;&#039;&#039;, or &#039;&#039;&#039;Colorimetry&#039;&#039;&#039; knowledge as well as knowledge on VLC vout display/window plugins.&lt;br /&gt;
&lt;br /&gt;
Working on Vulkan, Metal, Colorimetry, VLC integration may need more than one students.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLMC =&lt;br /&gt;
&lt;br /&gt;
== Port to Android ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, starting by Android.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the Android workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for Android. As libVLC works fine on Android, this is more focused on compiling the Qt part for Android.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the Android devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Geoffrey/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Port to iOS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;: &lt;br /&gt;
VLMC is now working on the desktop. It would be nice to port it also to the mobile world, also on iOS.&lt;br /&gt;
&lt;br /&gt;
This project would require to adapt to smaller screens, and simplify the UI to fit the iOS workflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix the VLMC build for iOS. As libVLC works fine on iOS, this is more focused on compiling the Qt part for iOS.&lt;br /&gt;
# Split more parts of the UI in components that are reusable on mobile.&lt;br /&gt;
# Change the components to fit the small resolutions of the iOS devices.&lt;br /&gt;
# Rewrite some UI components in QML.&lt;br /&gt;
# Write a simpler timeline widget for Mobile workflows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and access to Android devices.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Workflow rework ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but the media workflow is quite slow and is missing some common use cases.&lt;br /&gt;
&lt;br /&gt;
This should be fixed in [https://github.com/mltframework/mlt MLT] framework backend for libVLC and is the continuation from the work from the previous Summer of Code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the MLT libVLC backend codebase,&lt;br /&gt;
# Clean the backend and port it to a cleaner code state in C++,&lt;br /&gt;
# Benchmark the code and make it more efficient,&lt;br /&gt;
# Work to merge this backend upstream,&lt;br /&gt;
# Implement all the missing features in libVLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge, and understanding of multimedia concepts is a good positive point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow audio filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of audio filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add audio filters on the MLT framework backend using the [https://en.wikipedia.org/wiki/LADSPA LADSPA]/[http://lv2plug.in/ LV2] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Prepare visualizations, and notably for soundwave filters,&lt;br /&gt;
# Integrate those inside the timeline UI,&lt;br /&gt;
# Optimize.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and enough understanding of audio.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Workflow video filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of video filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add video filters on the MLT framework backend using the [https://git.sesse.net/?p=movit;a=summary movit] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Add transitions between clips&lt;br /&gt;
# Code the interface to manage those transitions,&lt;br /&gt;
# Optimize the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve multiplatform support ==&lt;br /&gt;
VLMC is aiming at being fully cross platform, but drifted a bit from that goal. While most VLMC&#039;s code is cross platform, and can be easily built targeting platforms, some dependencies might prove more difficult to build or compose with VLMC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix MLT cross compilation for Windows (This will most likely require patching directly inside MLT, all contributions must be sent upstream). &lt;br /&gt;
# Fix medialibrary code &amp;amp; build process on macOS (and potentially iOS). The medialibrary misses some platform specific code to be able to list all connected drives (hard drives &amp;amp; USB removable storage, mostly) along with filesystem browsing&lt;br /&gt;
# Update the documentation along the way&lt;br /&gt;
# Create jenkins build configuration to have nightly builds on jenkins.videolan.org &amp;amp; nightlies.videolan.org for all supported platforms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires buildsystems/toolchains knowledge, basic system programming on macOS &amp;amp; Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remote UI ==&lt;br /&gt;
&lt;br /&gt;
We would like to have a way to use VLMC from a web browser. You can easily imagine having a nice, shiny &amp;amp; simple UI for minimal movie edition, which would go hand in hand with the cloud storage feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
This task aims toward the uncoupling of the rendering backend &amp;amp; UI, as the renderer will run server side, while the UI runs on the client side.&lt;br /&gt;
&lt;br /&gt;
The idea is to be able to have a UI interacting with the renderer without having to be in the same process, or even machine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: jb, chouquette, fkuehne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== libmicrodns refactoring ==&lt;br /&gt;
&lt;br /&gt;
Our current mDNS discoverer is working, but is not so respectful of the RFC.&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* Device TTL support&lt;br /&gt;
* Device removal detection&lt;br /&gt;
* Better request pacing&lt;br /&gt;
* Delegate socket interactions to the caller&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
== libdsm SMBv2/3 support ==&lt;br /&gt;
&lt;br /&gt;
libdsm works great for SMBv1, but doesn&#039;t support later version of the protocol. This will become a problem soon, and we need to fix it.&lt;br /&gt;
&lt;br /&gt;
Possible improvements include:&lt;br /&gt;
* SMBv2 support&lt;br /&gt;
* SMBv3 support&lt;br /&gt;
* Unit testing&lt;br /&gt;
* Fuzzing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project require &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: chouquette, tguillem&lt;br /&gt;
&lt;br /&gt;
= Other ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
&lt;br /&gt;
* Integrate Rust inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve the PPAPI chrome plugin to add hardware decoding&lt;br /&gt;
* Improve the SMB/Samba share library&lt;br /&gt;
* Work on Vulkan output for VLC&lt;br /&gt;
* VLC javascript work&lt;br /&gt;
* Improve fast-seek in MP4 and WMV demuxers&lt;br /&gt;
* Improve id3 tag parsing.&lt;br /&gt;
&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Bridge module for GMI&#039;C or other video filters&lt;br /&gt;
* Automated Testing Environment like ffmpeg Fate (port ?) for demuxing, non hw decoding&lt;br /&gt;
{{GSoC}}&lt;/div&gt;</summary>
		<author><name>Tguillem</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2017&amp;diff=31833</id>
		<title>SoC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2017&amp;diff=31833"/>
		<updated>2017-02-07T17:09:57Z</updated>

		<summary type="html">&lt;p&gt;Tguillem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2017}}&lt;br /&gt;
&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp;amp; Information  ==&lt;br /&gt;
&lt;br /&gt;
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 [[VLMC]]. &lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]] and [[SoC 2016|2016]]. &lt;br /&gt;
&lt;br /&gt;
This page list the ideas for VLC and VLMC.&lt;br /&gt;
&lt;br /&gt;
=== VLC media player  ===&lt;br /&gt;
&lt;br /&gt;
{{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. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 40 millions from the main website and that&#039;s not including third-party distributions (Linux)! &lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN Movie Creator ===&lt;br /&gt;
[[VLMC]] is a cross-platform non-linear video editing software based on VLC technology. It was started as a final year student project at the French IT school [http://www.epitech.eu EPITECH].&lt;br /&gt;
&lt;br /&gt;
[[VLMC]] currently awaits a transition to the current libvlc API and it&#039;s actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code  ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLC and VLMC will be included in later releases.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.&lt;br /&gt;
&lt;br /&gt;
=== Compile VLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
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 &#039;&#039;#videolan&#039;&#039; (for VLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;Freenode&#039;&#039; network. It&#039;s open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
== Key ideas for VLC ==&lt;br /&gt;
&lt;br /&gt;
=== Fuzz VLC (and maybe LibVLC and VLC ports) with LibFuzzer ===&lt;br /&gt;
&lt;br /&gt;
libFuzzer ((http://llvm.org/docs/LibFuzzer.html).) is a library for coverage-guided fuzz testing.&lt;br /&gt;
&lt;br /&gt;
* 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 VLC project. The non exhaustive parts will be the following VLC modules API: &amp;quot;decoder&amp;quot;, &amp;quot;encoder, &amp;quot;access&amp;quot;, &amp;quot;packetizer&amp;quot;, &amp;quot;demuxer&amp;quot;. For each parts, the student will have to understand the module API in order to effectively implement the target.&lt;br /&gt;
&lt;br /&gt;
* 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...).&lt;br /&gt;
&lt;br /&gt;
* The third step is to host and run the fuzzer. It&#039;s not decided yet if the fuzzer will be hosted by google (https://github.com/google/oss-fuzz) or by the VideoLan association.&lt;br /&gt;
&lt;br /&gt;
* If there is enough time, the fourth and final step is to fix the issues that has emerged during the previous steps&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Other ideas coming soon ===&lt;br /&gt;
&lt;br /&gt;
== Key ideas for VLMC ==&lt;br /&gt;
&lt;br /&gt;
=== Other ideas coming soon ===&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;/div&gt;</summary>
		<author><name>Tguillem</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2017&amp;diff=31832</id>
		<title>SoC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2017&amp;diff=31832"/>
		<updated>2017-02-07T14:04:13Z</updated>

		<summary type="html">&lt;p&gt;Tguillem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2017}}&lt;br /&gt;
&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp;amp; Information  ==&lt;br /&gt;
&lt;br /&gt;
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 [[VLMC]]. &lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]] and [[SoC 2016|2016]]. &lt;br /&gt;
&lt;br /&gt;
This page list the ideas for VLC and VLMC.&lt;br /&gt;
&lt;br /&gt;
=== VLC media player  ===&lt;br /&gt;
&lt;br /&gt;
{{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. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 40 millions from the main website and that&#039;s not including third-party distributions (Linux)! &lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN Movie Creator ===&lt;br /&gt;
[[VLMC]] is a cross-platform non-linear video editing software based on VLC technology. It was started as a final year student project at the French IT school [http://www.epitech.eu EPITECH].&lt;br /&gt;
&lt;br /&gt;
[[VLMC]] currently awaits a transition to the current libvlc API and it&#039;s actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code  ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLC and VLMC will be included in later releases.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.&lt;br /&gt;
&lt;br /&gt;
=== Compile VLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
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 &#039;&#039;#videolan&#039;&#039; (for VLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;Freenode&#039;&#039; network. It&#039;s open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
== Key ideas for VLC ==&lt;br /&gt;
&lt;br /&gt;
=== Fuzz VLC (and maybe LibVLC and VLC ports) with LibFuzzer ===&lt;br /&gt;
&lt;br /&gt;
libFuzzer ((http://llvm.org/docs/LibFuzzer.html).) is a library for coverage-guided fuzz testing.&lt;br /&gt;
&lt;br /&gt;
* 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 VLC project. The non exhaustive parts will be the following VLC modules API: &amp;quot;decoder&amp;quot;, &amp;quot;packetizer&amp;quot;, &amp;quot;demuxer&amp;quot;. For each parts, the student will have to understand the module API in order to effectively implement the target.&lt;br /&gt;
&lt;br /&gt;
* 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...).&lt;br /&gt;
&lt;br /&gt;
* The third step is to host and run the fuzzer. It&#039;s not decided yet if the fuzzer will be hosted by google (https://github.com/google/oss-fuzz) or by the VideoLan association.&lt;br /&gt;
&lt;br /&gt;
* If there is enough time, the fourth and final step is to fix the issues that has emerged during the previous steps&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Other ideas coming soon ===&lt;br /&gt;
&lt;br /&gt;
== Key ideas for VLMC ==&lt;br /&gt;
&lt;br /&gt;
=== Other ideas coming soon ===&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;/div&gt;</summary>
		<author><name>Tguillem</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2017&amp;diff=31831</id>
		<title>SoC 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2017&amp;diff=31831"/>
		<updated>2017-02-07T13:59:39Z</updated>

		<summary type="html">&lt;p&gt;Tguillem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2017}}&lt;br /&gt;
&lt;br /&gt;
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!&lt;br /&gt;
&lt;br /&gt;
== Introduction &amp;amp;amp; Information  ==&lt;br /&gt;
&lt;br /&gt;
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 [[VLMC]]. &lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]] and [[SoC 2016|2016]]. &lt;br /&gt;
&lt;br /&gt;
This page list the ideas for VLC and VLMC.&lt;br /&gt;
&lt;br /&gt;
=== VLC media player  ===&lt;br /&gt;
&lt;br /&gt;
{{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. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 40 millions from the main website and that&#039;s not including third-party distributions (Linux)! &lt;br /&gt;
&lt;br /&gt;
You can find more information on [http://en.wikipedia.org/wiki/VLC_media_player VLC on Wikipedia] or on this [[Main Page|wiki]].&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN Movie Creator ===&lt;br /&gt;
[[VLMC]] is a cross-platform non-linear video editing software based on VLC technology. It was started as a final year student project at the French IT school [http://www.epitech.eu EPITECH].&lt;br /&gt;
&lt;br /&gt;
[[VLMC]] currently awaits a transition to the current libvlc API and it&#039;s actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code  ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for VLC and VLMC will be included in later releases.&lt;br /&gt;
&lt;br /&gt;
All projects are covered by the GPL (v2+) or LGPL (v2.1+) licenses depending on the module.&lt;br /&gt;
&lt;br /&gt;
=== Compile VLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
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 &#039;&#039;#videolan&#039;&#039; (for VLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;Freenode&#039;&#039; network. It&#039;s open to any kind of discussion. Usage issues, questions how to compile VLC/VLMC, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
== Key ideas for VLC ==&lt;br /&gt;
&lt;br /&gt;
== Key ideas for VLMC ==&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;/div&gt;</summary>
		<author><name>Tguillem</name></author>
	</entry>
</feed>