<?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=J-b</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=J-b"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/J-b/"/>
	<updated>2026-11-04T14:37:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66760</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66760"/>
		<updated>2026-02-16T10:56:58Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Other short ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested.&lt;br /&gt;
&lt;br /&gt;
The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac.  &lt;br /&gt;
Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Android Medialibrary cache management ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
for upcoming features, the Android port (first and then all the ports) will need a medialibrary caching mechanism. https://code.videolan.org/videolan/medialibrary/-/issues/293&lt;br /&gt;
&lt;br /&gt;
Using the new libvlc HTTP client, the medialibrary should be able to download a media, save its download state in the DB and expose all the needed APIs to the ports.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
- Write the full API&lt;br /&gt;
- Download/delete local files &lt;br /&gt;
- Persist the state in the DB&lt;br /&gt;
- Send the download events&lt;br /&gt;
Requirements: This projects requires C++ and SQL knownledge. Java/JNI knowledge can help to (but can be learned)&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: Alaric Senat, Nicolas Pomepuy&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== Vulkan video filters: tonemapping and subtitles ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC has a work-in-progress Vulkan video output (branch), but it is missing features that already exist in the OpenGL output. This project focuses on integrating libplacebo tonemapping and implementing subtitle rendering through the Vulkan pipeline.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* libplacebo tonemapping: use the libplacebo API to generate Vulkan shaders for HDR tonemapping, and integrate them into VLC&#039;s Vulkan rendering pipeline;&lt;br /&gt;
* subtitles handling: implement a Vulkan subtitle renderer (texture upload, blending, render pass integration), based on the existing OpenGL implementation.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
This project requires good C knowledge, good Vulkan knowledge, and familiarity with graphics pipelines. OpenGL experience is a plus for reading the reference implementation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem&lt;br /&gt;
&lt;br /&gt;
== Vulkan video filters: deinterlace, adjust and others ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
Continuing the work on VLC&#039;s Vulkan video output (branch), this project ports the remaining video filters from the OpenGL output to Vulkan. This includes the deinterlace filter and adjust-style filters (brightness, contrast, saturation, etc.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* deinterlace filter: port the existing deinterlace filter to Vulkan, using Vulkan compute or fragment shaders for multi-field temporal processing;&lt;br /&gt;
* adjust and other video filters: port adjust (brightness, contrast, saturation, gamma) and other video filters to Vulkan shaders;&lt;br /&gt;
* all existing OpenGL video filters should be ported.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
This project requires good C knowledge, good Vulkan and OpenGL knowledge, and experience writing GPU shaders (GLSL/SPIR-V).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. &lt;br /&gt;
&lt;br /&gt;
We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Use vcpkg contribs ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC depends on 130 contrib packages that are external libraries used by VLC and its modules.&lt;br /&gt;
A lot of these packages are also available in package systems like vcpkg. This could be an alternative way&lt;br /&gt;
to build VLC by using common packages. This would allow more native builds of VLC, especially on Windows &lt;br /&gt;
(ie without relying on a POSIX shell).&lt;br /&gt;
&lt;br /&gt;
The meson build system is capable of using vcpkg packages although it&#039;s not the default mode of vcpkg.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add support for as many packages as possible in the vcpkg system to match the existing contribs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 main task will be to add package dependencies in vcpkg for all the platforms we support and then adapting the patches found in contribs&lt;br /&gt;
to the same packages found in vcpkg. This should be usable from our meson build system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires knownledge of &#039;&#039;&#039;meson&#039;&#039;&#039;, &#039;&#039;&#039;make&#039;&#039;&#039; and &#039;&#039;&#039;CMake&#039;&#039;&#039; and package dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme, Marvin Scholz&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66759</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66759"/>
		<updated>2026-02-16T10:56:46Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Vulkan video filters: deinterlace, adjust and others */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested.&lt;br /&gt;
&lt;br /&gt;
The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac.  &lt;br /&gt;
Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Android Medialibrary cache management ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
for upcoming features, the Android port (first and then all the ports) will need a medialibrary caching mechanism. https://code.videolan.org/videolan/medialibrary/-/issues/293&lt;br /&gt;
&lt;br /&gt;
Using the new libvlc HTTP client, the medialibrary should be able to download a media, save its download state in the DB and expose all the needed APIs to the ports.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
- Write the full API&lt;br /&gt;
- Download/delete local files &lt;br /&gt;
- Persist the state in the DB&lt;br /&gt;
- Send the download events&lt;br /&gt;
Requirements: This projects requires C++ and SQL knownledge. Java/JNI knowledge can help to (but can be learned)&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: Alaric Senat, Nicolas Pomepuy&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== Vulkan video filters: tonemapping and subtitles ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC has a work-in-progress Vulkan video output (branch), but it is missing features that already exist in the OpenGL output. This project focuses on integrating libplacebo tonemapping and implementing subtitle rendering through the Vulkan pipeline.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* libplacebo tonemapping: use the libplacebo API to generate Vulkan shaders for HDR tonemapping, and integrate them into VLC&#039;s Vulkan rendering pipeline;&lt;br /&gt;
* subtitles handling: implement a Vulkan subtitle renderer (texture upload, blending, render pass integration), based on the existing OpenGL implementation.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
This project requires good C knowledge, good Vulkan knowledge, and familiarity with graphics pipelines. OpenGL experience is a plus for reading the reference implementation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem&lt;br /&gt;
&lt;br /&gt;
== Vulkan video filters: deinterlace, adjust and others ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
Continuing the work on VLC&#039;s Vulkan video output (branch), this project ports the remaining video filters from the OpenGL output to Vulkan. This includes the deinterlace filter and adjust-style filters (brightness, contrast, saturation, etc.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* deinterlace filter: port the existing deinterlace filter to Vulkan, using Vulkan compute or fragment shaders for multi-field temporal processing;&lt;br /&gt;
* adjust and other video filters: port adjust (brightness, contrast, saturation, gamma) and other video filters to Vulkan shaders;&lt;br /&gt;
* all existing OpenGL video filters should be ported.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
This project requires good C knowledge, good Vulkan and OpenGL knowledge, and experience writing GPU shaders (GLSL/SPIR-V).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. &lt;br /&gt;
&lt;br /&gt;
We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Use vcpkg contribs ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC depends on 130 contrib packages that are external libraries used by VLC and its modules.&lt;br /&gt;
A lot of these packages are also available in package systems like vcpkg. This could be an alternative way&lt;br /&gt;
to build VLC by using common packages. This would allow more native builds of VLC, especially on Windows &lt;br /&gt;
(ie without relying on a POSIX shell).&lt;br /&gt;
&lt;br /&gt;
The meson build system is capable of using vcpkg packages although it&#039;s not the default mode of vcpkg.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add support for as many packages as possible in the vcpkg system to match the existing contribs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 main task will be to add package dependencies in vcpkg for all the platforms we support and then adapting the patches found in contribs&lt;br /&gt;
to the same packages found in vcpkg. This should be usable from our meson build system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires knownledge of &#039;&#039;&#039;meson&#039;&#039;&#039;, &#039;&#039;&#039;make&#039;&#039;&#039; and &#039;&#039;&#039;CMake&#039;&#039;&#039; and package dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme, Marvin Scholz&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66758</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66758"/>
		<updated>2026-02-16T10:56:23Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* VLC macOS interface  redesign */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested.&lt;br /&gt;
&lt;br /&gt;
The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac.  &lt;br /&gt;
Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Android Medialibrary cache management ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
for upcoming features, the Android port (first and then all the ports) will need a medialibrary caching mechanism. https://code.videolan.org/videolan/medialibrary/-/issues/293&lt;br /&gt;
&lt;br /&gt;
Using the new libvlc HTTP client, the medialibrary should be able to download a media, save its download state in the DB and expose all the needed APIs to the ports.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
- Write the full API&lt;br /&gt;
- Download/delete local files &lt;br /&gt;
- Persist the state in the DB&lt;br /&gt;
- Send the download events&lt;br /&gt;
Requirements: This projects requires C++ and SQL knownledge. Java/JNI knowledge can help to (but can be learned)&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: Alaric Senat, Nicolas Pomepuy&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== Vulkan video filters: tonemapping and subtitles ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC has a work-in-progress Vulkan video output (branch), but it is missing features that already exist in the OpenGL output. This project focuses on integrating libplacebo tonemapping and implementing subtitle rendering through the Vulkan pipeline.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* libplacebo tonemapping: use the libplacebo API to generate Vulkan shaders for HDR tonemapping, and integrate them into VLC&#039;s Vulkan rendering pipeline;&lt;br /&gt;
* subtitles handling: implement a Vulkan subtitle renderer (texture upload, blending, render pass integration), based on the existing OpenGL implementation.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
This project requires good C knowledge, good Vulkan knowledge, and familiarity with graphics pipelines. OpenGL experience is a plus for reading the reference implementation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem&lt;br /&gt;
&lt;br /&gt;
== Vulkan video filters: deinterlace, adjust and others ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
Continuing the work on VLC&#039;s Vulkan video output (branch), this project ports the remaining video filters from the OpenGL output to Vulkan. This includes the deinterlace filter and adjust-style filters (brightness, contrast, saturation, etc.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* deinterlace filter: port the existing deinterlace filter to Vulkan, using Vulkan compute or fragment shaders for multi-field temporal processing;&lt;br /&gt;
* adjust and other video filters: port adjust (brightness, contrast, saturation, gamma) and other video filters to Vulkan shaders;&lt;br /&gt;
* all existing OpenGL video filters should be ported.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
This project requires good C knowledge, good Vulkan and OpenGL knowledge, and experience writing GPU shaders (GLSL/SPIR-V).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem&lt;br /&gt;
&lt;br /&gt;
@fkuehne @j-b for https://wiki.videolan.org/SoC_2026 (you can remove the line &amp;quot;Improve Vulkan output for VLC, including HDR support)&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. &lt;br /&gt;
&lt;br /&gt;
We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Use vcpkg contribs ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC depends on 130 contrib packages that are external libraries used by VLC and its modules.&lt;br /&gt;
A lot of these packages are also available in package systems like vcpkg. This could be an alternative way&lt;br /&gt;
to build VLC by using common packages. This would allow more native builds of VLC, especially on Windows &lt;br /&gt;
(ie without relying on a POSIX shell).&lt;br /&gt;
&lt;br /&gt;
The meson build system is capable of using vcpkg packages although it&#039;s not the default mode of vcpkg.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add support for as many packages as possible in the vcpkg system to match the existing contribs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 main task will be to add package dependencies in vcpkg for all the platforms we support and then adapting the patches found in contribs&lt;br /&gt;
to the same packages found in vcpkg. This should be usable from our meson build system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires knownledge of &#039;&#039;&#039;meson&#039;&#039;&#039;, &#039;&#039;&#039;make&#039;&#039;&#039; and &#039;&#039;&#039;CMake&#039;&#039;&#039; and package dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme, Marvin Scholz&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66757</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66757"/>
		<updated>2026-02-16T10:55:51Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Android Medialibrary cache management ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
for upcoming features, the Android port (first and then all the ports) will need a medialibrary caching mechanism. https://code.videolan.org/videolan/medialibrary/-/issues/293&lt;br /&gt;
&lt;br /&gt;
Using the new libvlc HTTP client, the medialibrary should be able to download a media, save its download state in the DB and expose all the needed APIs to the ports.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
- Write the full API&lt;br /&gt;
- Download/delete local files &lt;br /&gt;
- Persist the state in the DB&lt;br /&gt;
- Send the download events&lt;br /&gt;
Requirements: This projects requires C++ and SQL knownledge. Java/JNI knowledge can help to (but can be learned)&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: Alaric Senat, Nicolas Pomepuy&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== Vulkan video filters: tonemapping and subtitles ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC has a work-in-progress Vulkan video output (branch), but it is missing features that already exist in the OpenGL output. This project focuses on integrating libplacebo tonemapping and implementing subtitle rendering through the Vulkan pipeline.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* libplacebo tonemapping: use the libplacebo API to generate Vulkan shaders for HDR tonemapping, and integrate them into VLC&#039;s Vulkan rendering pipeline;&lt;br /&gt;
* subtitles handling: implement a Vulkan subtitle renderer (texture upload, blending, render pass integration), based on the existing OpenGL implementation.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
This project requires good C knowledge, good Vulkan knowledge, and familiarity with graphics pipelines. OpenGL experience is a plus for reading the reference implementation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem&lt;br /&gt;
&lt;br /&gt;
== Vulkan video filters: deinterlace, adjust and others ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
Continuing the work on VLC&#039;s Vulkan video output (branch), this project ports the remaining video filters from the OpenGL output to Vulkan. This includes the deinterlace filter and adjust-style filters (brightness, contrast, saturation, etc.).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* deinterlace filter: port the existing deinterlace filter to Vulkan, using Vulkan compute or fragment shaders for multi-field temporal processing;&lt;br /&gt;
* adjust and other video filters: port adjust (brightness, contrast, saturation, gamma) and other video filters to Vulkan shaders;&lt;br /&gt;
* all existing OpenGL video filters should be ported.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
This project requires good C knowledge, good Vulkan and OpenGL knowledge, and experience writing GPU shaders (GLSL/SPIR-V).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem&lt;br /&gt;
&lt;br /&gt;
@fkuehne @j-b for https://wiki.videolan.org/SoC_2026 (you can remove the line &amp;quot;Improve Vulkan output for VLC, including HDR support)&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. &lt;br /&gt;
&lt;br /&gt;
We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Use vcpkg contribs ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC depends on 130 contrib packages that are external libraries used by VLC and its modules.&lt;br /&gt;
A lot of these packages are also available in package systems like vcpkg. This could be an alternative way&lt;br /&gt;
to build VLC by using common packages. This would allow more native builds of VLC, especially on Windows &lt;br /&gt;
(ie without relying on a POSIX shell).&lt;br /&gt;
&lt;br /&gt;
The meson build system is capable of using vcpkg packages although it&#039;s not the default mode of vcpkg.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add support for as many packages as possible in the vcpkg system to match the existing contribs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 main task will be to add package dependencies in vcpkg for all the platforms we support and then adapting the patches found in contribs&lt;br /&gt;
to the same packages found in vcpkg. This should be usable from our meson build system.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires knownledge of &#039;&#039;&#039;meson&#039;&#039;&#039;, &#039;&#039;&#039;make&#039;&#039;&#039; and &#039;&#039;&#039;CMake&#039;&#039;&#039; and package dependencies.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme, Marvin Scholz&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66755</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66755"/>
		<updated>2026-02-05T18:52:33Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Android Medialibrary cache management ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
for upcoming features, the Android port (first and then all the ports) will need a medialibrary caching mechanism. https://code.videolan.org/videolan/medialibrary/-/issues/293&lt;br /&gt;
&lt;br /&gt;
Using the new libvlc HTTP client, the medialibrary should be able to download a media, save its download state in the DB and expose all the needed APIs to the ports.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
- Write the full API&lt;br /&gt;
- Download/delete local files &lt;br /&gt;
- Persist the state in the DB&lt;br /&gt;
- Send the download events&lt;br /&gt;
Requirements: This projects requires C++ and SQL knownledge. Java/JNI knowledge can help to (but can be learned)&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: Alaric Senat, Nicolas Pomepuy&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. &lt;br /&gt;
&lt;br /&gt;
We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66754</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66754"/>
		<updated>2026-02-05T18:51:35Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Medialibrary cache management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Android Medialibrary cache management ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
for upcoming features, the Android port (first and then all the ports) will need a medialibrary caching mechanism. https://code.videolan.org/videolan/medialibrary/-/issues/293&lt;br /&gt;
&lt;br /&gt;
Using the new libvlc HTTP client, the medialibrary should be able to download a media, save its download state in the DB and expose all the needed APIs to the ports.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
- Write the full API&lt;br /&gt;
- Download/delete local files &lt;br /&gt;
- Persist the state in the DB&lt;br /&gt;
- Send the download events&lt;br /&gt;
Requirements: This projects requires C++ and SQL knownledge. Java/JNI knowledge can help to (but can be learned)&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: Alaric Senat, Nicolas Pomepuy&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. &lt;br /&gt;
&lt;br /&gt;
We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66753</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66753"/>
		<updated>2026-02-05T18:48:11Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Medialibrary cache management ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description:&#039;&#039;&#039;&lt;br /&gt;
for upcoming features, the Android port (first and then all the ports) will need a medialibrary caching mechanism. https://code.videolan.org/videolan/medialibrary/-/issues/293&lt;br /&gt;
&lt;br /&gt;
Using the new libvlc HTTP client, the medialibrary should be able to download a media, save its download state in the DB and expose all the needed APIs to the ports.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
- Write the full API&lt;br /&gt;
- Download/delete local files &lt;br /&gt;
- Persist the state in the DB&lt;br /&gt;
- Send the download events&lt;br /&gt;
Requirements: This projects requires C++ and SQL knownledge. Java/JNI knowledge can help to (but can be learned)&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: Alaric Senat, Nicolas Pomepuy&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. &lt;br /&gt;
&lt;br /&gt;
We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66752</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66752"/>
		<updated>2026-02-05T18:46:22Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Lua Declarative UI Framework for Extensions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. &lt;br /&gt;
&lt;br /&gt;
We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66751</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66751"/>
		<updated>2026-02-05T18:46:08Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* demux Rust bindings and AVI module for VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66750</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66750"/>
		<updated>2026-02-05T18:45:47Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66749</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66749"/>
		<updated>2026-02-05T18:45:40Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66748</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66748"/>
		<updated>2026-02-05T18:43:36Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC &amp;amp; libVLC */ LUA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Lua Declarative UI Framework for Extensions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The current dialog API available to Lua extensions is limited to a small set of&lt;br /&gt;
widgets (labels, buttons, text inputs, checkboxes, dropdowns, lists) placed on a&lt;br /&gt;
fixed grid, making it difficult to build rich extension interfaces. We want to&lt;br /&gt;
replace this with a modern declarative UI model inspired by SwiftUI and Jetpack&lt;br /&gt;
Compose, where the extension describes its interface as a function of state and&lt;br /&gt;
the framework handles rendering and updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 project involves designing a new vlc.ui Lua module where extensions&lt;br /&gt;
declare their interface using nested widget constructor calls that return a&lt;br /&gt;
description table rather than imperatively creating widgets one by one. A&lt;br /&gt;
reactive state primitive (vlc.ui.state()) should use Lua metatables to track&lt;br /&gt;
writes and mark the UI as dirty for re-rendering.&lt;br /&gt;
&lt;br /&gt;
On the C side, a bridge in modules/lua/libs/ui.c will walk the Lua widget&lt;br /&gt;
tree, diff it against the previous tree, and emit create/update/remove&lt;br /&gt;
operations toward a platform renderer. The initial renderer target is the Qt/QML&lt;br /&gt;
interface, mapping abstract widgets (column, row, text, button, text_field,&lt;br /&gt;
toggle, slider, dropdown, list, image, progress) to their QML equivalents. The&lt;br /&gt;
framework should support layout containers with spacing, alignment and flexible&lt;br /&gt;
sizing, a small set of semantic styles (title, body, caption, primary,&lt;br /&gt;
destructive) rather than raw values, and efficient list rendering with a row&lt;br /&gt;
template function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The old vlc.dialog API must remain functional for backward compatibility.&lt;br /&gt;
Porting one or two existing extensions to the new API will serve as validation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; knowledge for the bridge and tree diffing&lt;br /&gt;
logic, familiarity with &#039;&#039;&#039;Lua&#039;&#039;&#039; and its C API for the module implementation,&lt;br /&gt;
and some experience&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;Qt/QML&#039;&#039;&#039; for the renderer side. Understanding of reactive UI paradigms&lt;br /&gt;
(SwiftUI, Compose, React) is strongly recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
== Lua API HTTP bindings ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
To make interacting with REST APIs in Lua easier and support other HTTP verbs than just GET, we need bindings&lt;br /&gt;
from the VLC HTTP library to our Lua script API.&lt;br /&gt;
&lt;br /&gt;
This projects goal is to add a simple Lua API to do HTTP GET, POST and HEAD requests and possibly some more abstract&lt;br /&gt;
service API, depending on project duration.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC already has a mostly complete HTTP API that is able to do HTTP(s) requests and handle the reply. The main task for this GSoC will involve around how to expose this very low level API in a ergonomic and easy to use fashion as Lua APIs for our Lua scripts to use. Abstract around the session handling and cookie handling and provide ways to properly construct a HTTP request from Lua, with custom HTTP headers, if desired, and a way to fetch the reply status, headers, and read the body content.&lt;br /&gt;
&lt;br /&gt;
Some minor changes to the VLC HTTP library might be necessary in some cases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires strong &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;Lua&#039;&#039;&#039; API knowledge, a thorough understanding of how Lua bindings and the HTTP protocol works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Marvin Scholz, Alexandre Janniaux&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lua Script Test Harness ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
VLC and the community ship Lua scripts (playlist parsers, service discovery,&lt;br /&gt;
extensions, art fetchers) but has no way to test them outside of a running VLC&lt;br /&gt;
instance. When a website changes its markup, the corresponding playlist parser&lt;br /&gt;
breaks silently and the problem is only discovered through user bug reports.&lt;br /&gt;
&lt;br /&gt;
We want a lightweight test harness that can load and exercise VLC Lua scripts&lt;br /&gt;
against fixture data without requiring a VLC build at all.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&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 core idea is to build a standalone binary that embeds a Lua interpreter,&lt;br /&gt;
registers the same `vlc.*` module tables that VLC exposes to scripts, but backs&lt;br /&gt;
them with mock implementations instead of real VLC core calls.&lt;br /&gt;
&lt;br /&gt;
A recording mode where a patched VLC session captures real HTTP responses as&lt;br /&gt;
fixture files would make it easy to turn bug reports into reproductible&lt;br /&gt;
regression tests for lua writers.&lt;br /&gt;
&lt;br /&gt;
The deliverable is a test runner that can be use to start the different scripts,&lt;br /&gt;
like: vlc-lua-mock --mode=playlist --input http://playlist.url/foo.m3u8 playlist.lua&lt;br /&gt;
and support extensions, and provide a &amp;quot;mock&amp;quot; framework to lua to be able to run&lt;br /&gt;
unittests as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires C or Rust knowledge for refactoring,&lt;br /&gt;
compiling and linking against VLC&#039;s Lua binding sources and writing mock&lt;br /&gt;
backends, and some &#039;&#039;&#039;Lua&#039;&#039;&#039; knowledge for the test framework, fixture engine,&lt;br /&gt;
and writing the actual tests.&lt;br /&gt;
&lt;br /&gt;
Familiarity with test frameworks and test methodology is a plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: &#039;Alexandre Janniaux (espresso)&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66747</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66747"/>
		<updated>2026-02-03T11:40:24Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66746</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66746"/>
		<updated>2026-02-03T11:40:01Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for dav1d and dav2d */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66745</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66745"/>
		<updated>2026-02-03T11:39:48Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Other short ideas for VLC &amp;amp; libVLC = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66744</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66744"/>
		<updated>2026-02-03T11:39:30Z</updated>

		<summary type="html">&lt;p&gt;J-b: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC &amp;amp; libVLC =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for VLC dependencies =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66743</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66743"/>
		<updated>2026-02-03T11:35:20Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
== libspatialaudio acceleration ==&lt;br /&gt;
&lt;br /&gt;
Our current libspatialaudio is working, but we need it to become faster&lt;br /&gt;
&lt;br /&gt;
Work to be done&lt;br /&gt;
* Plug checkasm&lt;br /&gt;
* Profile functions&lt;br /&gt;
* Write x86 or ARM assembly to make it faster&lt;br /&gt;
* Test&lt;br /&gt;
* Repeat&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66742</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66742"/>
		<updated>2026-02-03T11:33:44Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for dav2d */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d and dav2d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d RISC-V optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== dav2d ARM optimizations ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV2 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
This is less complex than what it seems!&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Understand of ARM assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write ARM functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66741</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66741"/>
		<updated>2026-02-03T11:32:07Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Improve libNDI and integrate in VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libnoidea and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libnoidea project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, notably more recent versions, and implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66740</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66740"/>
		<updated>2026-02-03T11:30:55Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* VLC Skins2 interface update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help. Fixing the Winamp skins compatibilities would be nice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66739</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66739"/>
		<updated>2026-02-03T11:24:10Z</updated>

		<summary type="html">&lt;p&gt;J-b: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2026}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2026] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;Rust&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]], [[SoC_2023|2023]], [[SoC_2024|2024]] and [[SoC_2025|2025]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;dav2d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d / dav2d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav2d&#039;&#039;&#039; is the reference AV2 decoder that is all new.&lt;br /&gt;
&lt;br /&gt;
Those are very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d and dav2d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK&#039;&#039;&#039; to the team to get more 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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC watchOS port ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit recently added support for playback of audio files on watchOS with support for http streams coming in a future update. The idea is to create a new, standalone app for watchOS that can play local files on device with a good way to synchronize those either from a computer or the app on the companion iPhone. The UI development needs to be done in SwiftUI following the restrictions of the platform.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Diogo Simao Marques, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== demux Rust bindings and AVI module for VLC ==&lt;br /&gt;
&lt;br /&gt;
VLC has already its first Rust (logger) module: https://code.videolan.org/videolan/vlc/-/commit/e8e46b0d915d153a58d002c9d6f19a7dbdfeeca9&lt;br /&gt;
There was a proposal to add several Rust bindings and example: https://code.videolan.org/videolan/vlc/-/merge_requests/2738&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Adapt demux API Rust bindings to upstream VLC&lt;br /&gt;
* Add a new AVI demux module to test the new bindings (Using the nom crate: https://crates.io/crates/nom/)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Thomas Guillem and Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== integrate checkasm tooling and improve existing asm coverage ==&lt;br /&gt;
&lt;br /&gt;
VLC has some amount of existing assembly (yadif, video chroma) but we lack test coverage for it and also could use more for newer architectures&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Integrate checkasm for validation (against a C baseline) and benchmarking (similarly to what&#039;s done in dav1d)&lt;br /&gt;
* Convert the existing assembly to use it&lt;br /&gt;
* Add new optimizations for things like audio/video format conversions, filters and also for newer arch&#039;s (riscv etc.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h or 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentors&#039;&#039;&#039;: Marvin Scholz, Nathan Egge, Tristan Matthews&lt;br /&gt;
&lt;br /&gt;
== libvlc Wayland API ==&lt;br /&gt;
&lt;br /&gt;
In order to allow easy integration of VLC video rendering into application that uses Wayland, similarly to what we provide for X11 or HWND.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Provide a method to expose external Wayland surface and additional mechanisms to libvlc.&lt;br /&gt;
&lt;br /&gt;
* Write a sample application to illustrate how to use the API&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires some good C experience&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Pierre Lamot&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VDD24&amp;diff=62273</id>
		<title>VDD24</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VDD24&amp;diff=62273"/>
		<updated>2024-11-03T01:37:08Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Sunday, November 3rd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VDD}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Welcome to Video Dev Days 2024&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[VideoLAN]] non-profit organization is happy to invite you to the multimedia open-source event of the fall!&lt;br /&gt;
&lt;br /&gt;
For the thirteenth edition, people from VideoLAN, FFmpeg and other multimedia-related open-source communities will meet in &#039;&#039;&#039;séoul&#039;&#039;&#039; on 2 and 3 November 2024. We will discuss and work on the future of the open-source multimedia community.&lt;br /&gt;
&lt;br /&gt;
This is a very technical conference, focused on low-level multimedia.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
== Friday, November 1st ==&lt;br /&gt;
&lt;br /&gt;
* Community bonding day&lt;br /&gt;
&lt;br /&gt;
    The meeting point is at 09:30 sharp at the Deoksugung Palace, at the ticket entrance, near the City Hall.&lt;br /&gt;
The game is LONG and MORE difficult than previous years, so be there on time.&lt;br /&gt;
&lt;br /&gt;
You must do teams between 4 and 6 people, and have a name for your team. 🙂&lt;br /&gt;
&lt;br /&gt;
Further instructions will be given to you, if you dare showing up on time.&lt;br /&gt;
&lt;br /&gt;
* From 19:00, drinks at&lt;br /&gt;
&lt;br /&gt;
    행2PM8PM, 46-29 Jeo-dong 2(i)-ga, Jung District&lt;br /&gt;
&lt;br /&gt;
== Saturday, November 2nd ==&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Talks have no specific order yet&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 10%;&amp;quot; | Time || Auditorium &lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;09:00 - 09:30&#039;&#039;&#039; ||  style=&amp;quot;background: silver;&amp;quot; | Registration&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;09:30 - 10:00&#039;&#039;&#039; || &#039;&#039;&#039;Opening Remarks - Updates about community&#039;&#039;&#039; by Jean-Baptiste Kempf, VideoLAN&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:00 - 10:20&#039;&#039;&#039; || &#039;&#039;&#039;Ensuring the future of assembly language programming&#039;&#039;&#039; by Kieran Kunhya, Open Broadcast Systems Ltd.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:20 - 10:40&#039;&#039;&#039; || &#039;&#039;&#039;State of the ffmpeg CLI &amp;amp; MV-HEVC decoding&#039;&#039;&#039; by Anton Khirnov, FFmpeg&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:40 - 11:00&#039;&#039;&#039; || style=&amp;quot;background: silver;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:00 - 11:25&#039;&#039;&#039; || &#039;&#039;&#039;CheckASM (temporary topic)&#039;&#039;&#039; by Henrik Gramner, Two Orioles&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:25 - 11:50&#039;&#039;&#039; || &#039;&#039;&#039;3D and Multiview -- FFMPEG Applications and Workflows&#039;&#039;&#039; by Alaric Hamacher, Kwangwoon University&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:50 - 12:10&#039;&#039;&#039; || &#039;&#039;&#039;Hijacking AI CPU extension for multimedia&#039;&#039;&#039; by Rémi-Denis Courmont, VideoLAN&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;12:10 - 12:30&#039;&#039;&#039; || &#039;&#039;&#039;Dynamic Filter Loading at Meta&#039;&#039;&#039; by Wes Castro, Meta&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;12:30 - 14:00&#039;&#039;&#039; || style=&amp;quot;background: silver;&amp;quot; |  &#039;&#039;&#039;Lunch break&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;14:00 - 18:00&#039;&#039;&#039; ||&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 10%;&amp;quot; | Time || Room 1 || Room 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;14:00 - 16:00&#039;&#039;&#039; || &#039;&#039;&#039;VLC Technical meeting&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg meeting&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;16:00 - 18:00&#039;&#039;&#039; ||   ||  &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;19:00 - 21:00&#039;&#039;&#039; ||colspan=3|  &#039;&#039;&#039;Community Dinner&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN community dinner ===&lt;br /&gt;
    Hangaram (한가람)&lt;br /&gt;
    25 Namdaemun-ro 5-gil, Jung District, Séoul&lt;br /&gt;
&lt;br /&gt;
== Sunday, November 3rd ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 10%; text-align: center;&amp;quot; | Time || Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| &#039;&#039;&#039;10:00 - 10:20&#039;&#039;&#039; || &#039;&#039;&#039;LLVM-MingW updates&#039;&#039;&#039; by Martin Storsjö&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:20 - 10:35&#039;&#039;&#039; || &#039;&#039;&#039;Kodi updates&#039;&#039;&#039; by Kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:35 - 10:50&#039;&#039;&#039; || &#039;&#039;&#039;Compression for Virtual Production&#039;&#039;&#039; by Julien Zouein&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:50 - 11:00&#039;&#039;&#039; || &#039;&#039;&#039;IAMF&#039;&#039;&#039; by TD&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:00 - 11:15&#039;&#039;&#039; || &#039;&#039;&#039;RISC-V&#039;&#039;&#039; by Nathan&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:15 - 11:25&#039;&#039;&#039; || &#039;&#039;&#039;APV&#039;&#039;&#039; by Samsung&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:25 - 11:35&#039;&#039;&#039; || &#039;&#039;&#039;Asm debugging&#039;&#039;&#039; by Martin&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:35 - 11:45&#039;&#039;&#039; || &#039;&#039;&#039;FFGlitch&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:45 - 11:50&#039;&#039;&#039; || &#039;&#039;&#039;Time to generate videos&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:50 - 12:05&#039;&#039;&#039; || &#039;&#039;&#039;dav1d&#039;&#039;&#039; by Ronald&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;12:05 - 12:15&#039;&#039;&#039; || &#039;&#039;&#039;Taxes&#039;&#039;&#039; by Ronald&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;12:15 - 12:30&#039;&#039;&#039; || &#039;&#039;&#039;Game conclusion&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;12:30 - 13:30&#039;&#039;&#039; || style=&amp;quot;background: silver; text-align: center;&amp;quot; |  &#039;&#039;&#039;Lunch break&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;13:30 - 18:00&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 10%; text-align: center;&amp;quot; | Time || Room 1 || Room 2 || Room 3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;13:30 - 14:30&#039;&#039;&#039; || VLC Asso Meeting  ||   || &#039;&#039;&#039;Hacking&#039;&#039;&#039; open sessions&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;xx:xx - xx:xx&#039;&#039;&#039; ||   ||   || &#039;&#039;&#039;Hacking&#039;&#039;&#039; open sessions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;18:20 - 18:30&#039;&#039;&#039; || colspan=3 style=&amp;quot;background: silver; text-align: center;&amp;quot; | &#039;&#039;&#039;Closing remarks&#039;&#039;&#039;  by jb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Practical information =&lt;br /&gt;
&lt;br /&gt;
Google map or OSM doesn&#039;t work well in Korea,&lt;br /&gt;
Use &#039;&#039;&#039;Kakao Map&#039;&#039;&#039; or &#039;&#039;&#039;Naver Map&#039;&#039;&#039; instead&lt;br /&gt;
&lt;br /&gt;
== Location / main venue ==&lt;br /&gt;
&lt;br /&gt;
The meeting is happening at the [https://www.kw.ac.kr Kwangwoon University].&lt;br /&gt;
&lt;br /&gt;
=== Access ===&lt;br /&gt;
[[File:Signal-2024-10-30-155557 002.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
    Saebit Building (새빛관)&lt;br /&gt;
    20, Gwangun-ro 6-gil, Nowon-gu&lt;br /&gt;
&lt;br /&gt;
    Subway : Kwangwoon Univ. Station (Subway Line No.1), séokgye Station (Subway Line No. 6)&lt;br /&gt;
    Blue Bus : 261, 163&lt;br /&gt;
    Green Bus : 1017, 1137, 1140, séongbuk12&lt;br /&gt;
&lt;br /&gt;
== Accommodation / Hotel ==&lt;br /&gt;
&lt;br /&gt;
If you are sponsored by the [[VideoLAN]] association, your hotel is one of:&lt;br /&gt;
&lt;br /&gt;
    Hotel Skypark Central Myeongdong&lt;br /&gt;
    16 Myeongdong 9-gil, Jung District&lt;br /&gt;
    +82 2-752-0022&lt;br /&gt;
&lt;br /&gt;
    Mangrove Sinséol&lt;br /&gt;
    22 Wangsan-ro, Dongdaemun District, séoul&lt;br /&gt;
    +82 10-2591-8669&lt;br /&gt;
&lt;br /&gt;
    Travelodge Myeongdong Euljiro&lt;br /&gt;
    61 Supyo-ro, Jung District, séoul&lt;br /&gt;
    +82 2-6240-5000 &lt;br /&gt;
&lt;br /&gt;
Elsewise, please make your own arrangements for accommodation.&lt;br /&gt;
&lt;br /&gt;
== Transportation ==&lt;br /&gt;
&lt;br /&gt;
== Means of payment ==&lt;br /&gt;
&lt;br /&gt;
== Electricity ==&lt;br /&gt;
&lt;br /&gt;
= Code of Conduct =&lt;br /&gt;
&lt;br /&gt;
This community activity is running under the [[CoC|VideoLAN Code of Conduct]]. We expect all attendees to respect our [[VideoLAN Values|Shared Values]].&lt;br /&gt;
&lt;br /&gt;
= Contact =&lt;br /&gt;
&lt;br /&gt;
The VideoLAN Dev Days are organized by the board members of the VideoLAN non-profit organization:&lt;br /&gt;
* Jean-Baptiste Kempf,&lt;br /&gt;
* Denis Charmet,&lt;br /&gt;
* Konstantin Pavlov, and&lt;br /&gt;
* Felix Paul Kühne.&lt;br /&gt;
&lt;br /&gt;
You can reach us [mailto:board@videolan.org here].&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;br /&gt;
[[Category:VDD]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VDD24&amp;diff=62272</id>
		<title>VDD24</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VDD24&amp;diff=62272"/>
		<updated>2024-11-03T00:51:40Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Sunday, November 3rd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VDD}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Welcome to Video Dev Days 2024&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[VideoLAN]] non-profit organization is happy to invite you to the multimedia open-source event of the fall!&lt;br /&gt;
&lt;br /&gt;
For the thirteenth edition, people from VideoLAN, FFmpeg and other multimedia-related open-source communities will meet in &#039;&#039;&#039;séoul&#039;&#039;&#039; on 2 and 3 November 2024. We will discuss and work on the future of the open-source multimedia community.&lt;br /&gt;
&lt;br /&gt;
This is a very technical conference, focused on low-level multimedia.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
== Friday, November 1st ==&lt;br /&gt;
&lt;br /&gt;
* Community bonding day&lt;br /&gt;
&lt;br /&gt;
    The meeting point is at 09:30 sharp at the Deoksugung Palace, at the ticket entrance, near the City Hall.&lt;br /&gt;
The game is LONG and MORE difficult than previous years, so be there on time.&lt;br /&gt;
&lt;br /&gt;
You must do teams between 4 and 6 people, and have a name for your team. 🙂&lt;br /&gt;
&lt;br /&gt;
Further instructions will be given to you, if you dare showing up on time.&lt;br /&gt;
&lt;br /&gt;
* From 19:00, drinks at&lt;br /&gt;
&lt;br /&gt;
    행2PM8PM, 46-29 Jeo-dong 2(i)-ga, Jung District&lt;br /&gt;
&lt;br /&gt;
== Saturday, November 2nd ==&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Talks have no specific order yet&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 10%;&amp;quot; | Time || Auditorium &lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;09:00 - 09:30&#039;&#039;&#039; ||  style=&amp;quot;background: silver;&amp;quot; | Registration&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;09:30 - 10:00&#039;&#039;&#039; || &#039;&#039;&#039;Opening Remarks - Updates about community&#039;&#039;&#039; by Jean-Baptiste Kempf, VideoLAN&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:00 - 10:20&#039;&#039;&#039; || &#039;&#039;&#039;Ensuring the future of assembly language programming&#039;&#039;&#039; by Kieran Kunhya, Open Broadcast Systems Ltd.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:20 - 10:40&#039;&#039;&#039; || &#039;&#039;&#039;State of the ffmpeg CLI &amp;amp; MV-HEVC decoding&#039;&#039;&#039; by Anton Khirnov, FFmpeg&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:40 - 11:00&#039;&#039;&#039; || style=&amp;quot;background: silver;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:00 - 11:25&#039;&#039;&#039; || &#039;&#039;&#039;CheckASM (temporary topic)&#039;&#039;&#039; by Henrik Gramner, Two Orioles&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:25 - 11:50&#039;&#039;&#039; || &#039;&#039;&#039;3D and Multiview -- FFMPEG Applications and Workflows&#039;&#039;&#039; by Alaric Hamacher, Kwangwoon University&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:50 - 12:10&#039;&#039;&#039; || &#039;&#039;&#039;Hijacking AI CPU extension for multimedia&#039;&#039;&#039; by Rémi-Denis Courmont, VideoLAN&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;12:10 - 12:30&#039;&#039;&#039; || &#039;&#039;&#039;Dynamic Filter Loading at Meta&#039;&#039;&#039; by Wes Castro, Meta&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;12:30 - 14:00&#039;&#039;&#039; || style=&amp;quot;background: silver;&amp;quot; |  &#039;&#039;&#039;Lunch break&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;14:00 - 18:00&#039;&#039;&#039; ||&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 10%;&amp;quot; | Time || Room 1 || Room 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;14:00 - 16:00&#039;&#039;&#039; || &#039;&#039;&#039;VLC Technical meeting&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg meeting&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;16:00 - 18:00&#039;&#039;&#039; ||   ||  &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;19:00 - 21:00&#039;&#039;&#039; ||colspan=3|  &#039;&#039;&#039;Community Dinner&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN community dinner ===&lt;br /&gt;
    Hangaram (한가람)&lt;br /&gt;
    25 Namdaemun-ro 5-gil, Jung District, Séoul&lt;br /&gt;
&lt;br /&gt;
== Sunday, November 3rd ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 10%; text-align: center;&amp;quot; | Time || Description&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| &#039;&#039;&#039;10:00 - 10:20&#039;&#039;&#039; || &#039;&#039;&#039;LLVM-MingW updates&#039;&#039;&#039; by Martin Storsjö&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:20 - 10:35&#039;&#039;&#039; || &#039;&#039;&#039;Kodi updates&#039;&#039;&#039; by Kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:35 - 10:50&#039;&#039;&#039; || &#039;&#039;&#039;Compression for Virtual Production&#039;&#039;&#039; by Julien Zouein&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:50 - 11:00&#039;&#039;&#039; || &#039;&#039;&#039;IAMF&#039;&#039;&#039; by TD&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:00 - 11:15&#039;&#039;&#039; || &#039;&#039;&#039;RISC-V&#039;&#039;&#039; by Nathan&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:15 - 11:25&#039;&#039;&#039; || &#039;&#039;&#039;APV&#039;&#039;&#039; by Samsung&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:25 - 11:35&#039;&#039;&#039; || &#039;&#039;&#039;Asm debugging&#039;&#039;&#039; by Martin&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:35 - 11:45&#039;&#039;&#039; || &#039;&#039;&#039;FFGlitch&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:45 - 11:50&#039;&#039;&#039; || &#039;&#039;&#039;Time to generate videos&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:50 - 12:15&#039;&#039;&#039; || ----&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;12:15 - 12:30&#039;&#039;&#039; || &#039;&#039;&#039;Game conclusion&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;12:30 - 13:30&#039;&#039;&#039; || style=&amp;quot;background: silver; text-align: center;&amp;quot; |  &#039;&#039;&#039;Lunch break&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;13:30 - 18:00&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 10%; text-align: center;&amp;quot; | Time || Room 1 || Room 2 || Room 3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;13:30 - 14:30&#039;&#039;&#039; || VLC Asso Meeting  ||   || &#039;&#039;&#039;Hacking&#039;&#039;&#039; open sessions&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;xx:xx - xx:xx&#039;&#039;&#039; ||   ||   || &#039;&#039;&#039;Hacking&#039;&#039;&#039; open sessions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;18:20 - 18:30&#039;&#039;&#039; || colspan=3 style=&amp;quot;background: silver; text-align: center;&amp;quot; | &#039;&#039;&#039;Closing remarks&#039;&#039;&#039;  by jb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Practical information =&lt;br /&gt;
&lt;br /&gt;
Google map or OSM doesn&#039;t work well in Korea,&lt;br /&gt;
Use &#039;&#039;&#039;Kakao Map&#039;&#039;&#039; or &#039;&#039;&#039;Naver Map&#039;&#039;&#039; instead&lt;br /&gt;
&lt;br /&gt;
== Location / main venue ==&lt;br /&gt;
&lt;br /&gt;
The meeting is happening at the [https://www.kw.ac.kr Kwangwoon University].&lt;br /&gt;
&lt;br /&gt;
=== Access ===&lt;br /&gt;
[[File:Signal-2024-10-30-155557 002.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
    Saebit Building (새빛관)&lt;br /&gt;
    20, Gwangun-ro 6-gil, Nowon-gu&lt;br /&gt;
&lt;br /&gt;
    Subway : Kwangwoon Univ. Station (Subway Line No.1), séokgye Station (Subway Line No. 6)&lt;br /&gt;
    Blue Bus : 261, 163&lt;br /&gt;
    Green Bus : 1017, 1137, 1140, séongbuk12&lt;br /&gt;
&lt;br /&gt;
== Accommodation / Hotel ==&lt;br /&gt;
&lt;br /&gt;
If you are sponsored by the [[VideoLAN]] association, your hotel is one of:&lt;br /&gt;
&lt;br /&gt;
    Hotel Skypark Central Myeongdong&lt;br /&gt;
    16 Myeongdong 9-gil, Jung District&lt;br /&gt;
    +82 2-752-0022&lt;br /&gt;
&lt;br /&gt;
    Mangrove Sinséol&lt;br /&gt;
    22 Wangsan-ro, Dongdaemun District, séoul&lt;br /&gt;
    +82 10-2591-8669&lt;br /&gt;
&lt;br /&gt;
    Travelodge Myeongdong Euljiro&lt;br /&gt;
    61 Supyo-ro, Jung District, séoul&lt;br /&gt;
    +82 2-6240-5000 &lt;br /&gt;
&lt;br /&gt;
Elsewise, please make your own arrangements for accommodation.&lt;br /&gt;
&lt;br /&gt;
== Transportation ==&lt;br /&gt;
&lt;br /&gt;
== Means of payment ==&lt;br /&gt;
&lt;br /&gt;
== Electricity ==&lt;br /&gt;
&lt;br /&gt;
= Code of Conduct =&lt;br /&gt;
&lt;br /&gt;
This community activity is running under the [[CoC|VideoLAN Code of Conduct]]. We expect all attendees to respect our [[VideoLAN Values|Shared Values]].&lt;br /&gt;
&lt;br /&gt;
= Contact =&lt;br /&gt;
&lt;br /&gt;
The VideoLAN Dev Days are organized by the board members of the VideoLAN non-profit organization:&lt;br /&gt;
* Jean-Baptiste Kempf,&lt;br /&gt;
* Denis Charmet,&lt;br /&gt;
* Konstantin Pavlov, and&lt;br /&gt;
* Felix Paul Kühne.&lt;br /&gt;
&lt;br /&gt;
You can reach us [mailto:board@videolan.org here].&lt;br /&gt;
&lt;br /&gt;
[[Category:About VideoLAN]]&lt;br /&gt;
[[Category:VDD]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62241</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62241"/>
		<updated>2024-03-31T19:49:48Z</updated>

		<summary type="html">&lt;p&gt;J-b: CloudStorage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2024}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2024] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]], [[SoC_2022|2022]] and [[SoC_2023|2023]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox, Windows and macOS/iOS.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&lt;br /&gt;
&lt;br /&gt;
If selected and developed, SoC projects for dav1d 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. Projects on dav1d are BSD licensed.&lt;br /&gt;
&lt;br /&gt;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) and &#039;&#039;#vlmc&#039;&#039; on the &#039;&#039;libera&#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;Duration&#039;&#039;&#039;: 350h&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: unidan &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Skins2 interface update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The VLC Skins2 interface was not updated for the latest interface and core changes for the media player and playlist engine yet.&lt;br /&gt;
&lt;br /&gt;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* wayland integration&lt;br /&gt;
* video integration rework (like Qt interface)&lt;br /&gt;
* medialibrary integration&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, and qml would be a nice plus.&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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve Android MediaCodec support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The goal is to fix few bugs (black screen with some device/video, HDR issues), and to improve the download of MediaCodec surfaces to the CPU&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Fix MediaCodec bugs https://code.videolan.org/videolan/vlc/-/issues/?sort=updated_desc&amp;amp;state=opened&amp;amp;label_name%5B%5D=Component%3A%3AVideo%3A%20Android&amp;amp;first_page_size=20&lt;br /&gt;
* Fix download for all kind of chromas/size/offset/crop (Decoding Acceleration in the vlc-android app)Duration: 350hRequirements: Those will be done in C, and it requires familiarity with the android dev environment and hardware decoders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add back netsync module ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Use the new vlc clock to add back the netsync module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use a new network protocol: RTP Midi&lt;br /&gt;
* Expose some vlc_clock APIs to be used by &amp;quot;control&amp;quot; module&lt;br /&gt;
* Plug the vlc_clock API inside the new module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add AAC via S/PDIF and Bluetooth support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Render AAC encoded content via S/PDIF and Bluetooth&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Adapt audio core to handle encoded AAC content&lt;br /&gt;
* Adapt at least one audio output module to render the AAC content&lt;br /&gt;
* No S/PDIF setup needed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Port the VLC iOS UI to visionOS ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLCKit supports visionOS. Now it is time for the UI to follow. We want a port of the existing iOS UI without support for any cloud services. This mostly implies layout fixes to work-around limitations of the SDK. When everything works, it is time to start adopting platform specific elements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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 App &lt;br /&gt;
* Fork third party elements that are not updated for visionOS yet&lt;br /&gt;
* Find replacements for all symbols prohibited on visionOS notably UIScreen&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne, Diogo Simao Marques &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Qt integration tests ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
In order to improve the robustness of our application, we would like to develop integration tests for the Qt interfac.e The goal being to ensure that new features and refactors won&#039;t break other parts of the UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* study existing solutions used in other open-source projects (https://invent.kde.org/sdk/selenium-webdriver-at-spi) &lt;br /&gt;
* adapt test framework to our environment&lt;br /&gt;
* write sample test cases&lt;br /&gt;
* study CI integration feasibility (Linux and/or Windows tests)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires Qt/C++ and some scripting language (pyhton?) knowledge, Qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cloud integration for desktop ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We want to be able to access Cloud Storage services (Dropbox, Google Drive and so on) in the VLC application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* revive libcloudstorage&lt;br /&gt;
* integrate libcloudstorage inside VLC&lt;br /&gt;
* write sample test cases&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires C++ knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Implement Pipewire input module for audio and video ==&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;pipewire://&amp;quot; access module like it is already done for Pulse, see modules/access/pulse.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Use the pipewire API to list audio and video devices&lt;br /&gt;
* Implement an audio input plugin&lt;br /&gt;
* Implement a video input plugin&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Very good &#039;&#039;&#039;C&#039;&#039;&#039; knowledge, Audio and Video knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Update the Lua integration == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
The current extension implementation in Lua needs more love to make them first class citizen (they are currently loaded by GUI instead of the core).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* update libvlccore to load Lua extensions instead of the GUI&lt;br /&gt;
* work on a better descriptive abstraction for lua stream parsers extensions which needs to extract data from the webpage. (currently done by manual read())&lt;br /&gt;
* more testing infrastructure for the scripts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Lua and C knowledge, c++ is a plus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alexandre Janniaux&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Radio-Browser integation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Integrate the Radio-Browser.info API in a service discovery module so it is available on all of VLC&#039;s platforms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study and understand the REST API&lt;br /&gt;
* Implement a VLC module based on the API&lt;br /&gt;
* Add a way to favorite channels&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* previous experience with REST APIs&lt;br /&gt;
* C knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix&lt;br /&gt;
&lt;br /&gt;
== Port the remote access webserver to VLC Desktop ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Description&#039;&#039;&#039;:&lt;br /&gt;
To remotely access and control a VLC instance, a webserver has been developped for VLC Android. The goal is to port it to VLC desktop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Extract the web client code from the VLC for Android reprository to a dedicated one&lt;br /&gt;
* Write the server part in VLC desktop using lua scripts&lt;br /&gt;
* Adapt the client to be compatible with the new VLC desktop web server&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
* js, Vue, lua, websockets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;&lt;br /&gt;
Nicolas&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=GSoD_2024&amp;diff=62240</id>
		<title>GSoD 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=GSoD_2024&amp;diff=62240"/>
		<updated>2024-03-29T16:47:52Z</updated>

		<summary type="html">&lt;p&gt;J-b: Update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page summarize the current list of ideas for VideoLAN project, for [https://developers.google.com/season-of-docs/ Google Season of Docs 2024].&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;
&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 [https://developers.google.com/season-of-docs/ Google Season of Docs 2024] in order to improve the [[VLC]] User and Developer documentation.&lt;br /&gt;
&lt;br /&gt;
=== Season of Docs ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.google.com/season-of-docs/ Google Season of Docs] is a way for &#039;&#039;&#039;technical writers&#039;&#039;&#039; to have a paid &#039;&#039;&#039;stipden&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and improve their documentation.&lt;br /&gt;
&lt;br /&gt;
[[VLC]] is in very big need of documentation, both for developers and end-users, and we&#039;re in the progress of revamping all that.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GSoD&#039;&#039;&#039; is run by the same people running the  &#039;&#039;Google Summer of Code&#039;&#039; program.&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]], and Every year since [[SoC 2016|2016]] to [[SoC_2024|2024]], as well as And GSoD in 2019 and 2020.&lt;br /&gt;
&lt;br /&gt;
This page list some documentation ideas for both VLC and VLC mobile ports, developer and user-facing documentations.&lt;br /&gt;
&lt;br /&gt;
=== VLC ===&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 28 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 documentation of VLC is mostly for end-users using VLC.&lt;br /&gt;
&lt;br /&gt;
=== libVLC ===&lt;br /&gt;
&lt;br /&gt;
The engine of VLC is &#039;&#039;&#039;libVLC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
It can be used to do 3rd party applications, media players, or other type of multimedia application.&lt;br /&gt;
&lt;br /&gt;
Its API is documented but is far from being simple to understand. It should be improved.&lt;br /&gt;
&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 Season of Doc&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, quite quickly, so that we can give you early feedback to improve your submission.&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. Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) &#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, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
All our mentors will be on the IRC channel, which is quite active, so it will be easy to find the right person in no time.&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Continue the Modernization of the VLC user documentation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The new {{VLC}} user documentation [https://docs.videolan.me/vlc-user/en/index.html] has been initiatied during GSoD_2019, and consolidated with GSoD_2020. We need to go further.&lt;br /&gt;
&lt;br /&gt;
It is based on the sphinx Read the Docs open source initiative [https://sphinx-rtd-theme.readthedocs.io/en/stable/].&lt;br /&gt;
&lt;br /&gt;
It is starting to be usable, but it would be very handy if it could be complete for VLC 3.X before starting to switch to the completely new 4.0 version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Finish the remaining parts&lt;br /&gt;
* Fix the small errors in the documentation&lt;br /&gt;
* Prepare for 4.0 release&lt;br /&gt;
* Prepare options and module documentation, so that developers can help filling them in&lt;br /&gt;
* Prepare for translations&lt;br /&gt;
* Improve the desktop FAQ and search engine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Goodwill and love for your users.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: J-b, Simon, Alex&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Continue the Modernization of the VLC user documentation for mobile ports (Android or iOS) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The new {{VLC}} user documentations for both Android [https://docs.videolan.me/vlc-user/android/3.X/en/index.html] and iOS [https://docs.videolan.me/vlc-user/ios/3.X/en/index.html] has been started with GSoD_2020. But we need some help to make them completely shine.&lt;br /&gt;
&lt;br /&gt;
Although both are based on the same technology as the main Desktop documentation project that supports responsive presentation, mobile end-users expect to have a style and UX experience far closer to the operating system they are using.&lt;br /&gt;
&lt;br /&gt;
This idea is actually 2 ideas, one for &#039;&#039;&#039;Android&#039;&#039;&#039;, one for &#039;&#039;&#039;iOS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Improve the navigation structure for each mobile OS documentation&lt;br /&gt;
* Make the documentation respectively more &amp;quot;Android style&amp;quot; or &amp;quot;iOS style&amp;quot; friendly&lt;br /&gt;
* Write the documentation to fit mobile versions of VLC&lt;br /&gt;
* Improve each FAQ and global search engine&lt;br /&gt;
* Screenshot from mobile version&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Goodwill and love for your users. &#039;&#039;also, either an iOS or an Android device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: J-b, Diogo, Felix (iOS), Aza, Duncan, Simon (Android)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Improve libVLC developer documentation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
[[libVLC]] is the engine of VLC and can be used by 3rd party application for documentation. It is the core of our technologies, and is used a lot.&lt;br /&gt;
&lt;br /&gt;
Currently the libVLC API is precisely documented, for each API call; but it is lacking a higher level document on how to use it, with samples and examples, and how to use that for other development languages (C, C++, C#, Java, Obj-C, etc..).&lt;br /&gt;
&lt;br /&gt;
It is also missing some introduction on the capabilities of the engine.&lt;br /&gt;
&lt;br /&gt;
Therefore, libVLC can be hard to use, when you are starting a project, and this is quite damaging for the developers using libVLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Understand the usage of libVLC on the different platforms and its capabilities;&lt;br /&gt;
* Write high-level documentation of the different libVLC classes;&lt;br /&gt;
* Write samples that matches those classes;&lt;br /&gt;
* Prepare to get cross-language samples in the documentation, a bit like MSDN;&lt;br /&gt;
* Write introductions to libVLC usage.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: J-b, Alex, Marvin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Improve VLCKit (libVLC binding for macOS) documentation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently the [[VLCKit]] code base is documented but some part is now outdated and needs to be updated.&lt;br /&gt;
&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have and overview of it&#039;s current documentation and update it if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Understand the usage of VLCKit on the different platforms (iOS, macOS)&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Check current documentation if outdated&lt;br /&gt;
* Add documentation necessary&lt;br /&gt;
* Update the documentation rendering method(maybe something else than Doxygen?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project is easier with &#039;&#039;&#039;Objective-C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix, Maxime, J-b&lt;br /&gt;
&lt;br /&gt;
[[Category:Mentorings]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=GSoD_2024&amp;diff=62239</id>
		<title>GSoD 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=GSoD_2024&amp;diff=62239"/>
		<updated>2024-03-29T15:26:22Z</updated>

		<summary type="html">&lt;p&gt;J-b: 2024&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page summarize the current list of ideas for VideoLAN project, for [https://developers.google.com/season-of-docs/ Google Season of Docs 2020].&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;
&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 [https://developers.google.com/season-of-docs/ Google Season of Docs 2020] in order to improve the [[VLC]] documentation.&lt;br /&gt;
&lt;br /&gt;
=== Season of Docs ===&lt;br /&gt;
&lt;br /&gt;
[https://developers.google.com/season-of-docs/ Google Season of Docs] is a way for &#039;&#039;&#039;technical writers&#039;&#039;&#039; to have a paid &#039;&#039;&#039;stipden&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and improve their documentation.&lt;br /&gt;
&lt;br /&gt;
[[VLC]] is in very big need of documentation, both for developers and end-users, and we&#039;re in the progress of revamping all that.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GSoD&#039;&#039;&#039; is run by the same people running the  &#039;&#039;Google Summer of Code&#039;&#039; program.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]] and  [[SoC_2020|2020]]. And GSoD in 2019.&lt;br /&gt;
&lt;br /&gt;
This page list some documentation ideas for both VLC and VLC mobile ports, developer and user-facing documentations.&lt;br /&gt;
&lt;br /&gt;
=== VLC ===&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 28 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 documentation of VLC is mostly for end-users using VLC.&lt;br /&gt;
&lt;br /&gt;
=== libVLC ===&lt;br /&gt;
&lt;br /&gt;
The engine of VLC is &#039;&#039;&#039;libVLC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
It can be used to do 3rd party applications, media players, or other type of multimedia application.&lt;br /&gt;
&lt;br /&gt;
Its API is documented but is far from being simple to understand. It should be improved.&lt;br /&gt;
&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 Season of Doc&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, quite quickly, so that we can give you early feedback to improve your submission.&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. Finally, there is our IRC channel &#039;&#039;#videolan&#039;&#039; (for libVLC) &#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, getting to know the fellow developers, etc.&lt;br /&gt;
&lt;br /&gt;
All our mentors will be on the IRC channel, which is quite active, so it will be easy to find the right person in no time.&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Continue the Modernization of the VLC user documentation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The new {{VLC}} user [[Documentation:Documentation/|documentation]] was done during GSoD_2019. We need to go further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Finish the remaining parts&lt;br /&gt;
* Fix the small errors in the documentation&lt;br /&gt;
* Prepare for 4.0 release&lt;br /&gt;
* Prepare options and module documentation, so that developers can help filling them in&lt;br /&gt;
* Prepare for translations&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Goodwill and love for your users.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: J-b, Simon, Alex&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create the VLC user documentation for one mobile port (Android or iOS) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
While the {{VLC}} user [[Documentation:Documentation/|documentation]] for desktop is outdated, the mobile versions are almost not documented at all.&lt;br /&gt;
&lt;br /&gt;
This requires a complete new project, with screenshots and a new architecture for the documentation, either for iOS or Android devices.&lt;br /&gt;
&lt;br /&gt;
All options are open, but it would be nice to fit the desktop documentation, and maybe see some convergence.&lt;br /&gt;
&lt;br /&gt;
This idea is actually 2 ideas, one for &#039;&#039;&#039;Android&#039;&#039;&#039;, one for &#039;&#039;&#039;iOS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Help us structure the documentation (chapters separation, add things, etc...)&lt;br /&gt;
* Write the documentation to fit mobile versions of VLC&lt;br /&gt;
* Screenshot from mobile version&lt;br /&gt;
* Converge with the desktop documentation, if possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: Goodwill and love for your users. &#039;&#039;also, either an iOS or an Android device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Alex, Geoffrey, J-b (Android), Soomin, Caro, Felix (iOS)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Improve libVLC developer documentation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
[[libVLC]] is the engine of VLC and can be used by 3rd party application for documentation. It is the core of our technologies, and is used a lot.&lt;br /&gt;
&lt;br /&gt;
Currently the libVLC API is precisely documented, for each API call; but it is lacking a higher level document on how to use it, with samples and examples, and how to use that for other development languages (C, C++, C#, Java, Obj-C, etc..).&lt;br /&gt;
&lt;br /&gt;
It is also missing some introduction on the capabilities of the engine.&lt;br /&gt;
&lt;br /&gt;
Therefore, libVLC can be hard to use, when you are starting a project, and this is quite damaging for the developers using libVLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Understand the usage of libVLC on the different platforms and its capabilities;&lt;br /&gt;
* Write high-level documentation of the different libVLC classes;&lt;br /&gt;
* Write samples that matches those classes;&lt;br /&gt;
* Prepare to get cross-language samples in the documentation, a bit like MSDN;&lt;br /&gt;
* Write introductions to libVLC usage.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Thomas, J-b, Hugo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Improve VLCKit (libVLC binding for macOS) documentation ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently the [[VLCKit]] code base is documented but some part is now outdated and needs to be updated.&lt;br /&gt;
&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have and overview of it&#039;s current documentation and update it if needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Understand the usage of VLCKit on the different platforms (iOS, macOS)&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Check current documentation if outdated&lt;br /&gt;
* Add documentation necessary&lt;br /&gt;
* Update the documentation rendering method(maybe something else than Doxygen?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project is easier with &#039;&#039;&#039;Objective-C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Carola Nitz, Felix Paul Kühne, Soomin Lee&lt;br /&gt;
&lt;br /&gt;
[[Category:Mentorings]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Hardware_Compatibility_list&amp;diff=62192</id>
		<title>Hardware Compatibility list</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Hardware_Compatibility_list&amp;diff=62192"/>
		<updated>2023-06-01T00:38:03Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* IP Cameras */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please add hardware known to work with [[VLC media player]]. Don&#039;t forget to specify the Operating System you know it to work on.&lt;br /&gt;
&lt;br /&gt;
== Capture Cards  ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Product&lt;br /&gt;
! Vendor&lt;br /&gt;
! Format&lt;br /&gt;
! OS&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| TBS 6280 DVBT/T2&lt;br /&gt;
| TurboSight TBS 62x0 DVBT/T2 &lt;br /&gt;
| Digital &lt;br /&gt;
| Linux Mint 16 Petra&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Compro VideoMate TV PVR FM &lt;br /&gt;
| Compro USA&lt;br /&gt;
| Analog &lt;br /&gt;
| Windows 2000&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Videum 4100 AV PCI &lt;br /&gt;
| Winnov &lt;br /&gt;
| 4 Input, 1 Capture channel AV (Composite) &lt;br /&gt;
| Windows Direct Show &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Videum 4100 AV Xpress PCIe &lt;br /&gt;
| Winnov &lt;br /&gt;
| 4 Input, 1 Capture channel AV (Composite) &lt;br /&gt;
| Windows Direct Show &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Videum Duo PCI &lt;br /&gt;
| Winnov &lt;br /&gt;
| 4 Capture channel AV 4 BNC (4 Composite or 2 S-video) &lt;br /&gt;
| Windows Direct Show &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Videum Duo Xpress PCIe &lt;br /&gt;
| Winnov &lt;br /&gt;
| 4 Capture channel AV 4 BNC (4 Composite or 2 S-video) &lt;br /&gt;
| Windows Direct Show &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Videum Quattro PCI &lt;br /&gt;
| Winnov &lt;br /&gt;
| 8 Capture channel AV 4 BNC (8 Composite or 4 S-video) &lt;br /&gt;
| Windows Direct Show &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Videum Quattro Xpress PCIe &lt;br /&gt;
| Winnov &lt;br /&gt;
| 8 Capture channel AV 4 BNC (8 Composite or 2 S-video) &lt;br /&gt;
| Windows Direct Show &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Videum 4400 AV PCI &lt;br /&gt;
| Winnov &lt;br /&gt;
| 4 Capture channel AV 4 BNC (4 Composite) &lt;br /&gt;
| Windows Direct Show &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Videum 4400 AV Xpress PCIe &lt;br /&gt;
| Winnov &lt;br /&gt;
| 4 Capture channel AV 4 BNC (4 Composite) &lt;br /&gt;
| Windows Direct Show &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Videum 4400 4400 VO PCI &lt;br /&gt;
| Winnov &lt;br /&gt;
| 4 Capture channel Video only 4 BNC (4 Composite) &lt;br /&gt;
| Windows Direct Show &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Videum 4400 VO Xpress PCIe &lt;br /&gt;
| Winnov &lt;br /&gt;
| 4 Capture channel Video only 4 BNC (4 Composite) &lt;br /&gt;
| Windows Direct Show &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge WinTV 38101 &lt;br /&gt;
| Hauppauge &lt;br /&gt;
| Analog &lt;br /&gt;
| Windows XP DirectShow &lt;br /&gt;
| Set &amp;quot;Video input chroma format&amp;quot; to &amp;quot;RV24&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge WinTV-PVR-150 &lt;br /&gt;
| Hauppauge &lt;br /&gt;
| Analog &lt;br /&gt;
| Linux (using v4l2) / Windows (using DirectShow) &lt;br /&gt;
| MPEG2 capture on windows possibly broken[[Hardware Compatibility list#MPEG2_capture_on_windows_possibly_broken_fn|*]]&lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge WinTV-PVR-250 &lt;br /&gt;
| Hauppauge &lt;br /&gt;
| Analog &lt;br /&gt;
| Linux (using v4l2) / Windows (using DirectShow)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge WinTV-PVR-350 &lt;br /&gt;
| Hauppauge &lt;br /&gt;
| Analog &lt;br /&gt;
| Linux (using v4l2) / Windows (using DirectShow)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge WinTV-Nova-S-CI PCI &lt;br /&gt;
| Hauppauge &lt;br /&gt;
| Satellite [[DVB-S]] &lt;br /&gt;
| Linux &lt;br /&gt;
| Bridge: Philips SAA7146A&lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge WinTV-Nova-S PCI &lt;br /&gt;
| Hauppauge &lt;br /&gt;
| Satellite [[DVB-S]] &lt;br /&gt;
| Linux &lt;br /&gt;
| Bridge: Philips SAA7146A&lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge WinTV-Nova-T PCI &lt;br /&gt;
| Hauppauge &lt;br /&gt;
| Terrestrial [[DVB-T]] &lt;br /&gt;
| Linux &lt;br /&gt;
| Bridge: Philips SAA7146A; Demodulator: Philips TDA 10045&lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge WinTV-Nova-T500 PCI &lt;br /&gt;
| Hauppauge &lt;br /&gt;
| Terrestrial [[DVB-T]] dual tuner &lt;br /&gt;
| Windows XP &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| WinTV-NOVA-T-Stick&lt;br /&gt;
| Hauppauge&lt;br /&gt;
| Terrestrial [[DVB-T]]&lt;br /&gt;
| Windows XP&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge WinTV-Nova-T USB2&lt;br /&gt;
| Hauppauge &lt;br /&gt;
| Terrestrial [[DVB-T]] &lt;br /&gt;
| Linux &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge Impact VCB &lt;br /&gt;
| Hauppauge &lt;br /&gt;
| 3 Analog Composite &lt;br /&gt;
| Linux (using v4l2) &lt;br /&gt;
| Uses the Brooktree BT878 (Conexant) - looks like an Osprey 100&lt;br /&gt;
|-&lt;br /&gt;
| Hauppauge WinTV-HVR-1300 &lt;br /&gt;
| Hauppauge &lt;br /&gt;
| Hybrid Analog / Digital [[DVB-T]] &lt;br /&gt;
| Linux &lt;br /&gt;
| DVB-T works fine&lt;br /&gt;
|-&lt;br /&gt;
| AVerMedia H727 PCIe Hybrid DVBT HDMI Capture Device&lt;br /&gt;
| AVerMedia &lt;br /&gt;
| Terrestrial [[DVB-T]] + Analog Composite + HDMI&lt;br /&gt;
| Windows (using VLC) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| AVerMedia C727 DarkCrystal HD Capture&lt;br /&gt;
| AVerMedia &lt;br /&gt;
| Analog Composite + HDMI&lt;br /&gt;
| Windows (using VLC) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Avermedia AVerTV DVB-T 771 &lt;br /&gt;
| Avermedia &lt;br /&gt;
| Terrestrial [[DVB-T]] &lt;br /&gt;
| Linux (using VLS or VLC) &lt;br /&gt;
| Bridge: Brooktree bt878 (Conexant fusion 878A); Demodulator: MT352 (Samsung MT352CG)&lt;br /&gt;
|-&lt;br /&gt;
| Avermedia AVerTV Studio 307 &lt;br /&gt;
| Avermedia &lt;br /&gt;
| Analo) &lt;br /&gt;
| Linux (using v4l2) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Avermedia TvPhone/Capture 98 &lt;br /&gt;
| Avermedia &lt;br /&gt;
| Analog Tuner/S-video/Composite &lt;br /&gt;
| Windows XP Pro +SP1 &lt;br /&gt;
| Chipset: Philips Bt878, Drivers: Standart Conexant WDM drivers, Stream: 320x240/400x300, MJPG/WMV2, MP3, NO MUXER&lt;br /&gt;
|-&lt;br /&gt;
| PixelView Bt878p+ &lt;br /&gt;
| PixelView &lt;br /&gt;
| Analog &lt;br /&gt;
| Windows / Linux (using v4l2) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Technisat AirStar 2 &lt;br /&gt;
| Technisat &lt;br /&gt;
| Terrestrial [[DVB-T]] &lt;br /&gt;
| Linux (using VLS or VLC) &lt;br /&gt;
| Bridge: B2C2 FlexCop Chipset; Demodulator: ST MT352&lt;br /&gt;
|-&lt;br /&gt;
| Technisat SkyStar 2 &lt;br /&gt;
| Technisat &lt;br /&gt;
| Satellite [[DVB-S]] &lt;br /&gt;
| Linux (using VLC) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Technisat CableStar 2 &lt;br /&gt;
| Technisat &lt;br /&gt;
| Cable [[DVB-C]] &lt;br /&gt;
| Linux (using VLC) &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| TechniSat CableStar HD 2 &lt;br /&gt;
| TechniSat &lt;br /&gt;
| Cable [[DVB-C]] &lt;br /&gt;
| Windows XP Pro SP3&lt;br /&gt;
| CI module and remote control not tested.&lt;br /&gt;
|-&lt;br /&gt;
| ATI Rage 128 Pro AIW &lt;br /&gt;
| ATI Technologies &lt;br /&gt;
| Analog &lt;br /&gt;
| Windows 2000 DirectShow (not XP) &lt;br /&gt;
| Must enter &amp;quot;YUV12&amp;quot; into the &amp;quot;Video input chroma format&amp;quot; field in the &amp;quot;Advanced options (DirectShow input)&amp;quot; dialog&lt;br /&gt;
|-&lt;br /&gt;
| ATI AIW 9800 PRO &lt;br /&gt;
| ATI Technologies &lt;br /&gt;
| Analog &lt;br /&gt;
| Windows &lt;br /&gt;
| uses ATI Rage Threatre chip, software decoder&lt;br /&gt;
|-&lt;br /&gt;
| ATI AIW 2006 PCI-E &lt;br /&gt;
| ATI Technologies &lt;br /&gt;
| Analog &lt;br /&gt;
| Windows XP &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ATI Theater 650 Pro &lt;br /&gt;
| ATI Technologies &lt;br /&gt;
| Analog &lt;br /&gt;
| Windows Vista &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ATI TV Wonder VE (PCI) &lt;br /&gt;
| ATI Technologies &lt;br /&gt;
| Analog &lt;br /&gt;
| Linux &lt;br /&gt;
| use bttv V4L driver&lt;br /&gt;
|-&lt;br /&gt;
| Winfast TV2000/Expert &lt;br /&gt;
| Leadtek &lt;br /&gt;
| Analog Tuner/S-video/Composite &lt;br /&gt;
| Windows XP Pro &lt;br /&gt;
| Chipset: CX2388X 10bit ADC&lt;br /&gt;
|-&lt;br /&gt;
| Osprey 100 &lt;br /&gt;
| Viewcast &lt;br /&gt;
| Composite/S-Video &lt;br /&gt;
| Windows XP/2000 DirectShow &lt;br /&gt;
| Simulstream works with multiple VLC streams &amp;amp;amp; VLM&lt;br /&gt;
|-&lt;br /&gt;
| Osprey 210 &lt;br /&gt;
| Viewcast &lt;br /&gt;
| Composite/S-Video/Unbalanced audio &lt;br /&gt;
| Windows 7 (64bit) &lt;br /&gt;
| Use mpeg-ts when capturing for fluent transcoding!&lt;br /&gt;
|-&lt;br /&gt;
| Osprey 210 &lt;br /&gt;
| Viewcast &lt;br /&gt;
| Composite/S-Video/ &lt;br /&gt;
| Linux&lt;br /&gt;
| Use bttv V4L driver, Audio input doesn&#039;t work and only on 25fps(PAL)&lt;br /&gt;
|-&lt;br /&gt;
| Osprey 230 &lt;br /&gt;
| Viewcast &lt;br /&gt;
| Composite/S-Video &lt;br /&gt;
| Windows XP/2000 DirectShow &lt;br /&gt;
| Simulstream works with multiple VLC streams &amp;amp;amp; VLM&lt;br /&gt;
|-&lt;br /&gt;
| Osprey 260e &lt;br /&gt;
| Viewcast &lt;br /&gt;
| Composite/S-Video/YPrBr/Balanced audio/Unbalanced audio &lt;br /&gt;
| Windows 7 (64bit) &lt;br /&gt;
| Use mpeg-ts when capturing for fluent transcoding!&lt;br /&gt;
|-&lt;br /&gt;
| Osprey 440 &lt;br /&gt;
| Viewcast &lt;br /&gt;
| 4 Composite &lt;br /&gt;
| Windows XP SP2 DirectShow &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| DVC90 (Dazzle) &lt;br /&gt;
| Pinnacle &lt;br /&gt;
| Composite/S-Video &lt;br /&gt;
| Windows Vista DirectShow &lt;br /&gt;
| No sound, only picture.&lt;br /&gt;
|-&lt;br /&gt;
| DVC100 (Dazzle, Rev:1.1) &lt;br /&gt;
| Pinnacle &lt;br /&gt;
| Composite/S-Video &lt;br /&gt;
| Windows XP DirectShow &lt;br /&gt;
| No sound, only picture. Pinnacle support giving no solution (09/2006)&lt;br /&gt;
|-&lt;br /&gt;
| DVC170 (Dazzle) &lt;br /&gt;
| Pinnacle &lt;br /&gt;
| Composite/S-Video &lt;br /&gt;
| Windows XP &lt;br /&gt;
| No sound, No picture. wis chip no support VLC&lt;br /&gt;
|-&lt;br /&gt;
| Pinnacle PCTV Rave &lt;br /&gt;
| Pinnacle &lt;br /&gt;
| Analog Tuner/Composite/S-Video &lt;br /&gt;
| Windows XP DirectShow &lt;br /&gt;
| Works fine with the default drivers, and the excellent [http://btwincap.sourceforge.net/ btwincap] drivers.&lt;br /&gt;
|-&lt;br /&gt;
| Sabrent SBT-TVFM &lt;br /&gt;
| Sabrent &lt;br /&gt;
| Analog Tuner/Composite/S-Video &lt;br /&gt;
| Windows XP Directshow/Linux &lt;br /&gt;
| Chipset: Philips SAA7130&lt;br /&gt;
|-&lt;br /&gt;
| Travel TV (PCMCIA/Cardbus) &lt;br /&gt;
| Chronos &lt;br /&gt;
| Analog Tuner/S-video/Composite &lt;br /&gt;
| Linux (using v4l2) &lt;br /&gt;
| Chipset: Philips SAA7134, not autodetected, use modprobe with card=67 (Behold)&lt;br /&gt;
|-&lt;br /&gt;
| Technisat SkyStar 1 CI &lt;br /&gt;
| Technisat &lt;br /&gt;
| Satellite [[DVB-S]] &lt;br /&gt;
| Linux (using VLC). &lt;br /&gt;
| Works with scrambler module, 1 program for transponder only (Viaccess tested only)&lt;br /&gt;
|-&lt;br /&gt;
| Twinhan VP-1030A &lt;br /&gt;
| Twinhan &lt;br /&gt;
| Satellite [[DVB-S]] &lt;br /&gt;
| Linux &lt;br /&gt;
| Brooktree Corporation Bt878 Video Capture (rev 11), Brooktree Corporation Bt878 Audio Capture (rev 11)&lt;br /&gt;
|-&lt;br /&gt;
| MSI PC-TV Mega Sky 580 USB2&lt;br /&gt;
| MSI &lt;br /&gt;
| Terrestrial [[DVB-T]] &lt;br /&gt;
| Windows XP &lt;br /&gt;
| Works fine, but unable to lock; when in use by app1 and app2 scans for free dev, both crashes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;MPEG2_capture_on_windows_possibly_broken_fn&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt; &amp;quot;I have the same problem being unable to stream directly from my Hauppauge PVR 150 to the network. It looks like VLC tries to connect to a wrong output-pin of the &amp;quot;Hauppauge WinTV PVR PCI II Capture&amp;quot; filter called &amp;quot;Capture&amp;quot; (see log &amp;quot;trying pin Capture&amp;quot; ...). When building a filter graph using graphedit I use the output pin &amp;quot;656&amp;quot; and connect it to a filter called &amp;quot;Hauppauge WinTV PVR PCI II Encoder&amp;quot; which has an input pin called &amp;quot;656&amp;quot; and and MPEG output pin. This works fine in graphedit - I get MPEG video and audio this way.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Related topics: [[How to Use a Capture Card]] &lt;br /&gt;
&lt;br /&gt;
Useful Linux links: [http://www.linuxtv.org/ LinuxTV] and [http://ivtvdriver.org/ IVTV]&lt;br /&gt;
&lt;br /&gt;
== Appliance Encoders ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Product || Vendor || Opinion || OS || Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | MediaStar 778-SD/HD &amp;amp; 779-SD/HD Series MPEG-2, MPEG-4 (H.264) || Cabletime || Multicast Dual Input to Combined Multi Window Output, SW Upgradable from SD to HD || Windows/MacOSX/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 | Exterity MPEG-2 &amp;amp; MPEG-4 || Exterity || MPEG-2 &amp;amp; MPEG-4 multicast as well as ISMA SAP announcements supported by VLC || Windows/MacOSX/Linux ||&lt;br /&gt;
 |- &lt;br /&gt;
 | Axis 241S || Axis Communications || RTSP MPEG4 - rtsp://x.x.x.x/mpeg4/1/media.amp || Windows/MacOSX/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 | Cornet CDX350/CDX350T || Cornet Technology || UDP multicast with MPEG-II demux - udp/mpgv://@x.x.x.x:x || Windows/MacOSX/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 | Cornet iVDO MPEG-2 || Cornet Technology || UDP multicast with MPEG-II or TS demux - udp/ts://@x.x.x.x:x || Windows/MacOSX/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 | Cornet iVDO MPEG-4 || Cornet Technology || RTSP with required login, firmware &amp;gt; 1.0a20 or higher* - rtsp://cornet@cornet:x.x.x.x:554 (* - VLC unsuccessful with v1.0a1 firmware.) || Windows/MacOSX/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 | Teleste EASI-IP MPEG-2 || Teleste || UDP multicast with TS demux - udp/ts://@x.x.x.x:x || Windows/MacOSX/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 | Teleste EASI-MPC MPEG-4 || Teleste || SDP via HTTP - http://x.x.x.x/sdp/mpu001_ch0.sdp || Windows/MacOSX/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 | VBrick MPEG2 || VBrick || Main Level, Main Profile 4:2:0. ISMA SAP announcements supported by VLC || Windows/MacOSX/Linux ||&lt;br /&gt;
 |- &lt;br /&gt;
 | VBrick MPEG4 || VBrick || MPEG4 RTSP stream works, ISMA SAP announcements supported by VLC || Windows/MacOSX/Linux ||&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== IP Cameras ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Product || Vendor || Opinion || OS&lt;br /&gt;
 |-&lt;br /&gt;
 | Axis 230 MPEG-2 || Axis || http stream works fine with VLC || Windows/MacOSX/Linux...&lt;br /&gt;
 |- &lt;br /&gt;
 | Axis 207 || Axis || MPEG4 rtsp stream also works fine || Windows/MacOSX/Linux...&lt;br /&gt;
 |-&lt;br /&gt;
 | Axis 213 PTZ || Axis || rtsp stream also works fine || Windows (MacOSX/Linux...untested)&lt;br /&gt;
 |-&lt;br /&gt;
 | Axis 221 || Axis || http MJPEG stream works || Windows/Linux&lt;br /&gt;
 |-&lt;br /&gt;
 | Axis 221 || Axis || rtsp MPEG4 works || Windows/Linux&lt;br /&gt;
 |-&lt;br /&gt;
 | P1344    || Axis || http MJPEG works with 640x480 (or lower) || Linux&lt;br /&gt;
 |-&lt;br /&gt;
 | P1344    || Axis || http MJPEG works with all resolutions || Windows&lt;br /&gt;
 |-&lt;br /&gt;
 | M1054    || Axis || H264: rtsp://ipaddr/axis-media/media.amp?videocodec=h264&lt;br /&gt;
 |-&lt;br /&gt;
 | Appro 7224E || Appro || MJPEG http stream works fine with VLC 0.9.x || Windows&lt;br /&gt;
 |-&lt;br /&gt;
 | IPS1354/1358 H.264 || LILIN || H.264 HTTP stream works fine with VLC 0.9.X || Windows/iPhone&lt;br /&gt;
 |-&lt;br /&gt;
 | IPS2034/2038 H.264 || LILIN || H.264 HTTP stream works fine with VLC 0.9.X || Windows/iPhone&lt;br /&gt;
 |-&lt;br /&gt;
 | Linksys WCV200 - Wireless G|| Cisco || Use http://&#039;&#039;CAMERA_IP&#039;&#039;:&#039;&#039;port&#039;&#039;/img/video.asf|| Windows&lt;br /&gt;
 |-&lt;br /&gt;
 | Sharx VIPcella SCNC2606 || Sharx || supports HTTP, RTSP, MPEG4, MJPEG, 3GPP || Windows/MacOSX/Linux&lt;br /&gt;
 |-&lt;br /&gt;
 | Sharx VIPcella-IR SCNC2607 || Sharx || supports HTTP, RTSP, MPEG4, MJPEG, 3GPP || Windows/MacOSX/Linux&lt;br /&gt;
 |-&lt;br /&gt;
 | IP7131/7132 || Vivotek || rtsp stream works fine with VLC || Windows/MacOSX/Linux...&lt;br /&gt;
 |-&lt;br /&gt;
 | BB-HCM715 || Panasonic || H.264 RTSP stream works fine with VLC 1.1.4 rtsp://&#039;&#039;CAMERA_IP&#039;&#039;:&#039;&#039;port&#039;&#039;/MediaInput/h264 || Windows&lt;br /&gt;
 |-&lt;br /&gt;
 | Saber Series Cameras	|| Angekis || RTSP stream works fine || Windows/MacOSX/Linux&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Webcams (USB) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Product || Vendor || Opinion || OS || Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | StarCam 370i || MSI || udp stream works fine with VLC || MS Windows ||&lt;br /&gt;
 |-&lt;br /&gt;
 | 150 Spacecam Portable || Trust || works with VLC || MS Windows ||&lt;br /&gt;
 |-&lt;br /&gt;
 | Quickcam Messenger || Logitech || works || GNU/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 | Quickcam Pro 4000 || Logitech || works fine with VLC, Linphone, Ekiga || GNU/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 | Quickcam E 3500 || Logitech || works (audio+video[uvc]) [ID 046d:09a4 Logitech, Inc.] || GNU/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 | LifeCam VX-6000 || Microsoft || works fine with VLC (audio+video), but has color misconfiguration || Windows 7 ||&lt;br /&gt;
 |-&lt;br /&gt;
 | &#039;&#039;Webcam 5&#039;&#039; || &#039;&#039;Creative Labs&#039;&#039; || works fine with Ekiga (Linphone no, VLC &#039;&#039;&#039;NO&#039;&#039;&#039;) || GNU/Linux ||&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Soundcards ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Product || Vendor || Opinion || OS&lt;br /&gt;
 |-&lt;br /&gt;
 | Mac Built-In || Apple || VLC does NOT support audio caputre on Mac OSX || MacOSX&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== DVB  to IP Gateways==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Product || Vendor || Output || Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | MediaStar 773 &amp;amp; 776 DVB-T || Cabletime || Tune to DVB-T MUX and stream entire multiplex, or individual channels to Multicast IP Address ||&lt;br /&gt;
 |-&lt;br /&gt;
 | MediaStar 774 &amp;amp; 777 DVB-S2 || Cabletime || Tune to DVB-S2 MUX and stream entire multiplex, or individual channels to Multicast IP Address ||&lt;br /&gt;
 |-&lt;br /&gt;
 | idaptor TVgateway || Exterity || Options for 2 or 6 tuners, each tuner outputs complete multiplex to individual multicast address&#039; ||&lt;br /&gt;
 |-&lt;br /&gt;
 | HDHomeRun || SiliconDust || Two native MPEG-2 VBR TS one from each of its 2 tuners ||&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Proposed deletion]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62191</id>
		<title>SoC 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62191"/>
		<updated>2023-03-26T21:55:24Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Re-implememt the netsync module and use the W3C TimingObject */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2023}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2023] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]] and [[SoC_2022|2022]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve chromecast support (subtitles) ==&lt;br /&gt;
&lt;br /&gt;
Your goal will be to help an engineer who is already working on chromecast improvements.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Add support for images subtitles (DVD, Bluray, MVK): configure the chromecast module so that it blend the subtitle image video with a video frame&lt;br /&gt;
* Help with text subtitles support&lt;br /&gt;
* Various improvements and bugfixes that are chromecast related (cf. issues from our gitlab)  &lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Those will be done in C and C++.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem and Alaric Senat&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve Android MediaCodec support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The goal is to fix few bugs (black screen with some device/video, HDR issues), and to improve the download of MediaCodec surfaces to the CPU&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Fix MediaCodec bugs https://code.videolan.org/videolan/vlc/-/issues/?sort=updated_desc&amp;amp;state=opened&amp;amp;label_name%5B%5D=Component%3A%3AVideo%3A%20Android&amp;amp;first_page_size=20&lt;br /&gt;
* Fix download for all kind of chromas/size/offset/crop (Decoding Acceleration in the vlc-android app)Duration: 350hRequirements: Those will be done in C, and it requires familiarity with the android dev environment and hardware decoders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rewrite some C modules in Rust ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The idea is to rewrite a few modules (principally demuxers) in Rust.&lt;br /&gt;
&lt;br /&gt;
Your work will be based on Loic work: https://code.videolan.org/videolan/vlc/-/merge_requests/2738 (Not yet merged)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Learn how a C module work and rewrite it in Rust&lt;br /&gt;
* This doesn&#039;t concern avi, mp4, mkv, and adaptive demuxers, that are too complicated for a student.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add multiple audio tracks playback support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Currently, only one audio track can be played at a time, we need to be able to play all tracks from a media in parallel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Modify the audio_output_t API to support multiple streams (Hint, the work already started on the mmdevice/wasapi module)&lt;br /&gt;
* Implement multiple streams support with one API of your choice&lt;br /&gt;
* Adapt the vlc_player_t and LibVLC API for multiple audio streams support&lt;br /&gt;
* Implement it on other APIs&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge, familiar with some audio output APIs (PulseAudio, Pipewire, macOS AudioUnit/Hal, Windows Wasapi, Android Audiotrack/aaudio)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62190</id>
		<title>SoC 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62190"/>
		<updated>2023-03-26T21:53:24Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2023}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2023] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]] and [[SoC_2022|2022]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Re-implememt the netsync module and use the W3C TimingObject== &lt;br /&gt;
&lt;br /&gt;
This module synchronizes more than one VLC instances to play the same media at the same time. Cf. modules/control/netsync.c&lt;br /&gt;
&lt;br /&gt;
This module was disabled when we switched to the new vlc_clock.&lt;br /&gt;
&lt;br /&gt;
Your goal will be to rewrite this module from 0, using the new vlc_clock API.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Expose the vlc_clock API to control modules&lt;br /&gt;
* Implement the netsync module using the new vlc_clock API&lt;br /&gt;
* Re-use or rewrite the network protocol, depending on its current state (legacy, old code, can it be improved ?)&lt;br /&gt;
* Look at use W3C TimingObject&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in C and it requires familiarity with POSIX network APIs (socket, UDP, TCP, bind, accept, listen...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve chromecast support (subtitles) ==&lt;br /&gt;
&lt;br /&gt;
Your goal will be to help an engineer who is already working on chromecast improvements.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Add support for images subtitles (DVD, Bluray, MVK): configure the chromecast module so that it blend the subtitle image video with a video frame&lt;br /&gt;
* Help with text subtitles support&lt;br /&gt;
* Various improvements and bugfixes that are chromecast related (cf. issues from our gitlab)  &lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Those will be done in C and C++.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem and Alaric Senat&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve Android MediaCodec support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The goal is to fix few bugs (black screen with some device/video, HDR issues), and to improve the download of MediaCodec surfaces to the CPU&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Fix MediaCodec bugs https://code.videolan.org/videolan/vlc/-/issues/?sort=updated_desc&amp;amp;state=opened&amp;amp;label_name%5B%5D=Component%3A%3AVideo%3A%20Android&amp;amp;first_page_size=20&lt;br /&gt;
* Fix download for all kind of chromas/size/offset/crop (Decoding Acceleration in the vlc-android app)Duration: 350hRequirements: Those will be done in C, and it requires familiarity with the android dev environment and hardware decoders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rewrite some C modules in Rust ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
The idea is to rewrite a few modules (principally demuxers) in Rust.&lt;br /&gt;
&lt;br /&gt;
Your work will be based on Loic work: https://code.videolan.org/videolan/vlc/-/merge_requests/2738 (Not yet merged)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Learn how a C module work and rewrite it in Rust&lt;br /&gt;
* This doesn&#039;t concern avi, mp4, mkv, and adaptive demuxers, that are too complicated for a student.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Good C knowledge and very good Rust knowledge&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add multiple audio tracks playback support ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
Currently, only one audio track can be played at a time, we need to be able to play all tracks from a media in parallel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Modify the audio_output_t API to support multiple streams (Hint, the work already started on the mmdevice/wasapi module)&lt;br /&gt;
* Implement multiple streams support with one API of your choice&lt;br /&gt;
* Adapt the vlc_player_t and LibVLC API for multiple audio streams support&lt;br /&gt;
* Implement it on other APIs&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Very good C knowledge, familiar with some audio output APIs (PulseAudio, Pipewire, macOS AudioUnit/Hal, Windows Wasapi, Android Audiotrack/aaudio)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62188</id>
		<title>SoC 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62188"/>
		<updated>2023-02-06T21:36:45Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Other short ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2023}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2023] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]] and [[SoC_2022|2022]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Re-implememt the netsync module and use the W3C TimingObject== &lt;br /&gt;
&lt;br /&gt;
This module synchronizes more than one VLC instances to play the same media at the same time. Cf. modules/control/netsync.c&lt;br /&gt;
&lt;br /&gt;
This module was disabled when we switched to the new vlc_clock.&lt;br /&gt;
&lt;br /&gt;
Your goal will be to rewrite this module from 0, using the new vlc_clock API.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Expose the vlc_clock API to control modules&lt;br /&gt;
* Implement the netsync module using the new vlc_clock API&lt;br /&gt;
* Re-use or rewrite the network protocol, depending on its current state (legacy, old code, can it be improved ?)&lt;br /&gt;
* Look at use W3C TimingObject&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in C and it requires familiarity with POSIX network APIs (socket, UDP, TCP, bind, accept, listen...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve chromecast support (subtitles) ==&lt;br /&gt;
&lt;br /&gt;
Your goal will be to help an engineer who is already working on chromecast improvements.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Add support for images subtitles (DVD, Bluray, MVK): configure the chromecast module so that it blend the subtitle image video with a video frame&lt;br /&gt;
* Help with text subtitles support&lt;br /&gt;
* Various improvements and bugfixes that are chromecast related (cf. issues from our gitlab)  &lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Those will be done in C and C++.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem and Alaric Senat&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
* Improve cue support in VLC&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62187</id>
		<title>SoC 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62187"/>
		<updated>2023-02-06T21:35:59Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Re-implememt the netsync module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2023}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2023] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]] and [[SoC_2022|2022]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Re-implememt the netsync module and use the W3C TimingObject== &lt;br /&gt;
&lt;br /&gt;
This module synchronizes more than one VLC instances to play the same media at the same time. Cf. modules/control/netsync.c&lt;br /&gt;
&lt;br /&gt;
This module was disabled when we switched to the new vlc_clock.&lt;br /&gt;
&lt;br /&gt;
Your goal will be to rewrite this module from 0, using the new vlc_clock API.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Expose the vlc_clock API to control modules&lt;br /&gt;
* Implement the netsync module using the new vlc_clock API&lt;br /&gt;
* Re-use or rewrite the network protocol, depending on its current state (legacy, old code, can it be improved ?)&lt;br /&gt;
* Look at use W3C TimingObject&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in C and it requires familiarity with POSIX network APIs (socket, UDP, TCP, bind, accept, listen...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve chromecast support (subtitles) ==&lt;br /&gt;
&lt;br /&gt;
Your goal will be to help an engineer who is already working on chromecast improvements.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Add support for images subtitles (DVD, Bluray, MVK): configure the chromecast module so that it blend the subtitle image video with a video frame&lt;br /&gt;
* Help with text subtitles support&lt;br /&gt;
* Various improvements and bugfixes that are chromecast related (cf. issues from our gitlab)  &lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Those will be done in C and C++.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem and Alaric Senat&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62186</id>
		<title>SoC 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62186"/>
		<updated>2023-02-06T21:34:04Z</updated>

		<summary type="html">&lt;p&gt;J-b: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2023}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2023] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas and value them.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]], [[SoC_2021|2021]] and [[SoC_2022|2022]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC or libVLC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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 [https://code.videolan.org our gitlab].&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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Re-implememt the netsync module == &lt;br /&gt;
&lt;br /&gt;
This module synchronizes more than one VLC instances to play the same media at the same time. Cf. modules/control/netsync.c&lt;br /&gt;
&lt;br /&gt;
This module was disabled when we switched to the new vlc_clock.&lt;br /&gt;
&lt;br /&gt;
Your goal will be to rewrite this module from 0, using the new vlc_clock API.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Expose the vlc_clock API to control modules&lt;br /&gt;
* Implement the netsync module using the new vlc_clock API&lt;br /&gt;
* Re-use or rewrite the network protocol, depending on its current state (legacy, old code, can it be improved ?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in C and it requires familiarity with POSIX network APIs (socket, UDP, TCP, bind, accept, listen...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve chromecast support (subtitles) ==&lt;br /&gt;
&lt;br /&gt;
Your goal will be to help an engineer who is already working on chromecast improvements.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Add support for images subtitles (DVD, Bluray, MVK): configure the chromecast module so that it blend the subtitle image video with a video frame&lt;br /&gt;
* Help with text subtitles support&lt;br /&gt;
* Various improvements and bugfixes that are chromecast related (cf. issues from our gitlab)  &lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Those will be done in C and C++.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem and Alaric Senat&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: tguillem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=GSoC_2023&amp;diff=62185</id>
		<title>GSoC 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=GSoC_2023&amp;diff=62185"/>
		<updated>2023-02-06T21:33:43Z</updated>

		<summary type="html">&lt;p&gt;J-b: Redirected page to SoC 2023&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect[[SoC_2023]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=GSoC_2023&amp;diff=62184</id>
		<title>GSoC 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=GSoC_2023&amp;diff=62184"/>
		<updated>2023-02-06T21:33:13Z</updated>

		<summary type="html">&lt;p&gt;J-b: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect[SoC_2023]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=GSoC_2023&amp;diff=62183</id>
		<title>GSoC 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=GSoC_2023&amp;diff=62183"/>
		<updated>2023-02-06T21:33:04Z</updated>

		<summary type="html">&lt;p&gt;J-b: Created page with &amp;quot;##redirect[SoC_2023]&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;##redirect[SoC_2023]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62169</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62169"/>
		<updated>2022-03-29T14:24:28Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC &amp;amp; libVLC */ ChromeCast&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone / Ubuntu Touch ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone or Ubuntu Touch&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Re-implememt the netsync module == &lt;br /&gt;
&lt;br /&gt;
This module synchronizes more than one VLC instances to play the same media at the same time. Cf. modules/control/netsync.c&lt;br /&gt;
&lt;br /&gt;
This module was disabled when we switched to the new vlc_clock.&lt;br /&gt;
&lt;br /&gt;
Your goal will be to rewrite this module from 0, using the new vlc_clock API.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Expose the vlc_clock API to control modules&lt;br /&gt;
* Implement the netsync module using the new vlc_clock API&lt;br /&gt;
* Re-use or rewrite the network protocol, depending on its current state (legacy, old code, can it be improved ?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in C and it requires familiarity with POSIX network APIs (socket, UDP, TCP, bind, accept, listen...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve chromecast support (subtitles) ==&lt;br /&gt;
&lt;br /&gt;
Your goal will be to help an engineer who is already working on chromecast improvements.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Add support for images subtitles (DVD, Bluray, MVK): configure the chromecast module so that it blend the subtitle image video with a video frame&lt;br /&gt;
* Help with text subtitles support&lt;br /&gt;
* Various improvements and bugfixes that are chromecast related (cf. issues from our gitlab)  &lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;:&lt;br /&gt;
Those will be done in C and C++.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem and Alaric Senat&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;&#039;Duration&#039;&#039;&#039;: 350h&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&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;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62168</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62168"/>
		<updated>2022-03-29T14:22:47Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC &amp;amp; libVLC */ Add NetSync&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone / Ubuntu Touch ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone or Ubuntu Touch&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Re-implememt the netsync module == &lt;br /&gt;
&lt;br /&gt;
This module synchronizes more than one VLC instances to play the same media at the same time. Cf. modules/control/netsync.c&lt;br /&gt;
&lt;br /&gt;
This module was disabled when we switched to the new vlc_clock.&lt;br /&gt;
&lt;br /&gt;
Your goal will be to rewrite this module from 0, using the new vlc_clock API.&lt;br /&gt;
&lt;br /&gt;
Tasks to do:&lt;br /&gt;
* Expose the vlc_clock API to control modules&lt;br /&gt;
* Implement the netsync module using the new vlc_clock API&lt;br /&gt;
* Re-use or rewrite the network protocol, depending on its current state (legacy, old code, can it be improved ?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in C and it requires familiarity with POSIX network APIs (socket, UDP, TCP, bind, accept, listen...)&lt;br /&gt;
&lt;br /&gt;
Proposed mentor: Thomas Guillem &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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;&#039;Duration&#039;&#039;&#039;: 350h&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&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;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62166</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62166"/>
		<updated>2022-03-11T21:59:02Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Port VLC to PinePhone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone / Ubuntu Touch ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone or Ubuntu Touch&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;&#039;Duration&#039;&#039;&#039;: 350h&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&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;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62164</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62164"/>
		<updated>2022-02-28T20:28:48Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* libmicrodns refactoring */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;&#039;Duration&#039;&#039;&#039;: 350h&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;&#039;Duration&#039;&#039;&#039;: 175h&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;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62163</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62163"/>
		<updated>2022-02-28T20:28:18Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for libplacebo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;&#039;Duration&#039;&#039;&#039;: 350h&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62162</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62162"/>
		<updated>2022-02-28T20:27:06Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for dav1d */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;&#039;Duration&#039;&#039;&#039;: 350h&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62161</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62161"/>
		<updated>2022-02-28T20:26:24Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLMC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;&#039;Duration&#039;&#039;&#039;: 350h&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62160</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62160"/>
		<updated>2022-02-28T20:25:35Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Improve the VideoLAN crash reporter in Go and Vue.js */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;
&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62159</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62159"/>
		<updated>2022-02-28T20:24:38Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Improve libNDI and integrate in VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;
&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62158</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62158"/>
		<updated>2022-02-28T20:24:11Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Improve VLCKit Objective-C - Swift interoperability */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;
&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62157</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62157"/>
		<updated>2022-02-28T20:22:46Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Develop a MPD server inside VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;
&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62156</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62156"/>
		<updated>2022-02-28T20:22:19Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Interactive movie support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;
&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62155</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62155"/>
		<updated>2022-02-28T20:21:59Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Scripting VLC with wasm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;
&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62154</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62154"/>
		<updated>2022-02-28T20:20:28Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre &#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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;
&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62153</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62153"/>
		<updated>2022-02-28T20:19:49Z</updated>

		<summary type="html">&lt;p&gt;J-b: /* Compile libVLC or VLMC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2022}}&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;
This page gives the current list of ideas for VideoLAN project, for the [https://summerofcode.withgoogle.com Google Summer Of Code 2022] program.&lt;br /&gt;
&lt;br /&gt;
The list is long, but it is not exhaustive, and  not limitative. Feel free to apply with &#039;&#039;&#039;your own idea!&#039;&#039;&#039;, we love original ideas.&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 page covers the [[VideoLAN]] program as a mentoring organization for [http://code.google.com/soc/ Google Summer of Code], in order to improve [[VLC]], [[VLMC]] and [https://code.videolan.org/videolan/dav1d dav1d] (or the [[libVLC]] engine), but also the VideoLAN infrastructure and some other related projects.&lt;br /&gt;
&lt;br /&gt;
We have projects in &#039;&#039;&#039;C&#039;&#039;&#039;, &#039;&#039;&#039;C++&#039;&#039;&#039;, &#039;&#039;&#039;ASM&#039;&#039;&#039;, &#039;&#039;&#039;JS&#039;&#039;&#039;,  &#039;&#039;&#039;Wasm&#039;&#039;&#039;, &#039;&#039;&#039;Go&#039;&#039;&#039;, &#039;&#039;&#039;Obj-C&#039;&#039;&#039;, &#039;&#039;&#039;GPU Shaders&#039;&#039;&#039;, &#039;&#039;&#039;C#&#039;&#039;&#039;, &#039;&#039;&#039;Java/Kotlin&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code is a way for anyone to work on open source projects and become top developers, while being paid by Google.&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]], [[SoC_2018|2018]], [[SoC_2019|2019]], [[SoC_2020|2020]] and [[SoC_2021|2021]].&lt;br /&gt;
&lt;br /&gt;
This page lists some ideas for Summer of Code projects on &#039;&#039;&#039;dav1d&#039;&#039;&#039;, VLMC, &#039;&#039;&#039;libVLC&#039;&#039;&#039; and {{VLC}}, but also on &#039;&#039;VLC infrastructure&#039;&#039; projects.&amp;lt;br&amp;gt;&lt;br /&gt;
We accept ideas also on other multimedia projects related to {{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 worldwide. &lt;br /&gt;
&lt;br /&gt;
{{VLC}} is downloaded at an approximate monthly rate of 25 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; and mobile versions of VLC.&lt;br /&gt;
&lt;br /&gt;
=== dav1d ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dav1d&#039;&#039;&#039; is the reference AV1 decoder that is shipped inside VLC, Chrome, Edge, Firefox and Windows.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a very low-level codec, mostly written in C and assembly.&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 its actual 1.0 release!&lt;br /&gt;
&lt;br /&gt;
=== Summer of Code rules ===&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;
The VideoLAN [[CoC|Code of Conducts]] applies to all Summer projects.&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;
The duration of the projects is indicative, and can be adapted, if needed.&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 VLC, libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. You must compile the project you want to work on.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
* Our [https://mailman.videolan.org/mailman/listinfo mailing-lists] to discuss patches and further development related topics;&lt;br /&gt;
* 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.&lt;br /&gt;
* 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;
== Port VLC to PinePhone ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We need someone to port VLC to the PinePhone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Get a PinePhone&lt;br /&gt;
* Get a compilation toolchain working&lt;br /&gt;
* Compile VLC core and modules to the PinePhone&lt;br /&gt;
* Adapt the interface&lt;br /&gt;
* Adapt the audio and video output modules&lt;br /&gt;
* Adapt the hardware decoder.&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;
Compile a program on the Pinephone&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem &#039;&#039;&lt;br /&gt;
&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;Duration&#039;&#039;&#039;: 350h&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: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== FFmpeg Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
FFmpeg has plenty of efficient [https://ffmpeg.org/ffmpeg-filters.html#Audio-Filters audio filters]. It would nice to have them in VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Add one or more wrapper for the Ffmpeg audio filters as VLC filters;&lt;br /&gt;
* Handle filter parameters dynamically so they can be adjusted in the GUI;&lt;br /&gt;
* Possibly add libvlc entry points for some audio filters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding the concept of VLC modules.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Use `anull` FFmpeg audio filter as a VLC module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: robUx4 &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Unreal Engine libVLC module ==&lt;br /&gt;
&lt;br /&gt;
The libVLC plugin for Unreal is a bit outdated and needs to be ported to the newer versions of Unreal Engine.&lt;br /&gt;
&lt;br /&gt;
Also, we need to improve performances by using the new libVLC 4 API to share textures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs C experience and understanding a bit Unreal development.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Compile the old Unreal module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: pierre &#039;&#039;&lt;br /&gt;
&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;
We are currently reworking the interface, but we need help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Use the new designs shared on the mailing list, and help developping part of those, using &#039;&#039;&#039;Qml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This new 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 requires integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the technology needed to improve 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, and qml would be a nice plus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Pierre&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC.js ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently porting VLC to the web, using WebAssembly. This is a current work in progress, so we need a lot of help to improve it&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, compilation and the web browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do (not all of them need to be done by the same person:&lt;br /&gt;
* Improving compilation of the VLC core to Wasm,&lt;br /&gt;
* Improving compilation of VLC 3rd party libraries,&lt;br /&gt;
* Fixing the VLC core to support the Web platform,&lt;br /&gt;
* Implement WebCodec inside VLC,&lt;br /&gt;
* Improve audio pipeline inside VLC,&lt;br /&gt;
* Improve emscripten :)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: JB&#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 and we are currently in the process of re-writing it to give it a modern feel, but also to integrate recent additions to libvlc regarding playback control and library management.&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;Duration&#039;&#039;&#039;: 350h or 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There is a full design already done and tested. The major hurdle is to actually implement it the way we want it to be. The iOS/tvOS interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it, which influenced what we want to achieve on the Mac. Note that the objective is to use AppKit. UIKit will not be part of this project.&lt;br /&gt;
&lt;br /&gt;
Iterating from the current UI and closely collaborating with the team currently working on it 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, a thorough understanding of OOP and proven previous Mac development experience. You cannot use swift for this project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David Fuhrmann, Felix Paul Kühne&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Scripting VLC with wasm ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re would like to try to replace the lua scripting support of VLC with Wasm, like wasmer, directly inside VLC.&lt;br /&gt;
&lt;br /&gt;
This requires working close to the toolchain, VLC and understanding C.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
There are lots of things to do:&lt;br /&gt;
* Study Wasm&lt;br /&gt;
* Embed wasm inside VLC&lt;br /&gt;
* Map VLC Scripts&lt;br /&gt;
* Improve emscripten  and wasm:)&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 compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: tguillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC iOS UI update ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We&#039;re currently in the process of rewriting and updating the entire UI for VLC iOS &lt;br /&gt;
&lt;br /&gt;
There is a lot of components that need refactoring and need to get an updated UI.&lt;br /&gt;
&lt;br /&gt;
The Android port of VLC has done most of that and was successful. We need the same level of features.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h or 175h&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 App and components that need an update &lt;br /&gt;
* Refactor and give the appropriate components a new look&lt;br /&gt;
* See what is missing compared to the Android version&lt;br /&gt;
* Code it :&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; and &#039;&#039;&#039;Swift&#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: Felix Paul Kühne &#039;&#039;&lt;br /&gt;
&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;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem, Steve Lhomme&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop a MPD server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to continue adding support for VLC to act as a MPD server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the MPD protocol&lt;br /&gt;
* Code a MPD server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;C&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with an MPD client.&lt;br /&gt;
&lt;br /&gt;
The base was done in a previous year, one just needs to finish it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve the web interface of VLC in Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the new web interface of VLC, that is currently in &#039;&#039;&#039;Vue.JS&#039;&#039;&#039;. It requires significant improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Clean and improve the modularity&lt;br /&gt;
* Adapt to the new playlist code&lt;br /&gt;
* Connect to the new medialibrary&lt;br /&gt;
* Improve the look&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
Those will be done in &#039;&#039;&#039;JS&#039;&#039;&#039; and &#039;&#039;&#039;C++&#039;&#039;&#039;, and it requires familiarity with the Vue.JS framework&lt;br /&gt;
&#039;&#039;Proposed mentor: David&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Improve VLCKit Objective-C - Swift interoperability == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Currently VLCKit is not very &#039;&#039;&#039;Swift&#039;&#039;&#039; friendly.&lt;br /&gt;
Indeed, it will be beneficial for VLCKit to have a better &#039;&#039;&#039;Swift&#039;&#039;&#039; interoperability interface than one generated by default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study exposed VLCKit methods&lt;br /&gt;
* Improve Objective-C - Swift interop&lt;br /&gt;
* Make a test Swift project to test the interoperability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Objective-C&#039;&#039;&#039; and &#039;&#039;&#039;Swift&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Felix Paul Kühne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve libNDI and integrate in VLC == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Improve the libNDI project supporting the NDI protocol to support more formats.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Study the NDI protocol, implement and test and integrate inside VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* NDI understanding&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implement DVD-Audio deciphering == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project description&#039;&#039;&#039;:&lt;br /&gt;
Support DVD-Audio deciphering using dvdcpxm&lt;br /&gt;
* https://offog.org/git/dvdaexplorer/&lt;br /&gt;
* http://www.thescrapyard.org/software/libdvdcpxm.html&lt;br /&gt;
* http://forum.doom9.org/showthread.php?t=167537&lt;br /&gt;
* https://sourceforge.net/projects/dvdadecoder/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Understand DVD-Audio&lt;br /&gt;
* Implement VLC module based on those modules&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
* Audio likeness&lt;br /&gt;
* C knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: j-b&lt;br /&gt;
&lt;br /&gt;
== Other short 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;
We can help work with you to make those more detailed.&lt;br /&gt;
&lt;br /&gt;
Those ideas should be &#039;&#039;&#039;175h&#039;&#039;&#039; long&lt;br /&gt;
&lt;br /&gt;
* Integrate &#039;&#039;&#039;Rust&#039;&#039;&#039; inside VLC, as a demuxer or a parser&lt;br /&gt;
* Improve Vulkan output for VLC, including HDR support&lt;br /&gt;
* Improve id3 tag and metadata handling in VLC&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;
* Integrate libavfilter in VLC&lt;br /&gt;
* Improve the libVLCSharp bindings for VLC in &#039;&#039;&#039;C#&#039;&#039;&#039;&lt;br /&gt;
* Provide setups for popular streaming services / sout templates (ui ?)&lt;br /&gt;
&lt;br /&gt;
= Ideas for VideoLAN infrastructure =&lt;br /&gt;
&lt;br /&gt;
== Improve the VideoLAN crash reporter in Go and Vue.js ==&lt;br /&gt;
&lt;br /&gt;
The idea is to improve the current crash reporter of VLC, called [https://code.videolan.org/videolan/CrashDragon CrashDragon].&lt;br /&gt;
&lt;br /&gt;
The tasks are the following:&lt;br /&gt;
* Review the current code&lt;br /&gt;
* Improve the API in Go&lt;br /&gt;
* Write a new Vue.js frontend&lt;br /&gt;
&lt;br /&gt;
Those will be done in &#039;&#039;&#039;Go&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: David and j-b&#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;
&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 iOS devices. Previous iOS development experience is preferred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix/Hugo&#039;&#039;&lt;br /&gt;
&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;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d RISC-V optimizations ==&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;
* Understand of RISC-V assembly&lt;br /&gt;
* Understand a bit what a video decoder is&lt;br /&gt;
* Write RISC-V functions&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;ASM&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d GPU Compute Shaders ==&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;
This project requires to port one of the filter, like SGR or Wiener to one of the Shader languages. iPhones or Xbox One would be a good target.&lt;br /&gt;
&lt;br /&gt;
This is a tricky project, but is doable during the summer&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;GPU Shaders&#039;&#039;&#039; knowledge, as well as system programming skills&lt;br /&gt;
&lt;br /&gt;
Contact &#039;j-b&#039;&lt;br /&gt;
&lt;br /&gt;
== dav1d statistics extractions ==&lt;br /&gt;
&lt;br /&gt;
The [https://code.videolan.org/videolan/dav1d dav1d] AV1 decoder is a new high performance AV1 decoder by &lt;br /&gt;
VideoLAN.&lt;br /&gt;
&lt;br /&gt;
Current open source tools for AV1 analysis use instrumentation in the reference decoder [https://aomedia.googlesource.com/aom libaom] to extract decode-time metadata for display and reporting, but support for sophisticated analysis is lacking.&lt;br /&gt;
&lt;br /&gt;
To speed development of AV1 tools like the rav1e, it would be helpful to add similar decoder metadata extraction APIs to the dav1d decoder so that rapid testing of encoder algorithms is easier.  This includes the ability to quickly produce statistics, visualizations and other &lt;br /&gt;
reporting that can be used for tuning encoder parameters or guiding development.  Advanced ideas include adding similar encoder metadata API to rav1e that add encode-time visualizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
= Ideas for libplacebo =&lt;br /&gt;
&lt;br /&gt;
== Direct3D 11 backend ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libplacebo uses a GPU abstraction with a number of backends. The goal would be&lt;br /&gt;
to add a new backend based on Direct3D 11, since Vulkan and OpenGL support on&lt;br /&gt;
Windows are often of limited quality, especially for older hardware.&lt;br /&gt;
&lt;br /&gt;
Lots of example code for how this implementation would look can be found [https://github.com/mpv-player/mpv/blob/master/video/out/d3d11/ra_d3d11.c as part of the mpv project ].&lt;br /&gt;
&lt;br /&gt;
Large parts can be copy/pasted and adapted to the libplacebo API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Add a new `pl_gpu` backend based on Direct3D 11&lt;br /&gt;
# Integration into the build system, test framework and CI infrastructure&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;C&#039;&#039;&#039; as well as, ideally, graphics API fundamentals. (But the latter can be learned as part of the project)&lt;br /&gt;
* Ability to develop and test on Windows&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== Dolby Vision Profile 5 (IPT-PQ) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dolby IPT-PQ is a HDR color space similar to ITU-R ICtCp, but with proprietary&lt;br /&gt;
Dolby modifications (reshaping algorithm). Your goal is to implement this&lt;br /&gt;
reshaper in the form of a GLSL shader, using knowledge from known Dolby&lt;br /&gt;
patents and dumped headers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Figure out, and (if necessary) reverse engineer the stream format for the Dolby reshaping algorithm described in several of their patents.&lt;br /&gt;
# Implement this algorithm in GLSL&lt;br /&gt;
# Integration into libplacebo (optional)&lt;br /&gt;
# Test against reference implementations of Dolby Vision profile 5&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Knowledge of &#039;&#039;&#039;GLSL&#039;&#039;&#039; and &#039;&#039;&#039;C&#039;&#039;&#039;. Knowledge of colorspaces in general is an obvious plus, but the theory here is not important - only the implementation.&lt;br /&gt;
* (Possibly) Ability to reverse engineer any still-unknown or differing-from-patents parts of the stream headers.&lt;br /&gt;
&lt;br /&gt;
Knowledge of libplacebo internals is not required, since the skeleton code for&lt;br /&gt;
this already exists - what&#039;s missing is the reshaping algorithm.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&lt;br /&gt;
&lt;br /&gt;
== GPU motion interpolation (mvtools) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Your goal is to develop GPU shaders for motion-adaptive frame interpolation in the style of [mvtools](https://github.com/dubhater/vapoursynth-mvtools).&lt;br /&gt;
&lt;br /&gt;
This is an open-ended project. If not completed, any progress towards this goal is good enough.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sub-goals:&#039;&#039;&#039;&lt;br /&gt;
# Recreate the motion vector search algorithms from MAnalyze&lt;br /&gt;
# Implement the pixel masking and pixel flow algorithms from MFlowFps&lt;br /&gt;
&lt;br /&gt;
These can be tackled and complete out-of-order.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements:&#039;&#039;&#039;&lt;br /&gt;
* Good knowledge of both C and GLSL, especially compute shaders and other GPGPU techniques. (CUDA or OpenCL skills also transfer, though the shader will have to be GLSL)&lt;br /&gt;
* Ideally, general knowledge of video processing techniques (e.g. motion vector search) - at least enough to be able to understand what mvtools code is doing.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;haasn&#039;&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;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>J-b</name></author>
	</entry>
</feed>