<?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=Fkuehne</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=Fkuehne"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Fkuehne/"/>
	<updated>2026-11-04T15:55:36Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Sending_Patches_VLC&amp;diff=66762</id>
		<title>Sending Patches VLC</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Sending_Patches_VLC&amp;diff=66762"/>
		<updated>2026-03-08T13:53:24Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to produce a patch for VLC  ==&lt;br /&gt;
&lt;br /&gt;
*Get a modern [[Git]] version, 1.7 or higher.&lt;br /&gt;
*Make your changes and commit them on a branch.&lt;br /&gt;
*Check your commit.&lt;br /&gt;
&lt;br /&gt;
== Writing an appropriate description  ==&lt;br /&gt;
&lt;br /&gt;
*You &#039;&#039;&#039;should&#039;&#039;&#039; include a description that will be the commit log message of your patch.&lt;br /&gt;
*A more &#039;&#039;&#039;exhaustive explanation&#039;&#039;&#039; is also welcomed along with your patch. This could be the &#039;&#039;&#039;second paragraph&#039;&#039;&#039; of your commit log.&lt;br /&gt;
&lt;br /&gt;
== Check List  ==&lt;br /&gt;
&lt;br /&gt;
When you send a patch make sure that: &lt;br /&gt;
&lt;br /&gt;
* The code mostly &#039;&#039;&#039;complies&#039;&#039;&#039; with the [[Code Conventions]].&lt;br /&gt;
* The patch applies to the latest &#039;&#039;&#039;master branch&#039;&#039;&#039;.&lt;br /&gt;
** Do not submit patches against a bugfix branch, except to backport fixes already found on the master branch.&lt;br /&gt;
** Do not submit patches against releases. That would be completely useless.&lt;br /&gt;
** As a special exception, language translations go to the last bugfix branch directly.&lt;br /&gt;
* Proper copyright license exists, and is stated where appropraite.&lt;br /&gt;
* The changes do not break the build.&lt;br /&gt;
** Testing all combinations is impossible. But you should at least test one.&lt;br /&gt;
* The tests suite still &#039;&#039;&#039;passes&#039;&#039;&#039; (i.e. &#039;&#039;&#039;`make check`&#039;&#039;&#039; runs without errors).&lt;br /&gt;
* The compiler does not mention new compilation &#039;&#039;&#039;warnings&#039;&#039;&#039;.&lt;br /&gt;
** In some rare cases, warnings are unavoidable or counter-productive to fix. If so, explain it in the patch description.&lt;br /&gt;
* If the patch adds, removes or moves one or more files, make sure the distribution still works, i.e. &#039;&#039;&#039;`make distcheck&#039;&#039;&#039;` runs succesfully to the end.&lt;br /&gt;
* No &#039;&#039;&#039;trailing spaces&#039;&#039;&#039; are introduced (&#039;&#039;git show --color&#039;&#039; show them in red).&lt;br /&gt;
* Indentation is correct, no &#039;&#039;&#039;tabs&#039;&#039;&#039; are introduced.&lt;br /&gt;
* No unrelated changes are included in the patch.&lt;br /&gt;
** Especially changes to &amp;lt;code&amp;gt;.po&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.pot&amp;lt;/code&amp;gt; files do not belong within source code patches.&lt;br /&gt;
** As a necessary exception, tabs are allowed within Makefiles.&lt;br /&gt;
* &#039;&#039;&#039;Your name is correctly set&#039;&#039;&#039;. That is, that you are using your fullname, which is correctly capitalized and so on.&lt;br /&gt;
** For example, if you are &#039;&#039;&#039;John Smith&#039;&#039;&#039; with an e-mail of &#039;&#039;&#039;johnsmith@acme.example&#039;&#039;&#039;, you should set your &amp;quot;Git name&amp;quot; to &#039;&#039;&#039;John Smith &amp;lt;johnsmith@acme.example&amp;gt;&#039;&#039;&#039; - real full name - not &amp;quot;jsmith&amp;quot;, &amp;quot;John S&amp;quot;, &amp;quot;J. Smith&amp;quot;, &amp;quot;johnnykool1234&amp;quot;, &amp;quot;J.S.&amp;quot; or any other permutation.&lt;br /&gt;
* The patch description makes sense.&lt;br /&gt;
* Read your patch one more time using &#039;&#039;&#039;&#039;&#039;git show&#039;&#039;&#039;&#039;&#039;, and check that it looks OK.&lt;br /&gt;
&lt;br /&gt;
== Sending it to gitlab ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Now&#039;&#039;&#039; you can send a merge request against vlc.git on [https://code.videolan.org/vlc gitlab].&lt;br /&gt;
&lt;br /&gt;
== Following your patch  ==&lt;br /&gt;
&lt;br /&gt;
You will receive feedback on your merge request by core members of the VideoLAN team within a few days. It will move to the Accepted stage automatically. Rebasing your merge request will delay merging your work and consumes CI resources for nothing. We will do it for you once your work is accepted.&lt;br /&gt;
&lt;br /&gt;
== Getting your patch merged  ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Don&#039;t hesitate&#039;&#039; to &#039;&#039;&#039;re-ask&#039;&#039;&#039; for review if after a week there are no replies or comments.&lt;br /&gt;
* If there are comments, &#039;&#039;&#039;please answer&#039;&#039;&#039; to those and eventually correct your patch if possible.&lt;br /&gt;
* Do not personally ping individuals of the VideoLAN community&lt;br /&gt;
&lt;br /&gt;
[[Category:Coding]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66738</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66738"/>
		<updated>2026-02-03T10:22:13Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Improve Android MediaCodec support */&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;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]] and [[SoC_2024|2024]].&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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66737</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66737"/>
		<updated>2026-02-03T09:31:31Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Radio-Browser integation */&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;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]] and [[SoC_2024|2024]].&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;
== 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;
== 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66736</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66736"/>
		<updated>2026-02-03T09:31:11Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Implement DVD-Audio deciphering */&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;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]] and [[SoC_2024|2024]].&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;
== 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;
== 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;
== 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;
== 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66735</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66735"/>
		<updated>2026-02-03T09:30:36Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* iced ui 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;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]] and [[SoC_2024|2024]].&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;
== 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;
== 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;
== 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;
== 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66734</id>
		<title>SoC 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2026&amp;diff=66734"/>
		<updated>2026-02-03T09:29:21Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: Import last year&amp;#039;s page&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;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]] and [[SoC_2024|2024]].&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;
== 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;
== iced ui for VLC ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iced-rs/iced iced] is a cross-platform UI library for Rust.&lt;br /&gt;
The project aims to provide a VLC iced Widget as first step and then a&lt;br /&gt;
full UI as complete as possible within the time available.&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Revamp and publish the VLC-rs bindings&lt;br /&gt;
* Create an iced Widget similar to [https://github.com/jazzfool/iced_video_player what exists already forGStreamer]&lt;br /&gt;
* Increase the richness of the UI gradually&lt;br /&gt;
* First normal direct playback (play pause seek)&lt;br /&gt;
* Add volume controls&lt;br /&gt;
* Add support to manage subtitles&lt;br /&gt;
* Expose the VLC configuration knobs (one subset at time)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Luca Barbato&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;
== 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;
== 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62305</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62305"/>
		<updated>2025-02-11T18:28:27Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* iced ui for VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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;
== 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;
== iced ui for VLC ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iced-rs/iced iced] is a cross-platform UI library for Rust.&lt;br /&gt;
The project aims to provide a VLC iced Widget as first step and then a&lt;br /&gt;
full UI as complete as possible within the time available.&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Revamp and publish the VLC-rs bindings&lt;br /&gt;
* Create an iced Widget similar to [https://github.com/jazzfool/iced_video_player what exists already forGStreamer]&lt;br /&gt;
* Increase the richness of the UI gradually&lt;br /&gt;
* First normal direct playback (play pause seek)&lt;br /&gt;
* Add volume controls&lt;br /&gt;
* Add support to manage subtitles&lt;br /&gt;
* Expose the VLC configuration knobs (one subset at time)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 175h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proposed mentor&#039;&#039;&#039;: Luca Barbato&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;
== 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;
== 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62304</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62304"/>
		<updated>2025-02-11T18:26:40Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Other short ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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;
== 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;
== iced ui for VLC ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iced-rs/iced iced] is a cross-platform UI library for Rust.&lt;br /&gt;
The project aims to provide a VLC iced Widget as first step and then a&lt;br /&gt;
full UI as complete as possible within the time available.&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Revamp and publish the VLC-rs bindings&lt;br /&gt;
* Create an iced Widget similar to [https://github.com/jazzfool/iced_video_player what exists already forGStreamer]&lt;br /&gt;
* Increase the richness of the UI gradually&lt;br /&gt;
* First normal direct playback (play pause seek)&lt;br /&gt;
* Add volume controls&lt;br /&gt;
* Add support to manage subtitles&lt;br /&gt;
* Expose the VLC configuration knobs (one subset at time)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Luca Barbato&#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;
== 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;
== 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62303</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62303"/>
		<updated>2025-02-11T11:01:12Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Improve the web interface of VLC in Vue.js */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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;
== 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;
== iced ui for VLC ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iced-rs/iced iced] is a cross-platform UI library for Rust.&lt;br /&gt;
The project aims to provide a VLC iced Widget as first step and then a&lt;br /&gt;
full UI as complete as possible within the time available.&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Revamp and publish the VLC-rs bindings&lt;br /&gt;
* Create an iced Widget similar to [https://github.com/jazzfool/iced_video_player what exists already forGStreamer]&lt;br /&gt;
* Increase the richness of the UI gradually&lt;br /&gt;
* First normal direct playback (play pause seek)&lt;br /&gt;
* Add volume controls&lt;br /&gt;
* Add support to manage subtitles&lt;br /&gt;
* Expose the VLC configuration knobs (one subset at time)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Luca Barbato&#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;
== 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62302</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62302"/>
		<updated>2025-02-10T17:24:25Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Scripting VLC with wasm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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;
== 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;
== iced ui for VLC ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iced-rs/iced iced] is a cross-platform UI library for Rust.&lt;br /&gt;
The project aims to provide a VLC iced Widget as first step and then a&lt;br /&gt;
full UI as complete as possible within the time available.&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Revamp and publish the VLC-rs bindings&lt;br /&gt;
* Create an iced Widget similar to [https://github.com/jazzfool/iced_video_player what exists already forGStreamer]&lt;br /&gt;
* Increase the richness of the UI gradually&lt;br /&gt;
* First normal direct playback (play pause seek)&lt;br /&gt;
* Add volume controls&lt;br /&gt;
* Add support to manage subtitles&lt;br /&gt;
* Expose the VLC configuration knobs (one subset at time)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Luca Barbato&#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;
== 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 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62301</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62301"/>
		<updated>2025-02-10T17:24:14Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Implement Pipewire input module for audio and video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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;
== 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;
== iced ui for VLC ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iced-rs/iced iced] is a cross-platform UI library for Rust.&lt;br /&gt;
The project aims to provide a VLC iced Widget as first step and then a&lt;br /&gt;
full UI as complete as possible within the time available.&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Revamp and publish the VLC-rs bindings&lt;br /&gt;
* Create an iced Widget similar to [https://github.com/jazzfool/iced_video_player what exists already forGStreamer]&lt;br /&gt;
* Increase the richness of the UI gradually&lt;br /&gt;
* First normal direct playback (play pause seek)&lt;br /&gt;
* Add volume controls&lt;br /&gt;
* Add support to manage subtitles&lt;br /&gt;
* Expose the VLC configuration knobs (one subset at time)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Luca Barbato&#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;
== 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, 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 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62299</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62299"/>
		<updated>2025-02-09T12:06:23Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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;
== 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;
== iced ui for VLC ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iced-rs/iced iced] is a cross-platform UI library for Rust.&lt;br /&gt;
The project aims to provide a VLC iced Widget as first step and then a&lt;br /&gt;
full UI as complete as possible within the time available.&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Revamp and publish the VLC-rs bindings&lt;br /&gt;
* Create an iced Widget similar to [https://github.com/jazzfool/iced_video_player what exists already forGStreamer]&lt;br /&gt;
* Increase the richness of the UI gradually&lt;br /&gt;
* First normal direct playback (play pause seek)&lt;br /&gt;
* Add volume controls&lt;br /&gt;
* Add support to manage subtitles&lt;br /&gt;
* Expose the VLC configuration knobs (one subset at time)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Duration&#039;&#039;&#039;: 350h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Luca Barbato&#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;
== 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, 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62298</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62298"/>
		<updated>2025-02-08T18:41:54Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* iced ui for VLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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;
== iced ui for VLC ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iced-rs/iced iced] is a cross-platform UI library for Rust.&lt;br /&gt;
The project aims to provide a VLC iced Widget as first step and then a&lt;br /&gt;
full UI as complete as possible within the time available.&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
* Revamp and publish the VLC-rs bindings&lt;br /&gt;
* Create an iced Widget similar to [https://github.com/jazzfool/iced_video_player what exists already forGStreamer]&lt;br /&gt;
* Increase the richness of the UI gradually&lt;br /&gt;
* First normal direct playback (play pause seek)&lt;br /&gt;
* Add volume controls&lt;br /&gt;
* Add support to manage subtitles&lt;br /&gt;
* Expose the VLC configuration knobs (one subset at time)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Luca Barbato&#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;
== 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, 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62297</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62297"/>
		<updated>2025-02-08T18:39:34Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Ideas for VLC &amp;amp; libVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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;
== iced ui for VLC ==&lt;br /&gt;
&lt;br /&gt;
[iced](https://github.com/iced-rs/iced) is a cross-platform UI library for Rust.&lt;br /&gt;
The project aims to provide a VLC iced Widget as first step and then a&lt;br /&gt;
full UI as complete as possible within the time available.&lt;br /&gt;
&lt;br /&gt;
Tasks&lt;br /&gt;
- Revamp and publish the VLC-rs bindings&lt;br /&gt;
- Create an iced Widget similar to [what exists already for&lt;br /&gt;
GStreamer](https://github.com/jazzfool/iced_video_player)&lt;br /&gt;
- Increase the richness of the UI gradually&lt;br /&gt;
 - First normal direct playback (play pause seek)&lt;br /&gt;
 - Add volume controls&lt;br /&gt;
 - Add support to manage subtitles&lt;br /&gt;
 - Expose the VLC configuration knobs (one subset at time)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Luca Barbato&#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;
== 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, 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Template:GSoC&amp;diff=62296</id>
		<title>Template:GSoC</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Template:GSoC&amp;diff=62296"/>
		<updated>2025-02-08T10:26:13Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox&amp;lt;!--&lt;br /&gt;
--&amp;gt;|title=[[VideoLAN]] [[Google Summer of Code]] (GSoC/SoC) mentoring projects&amp;lt;!--&lt;br /&gt;
--&amp;gt;|list1=[[SoC 2007|2007]] &amp;amp;bull; [[SoC 2008|2008]] &amp;amp;bull; [[SoC 2009|2009]] &amp;amp;bull; [[SoC 2010|2010]] &amp;amp;bull; [[SoC 2011|2011]] &amp;lt;small&amp;gt;([[GCodeIn 2011|GCi 2011]] &amp;amp;bull; [[SOCIS x264 2011]])&amp;lt;/small&amp;gt; &amp;amp;bull; &amp;lt;s&amp;gt;[[SoC 2012|2012]]&amp;lt;/s&amp;gt; &amp;amp;bull; &amp;lt;s&amp;gt;[[SoC 2013|2013]]&amp;lt;/s&amp;gt; &amp;amp;bull; [[SoC 2016|2016]] &amp;amp;bull; [[SoC 2017|2017]] &amp;amp;bull; [[SoC 2018|2018]] &amp;amp;bull; [[SoC 2019|2019]] &amp;amp;bull; [[SoC 2020|2020]] &amp;amp;bull; [[SoC 2021|2021]] &amp;amp;bull; [[SoC 2022|2022]] &amp;amp;bull; [[SoC 2023|2023]] &amp;amp;bull; [[SoC 2024|2024]] &amp;amp;bull; [[SoC 2025|2025]]}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Navigational template for GSoC projects&lt;br /&gt;
&lt;br /&gt;
[[Category:Footer templates]]&lt;br /&gt;
[[Category:Navigation templates]]&lt;br /&gt;
[[Category:SoC|*]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Category:SoC&amp;diff=62295</id>
		<title>Category:SoC</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Category:SoC&amp;diff=62295"/>
		<updated>2025-02-08T10:25:51Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Those pages covers [[VideoLAN]] work on [http://code.google.com/soc Google Summer of Code projects]&lt;br /&gt;
&lt;br /&gt;
* [[SoC_2025]] was what happened during the 2025 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2024]] was what happened during the 2024 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2023]] was what happened during the 2023 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2022]] was what happened during the 2022 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2021]] was what happened during the 2021 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2020]] was what happened during the 2020 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2019]] was what happened during the 2019 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2018]] was what happened during the 2018 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2017]] was what happened during the 2017 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2016]] was what happened during the 2016 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2011]] was what happened during the 2011 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2010]] was what happened during the 2010 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2009]] was what happened during the 2009 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2008]] was what happened during the 2008 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2007]] was what happened during the 2007 year, where VideoLAN was a mentoring association.&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mentorings]]&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62294</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62294"/>
		<updated>2025-02-08T10:24:07Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Port the VLC iOS UI to visionOS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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;
== 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, 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62293</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62293"/>
		<updated>2025-02-08T10:23:48Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Add AAC via S/PDIF and Bluetooth support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62292</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62292"/>
		<updated>2025-02-08T10:23:23Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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]], [[SoC_2023|2023]] and [[SoC_2024|2024]].&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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62291</id>
		<title>SoC 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2025&amp;diff=62291"/>
		<updated>2025-02-08T10:22:49Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: Created page with &amp;quot;{{DISPLAYTITLE:Google Summer of Code 2025}} &amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt; https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png &amp;lt;/span&amp;gt; This page gives...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2025}}&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 2025] 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62238</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62238"/>
		<updated>2024-03-19T13:17:39Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62237</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62237"/>
		<updated>2024-02-21T12:40:18Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &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;
== 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62236</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62236"/>
		<updated>2024-02-21T09:27:52Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &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;
== 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;
== 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;Task 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62235</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62235"/>
		<updated>2024-02-21T09:26:45Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &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;
== 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;
== 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;
&#039;&#039;&#039;Radio-Browser integation&#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;Task 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62234</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62234"/>
		<updated>2024-02-06T15:46:50Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &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;
== 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;
== 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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62233</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62233"/>
		<updated>2024-02-06T15:39:40Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &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;
== 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;
== 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;
== 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;
* 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62232</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62232"/>
		<updated>2024-02-06T14:33:33Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Let&amp;#039;s get in touch */&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;
== 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;
== 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;
== 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;
== 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;
== 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;
* 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62231</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62231"/>
		<updated>2024-02-06T14:31:17Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &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;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;
== 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;
== 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;
== 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;
== 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;
== 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;
* 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62230</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62230"/>
		<updated>2024-02-05T11:56:58Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &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;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;
== 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;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;
== 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;
== 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;
* 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62229</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62229"/>
		<updated>2024-02-05T11:53:07Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: /* Rewrite some C modules in Rust */&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;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;
== 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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Template:GSoC&amp;diff=62228</id>
		<title>Template:GSoC</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Template:GSoC&amp;diff=62228"/>
		<updated>2024-02-04T07:46:21Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox&amp;lt;!--&lt;br /&gt;
--&amp;gt;|title=[[VideoLAN]] [[Google Summer of Code]] (GSoC/SoC) mentoring projects&amp;lt;!--&lt;br /&gt;
--&amp;gt;|list1=[[SoC 2007|2007]] &amp;amp;bull; [[SoC 2008|2008]] &amp;amp;bull; [[SoC 2009|2009]] &amp;amp;bull; [[SoC 2010|2010]] &amp;amp;bull; [[SoC 2011|2011]] &amp;lt;small&amp;gt;([[GCodeIn 2011|GCi 2011]] &amp;amp;bull; [[SOCIS x264 2011]])&amp;lt;/small&amp;gt; &amp;amp;bull; &amp;lt;s&amp;gt;[[SoC 2012|2012]]&amp;lt;/s&amp;gt; &amp;amp;bull; &amp;lt;s&amp;gt;[[SoC 2013|2013]]&amp;lt;/s&amp;gt; &amp;amp;bull; [[SoC 2016|2016]] &amp;amp;bull; [[SoC 2017|2017]] &amp;amp;bull; [[SoC 2018|2018]] &amp;amp;bull; [[SoC 2019|2019]] &amp;amp;bull; [[SoC 2020|2020]] &amp;amp;bull; [[SoC 2021|2021]] &amp;amp;bull; [[SoC 2022|2022]] &amp;amp;bull; [[SoC 2023|2023]] &amp;amp;bull; [[SoC 2024|2024]]}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Navigational template for GSoC projects&lt;br /&gt;
&lt;br /&gt;
[[Category:Footer templates]]&lt;br /&gt;
[[Category:Navigation templates]]&lt;br /&gt;
[[Category:SoC|*]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Category:SoC&amp;diff=62227</id>
		<title>Category:SoC</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Category:SoC&amp;diff=62227"/>
		<updated>2024-02-04T07:44:46Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Those pages covers [[VideoLAN]] work on [http://code.google.com/soc Google Summer of Code projects]&lt;br /&gt;
&lt;br /&gt;
* [[SoC_2024]] was what happened during the 2020 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2023]] was what happened during the 2020 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2022]] was what happened during the 2020 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2021]] was what happened during the 2020 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2020]] was what happened during the 2020 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2019]] was what happened during the 2019 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2018]] was what happened during the 2018 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2017]] was what happened during the 2017 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2016]] was what happened during the 2016 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2011]] was what happened during the 2011 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2010]] was what happened during the 2010 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2009]] was what happened during the 2009 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2008]] was what happened during the 2008 year, where VideoLAN was a mentoring association.&lt;br /&gt;
* [[SoC_2007]] was what happened during the 2007 year, where VideoLAN was a mentoring association.&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mentorings]]&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62226</id>
		<title>SoC 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2024&amp;diff=62226"/>
		<updated>2024-02-04T07:27:14Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: Created page with &amp;quot;{{DISPLAYTITLE:Google Summer of Code 2024}} &amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt; https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png &amp;lt;/span&amp;gt; This page gives...&amp;quot;&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;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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62182</id>
		<title>SoC 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2023&amp;diff=62182"/>
		<updated>2023-02-06T16:27:43Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: Created page with &amp;quot;{{DISPLAYTITLE:Google Summer of Code 2023}} &amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt; https://developers.google.com/open-source/gsoc/images/gsoc2016-sun-373x373.png &amp;lt;/span&amp;gt; This page gives...&amp;quot;&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.&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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=IPod_Video_Conversion_Guide&amp;diff=62176</id>
		<title>IPod Video Conversion Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=IPod_Video_Conversion_Guide&amp;diff=62176"/>
		<updated>2022-11-07T09:32:52Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{howto|Make your Video Files playable on an iPod using vlc 0.8.6}} &lt;br /&gt;
&lt;br /&gt;
The following is a guide for converting (transcoding to file) any video that VLC Media Player (VLC) can play into a format that the Apple iPod can play. This should be &amp;quot;fool proof.&amp;quot; This guide does not cover the process of putting those files onto an iPod. &lt;br /&gt;
&lt;br /&gt;
To play on this device, the file you copy to it needs to be of the correct format. This format is summarized below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Video Codec &lt;br /&gt;
| &#039;&#039;&#039;mp4v&#039;&#039;&#039; ([[MPEG4]])&lt;br /&gt;
|-&lt;br /&gt;
| Audio Codec &lt;br /&gt;
| &#039;&#039;&#039;mp4a&#039;&#039;&#039; ([[MP4 audio]]), &#039;&#039;&#039;aac&#039;&#039;&#039; ([[AAC]])&lt;br /&gt;
|-&lt;br /&gt;
| [[Container]] &lt;br /&gt;
| &#039;&#039;&#039;mp4&#039;&#039;&#039; ([[MPEG-4|MPEG4/MOV]])&lt;br /&gt;
|-&lt;br /&gt;
| Size &lt;br /&gt;
| 320x240 or 640 x 480 for iPod Classic, iPhone, and iPod Touch &lt;br /&gt;
| Widescreen iPod Classic, iPhone, and iPod Touch support 640 x 360 Other iPods support 320 x 180&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Why Use VLC to Convert Video for the iPod?  ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;re looking for the absolute highest quality in video conversion, then do NOT use VLC to convert Video for the iPod. There are many, probably too many, programs already available. &lt;br /&gt;
&lt;br /&gt;
I prefer to use VLC to convert to iPod video, because I know that if VLC can play the file, then VLC can convert it for my iPod. I can also use VLC in a script, which means I can tie it into my intranet, run conversions automatically, and/or keep &amp;quot;profiles&amp;quot; (by using scripts) for each video format that I&#039;d like to convert. In addition, converting to iPod video with VLC is very quick, because the encoder is only doing one pass. This means that VLC is not just good for converting to iPod video, but it is also good for converting to any type of video, where I need versatility and speed. &lt;br /&gt;
&lt;br /&gt;
If considering the disk space on an iPod and the battery life, I think it is unnecessary to worry about file size/quality. Whereas a person can store their entire music library on an iPod, a person will not be able to store their entire video library on an iPod. At some point, that person will need to come home, dock the iPod, and transfer files. It is more likely that a movie, a music video, or at most a complete television series will be stored on the iPod. &lt;br /&gt;
&lt;br /&gt;
== Converting a Video with the Graphical User Interface  ==&lt;br /&gt;
&lt;br /&gt;
Open VLC. Please be sure you are using the default settings for VLC. Please be especially sure that you do not have &amp;quot;repeat&amp;quot; set, as you will infinitely overwrite your transcoded file. &lt;br /&gt;
&lt;br /&gt;
[[File:B8f63409-cb02-11db-8d2f-e8beb4eeadb9.png]]&lt;br /&gt;
&lt;br /&gt;
Click &amp;quot;File&amp;quot; then &amp;quot;Open File&amp;quot;, which will bring up the Open dialog. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; [[File:2afeac56-cb03-11db-8d30-e8beb4eeadb9.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Be sure that you are on the File tab. Click Browse and select the file that you would like to convert. Now check the Stream/Save box and click the Settings ... button. This will open the Stream Output dialog. This is where the magic happens. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; [[File:8f7744fe-cb03-11db-8d31-e8beb4eeadb9.png]]&lt;br /&gt;
&lt;br /&gt;
*Notice that when you first open the dialog (if you haven&#039;t already tried to stream/save a file in this session) the Stream output MRL box at the top is empty. As you make your selections in the rest of this window, that box will fill up with your options in a form that the VLC executable understands. &lt;br /&gt;
*First, check the File box, then click the Browse... button to the right. Now choose the name of the file that will be created during the conversion. Be sure to change the extension to &amp;quot;mp4&amp;quot;. &lt;br /&gt;
*Now choose the Encapsulation method. This is also known as the &amp;quot;container&amp;quot;. Select MP4.&lt;br /&gt;
&lt;br /&gt;
*Go to Transcoding options next and check Video codec. Change the box to its immediate right to mp4v or h264. The next box to the right changes the bitrate of the video. I recommend 768 kb/s. Note - for higher quality and only a slight increase in file size, use 1024. This will make watching the video tolerable if you use the ipod AV cable and a TV &lt;br /&gt;
*Still in the Transcoding options area, check the Audio codec box, and change the box to its immediate right to mp4a. The next box to the right changes the audio bitrate. I recommend 64 kb/s or 96 kb/s. Note - For higher quality (and not terrible file size) use 128. If you output the file over decent speakers or if the movie has a complex soundtrack, this will make a noticeable difference.&lt;br /&gt;
&lt;br /&gt;
[[File:Cea16d6e-cb06-11db-8d4f-e8beb4eeadb9.png]]&lt;br /&gt;
&lt;br /&gt;
So far, everything is fairly standard, but here comes the tricky part. Go back up to the &amp;quot;Stream output MRL Target:&amp;quot; box. Notice that the box is full of text. Look for the part that has #transcode{ }, and type &#039;&#039;&#039;width=320,canvas-height=240&#039;&#039;&#039; somewhere inside the { }. Do not add extra spaces. This setting changes the width to 320 pixels and adds black bars above and below the movie, allowing all movies to maintain the appearance of their original aspect ratio. &#039;&#039;&#039;Be careful&#039;&#039;&#039; here. If you change any of the settings below this box, you will have to re-enter the width and height settings. &lt;br /&gt;
&lt;br /&gt;
Click OK to close the Stream ouput dialog, then click OK to close the File open dialog. The movie should now start playing without showing the picture on the screen. When it is complete you should have an iPod compatible file. &lt;br /&gt;
&lt;br /&gt;
== Converting a Video through the Command-line  ==&lt;br /&gt;
&lt;br /&gt;
Conversion via the command-line is a little beyond the scope of this document, but using VLC in a script is my favorite way to convert videos. This generally allows me the leisure of dragging the file onto the script and magically getting my new iPod file in a certain directory. &lt;br /&gt;
&lt;br /&gt;
Generally speaking, the format of the command can be: &lt;br /&gt;
&lt;br /&gt;
 vlc -vvv &amp;quot;my video.avi&amp;quot;&amp;amp;nbsp;:sout=&amp;quot;#transcode{width=320,canvas-height=240,vcodec=mp4v, vb=768, acodec=mp4a, ab=96, channels=2}:std{access=file, mux=mp4, url=myvideo.mp4}&amp;quot; vlc:quit&lt;br /&gt;
&lt;br /&gt;
On a Windows machine, I use the following batch script for drag and drop functionality. Once a file is dropped onto it, vlc converts the video to a folder that is set in the script. &lt;br /&gt;
&lt;br /&gt;
The ipod video is saved in &amp;quot;&amp;lt;code&amp;gt;My Documents/ipod video&amp;lt;/code&amp;gt;&amp;quot;. You must create this folder &#039;&#039;&#039;before&#039;&#039;&#039; using this script. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 @REM Remove the quotes from&amp;amp;nbsp;%1 variable for vlc paramters&lt;br /&gt;
 @SET infile=%1&lt;br /&gt;
 @SET infile=%infile:&amp;quot;=%&lt;br /&gt;
 @REM Strip directory paths from&amp;amp;nbsp;%1 ...&lt;br /&gt;
 @FOR /F &amp;quot;delims=&amp;quot;&amp;amp;nbsp;%%i in (&amp;quot;%infile%&amp;quot;) do SET filename=%%~ni&lt;br /&gt;
 @SET outdir=%userprofile%\My Documents\ipod video\&lt;br /&gt;
 @SET outfile=%outdir%%filename%.mp4&lt;br /&gt;
 @REM The following command should be on ONE line only.&lt;br /&gt;
 @REM Be sure to remove the carriage returns in your batch file.&lt;br /&gt;
 &amp;quot;C:\Program Files\VideoLAN\VLC\vlc.exe&amp;quot; -vvv &amp;quot;%infile%&amp;quot;&amp;amp;nbsp;:sout=&amp;quot;#transcode{width=320, canvas-height=240, vcodec=mp4v, vb=768, acodec=mp4a, ab=96, channels=2}:standard{access=file,mux=mp4,url=%outfile%}&amp;quot; vlc:quit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Converting with Subtitles  ==&lt;br /&gt;
&lt;br /&gt;
The basic rule for subtitles is: if you can see them in VLC, then you can put them in your converted video; however, getting this to work can be tricky. Essentially, you use the &#039;&#039;&#039;soverlay&#039;&#039;&#039; option in the #transcode{...} section to tell VLC that it needs to combine the video and the subtitle streams into one video stream. Of course, that means nothing if you don&#039;t know how to get subtitles to display in the first place. &lt;br /&gt;
&lt;br /&gt;
Subtitles for video can be stored in the orginal file as images or text. Subtitles can also come from a separate text file. It all depends on the original video file. Despite where the subtitles come from, you need to first get the subtitles to appear in VLC during normal playback. &lt;br /&gt;
&lt;br /&gt;
If the subtitles are a part of the original file (as with DVD, SVCD, OGM, or MKV video), you will need to use the &#039;&#039;&#039;sub-track&#039;&#039;&#039; option to select the desired subtitle track. You will specify this option &#039;&#039;after&#039;&#039; the #transcode {...} section. &lt;br /&gt;
&lt;br /&gt;
[[File:8965ad57a-cb06-11db-8d4f-e8beb4eeadb9.png]]&lt;br /&gt;
&lt;br /&gt;
To find the track numbers for the original file, play the file in VLC, click on the Video menu, and view the available tracks under Subtitles Track. The value that you will use for sub-track is the value in this list minus 1. From the picture above, you would specify sub-track=2 to get the second English track listed. (Use sub-track=5 for Deutsch.) To tie it all together, your #transcode{...} section would look like this: &lt;br /&gt;
&lt;br /&gt;
 #transcode{...,&#039;&#039;&#039;soverlay&#039;&#039;&#039;}:stuff{...options...}&#039;&#039;&#039;&amp;amp;nbsp;:sub-track=2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depending on the original file, you may also be able to get away with using the &#039;&#039;&#039;sub-language&#039;&#039;&#039; option instead of specifying the exact subtitle track. Note that this would play the first English track if we specified sub-language=English. Your #transcode{...} section would look like this: &lt;br /&gt;
&lt;br /&gt;
 #transcode{...,&#039;&#039;&#039;soverlay&#039;&#039;&#039;}:stuff{...options...}&#039;&#039;&#039;&amp;amp;nbsp;:sub-language=English&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now that you have the video playing with subtitles, you can create a video with the subtitles overlayed on the video, using the same methods at the top of the document. &lt;br /&gt;
&lt;br /&gt;
For best results, first transcode to file &#039;&#039;without&#039;&#039; setting a new width or height (the width=320,canvas-height=240 setting in the #transcode{...} section). After you have made the larger file with the subtitles overlayed, then convert to the smaller iPod width and height. This will make it so that your subtitles appear in the correct proportions on the smaller screen size. &lt;br /&gt;
&lt;br /&gt;
== Testing Your New File  ==&lt;br /&gt;
&lt;br /&gt;
Now as I stated earlier, I&#039;ve run many tests on different input file formats and containers. Currently it is very rare for me to find a file that I cannot convert. As far as testing the file goes, I strongly recommend using Apple&#039;s Quicktime player. It is much faster than repeatedly transferring the video to your iPod, disconnecting the iPod, and playing the video. Unfortunately, Quicktime is only available on Mac and Windows. &lt;br /&gt;
&lt;br /&gt;
== Best video output for your ipod  ==&lt;br /&gt;
&lt;br /&gt;
Why would you want the best output? Because (many people don&#039;t know that) you can play movie on TV from your ipod with a single (usually cheap) cable. I have i Ipod video of the 5th generation and after several hours of testing here are my conclusions: &lt;br /&gt;
&lt;br /&gt;
H264 from vlc does not seem to be supported on this generation so the choice is Mp4v all the way.(althoug h264 would be a better codec) &lt;br /&gt;
&lt;br /&gt;
The maximum output resolution is 800 X 400. Any values below that is supported. Your better off keeping the same aspect ratio as the source. for example: most dvds are 720 x 480 so you should put 600 x 400 to keep that same ratio. &lt;br /&gt;
&lt;br /&gt;
If you dont keep the same ratio VLC will crop or add black canvas depending on what you are doing that means your video will never be odd looking. &lt;br /&gt;
&lt;br /&gt;
The maximum Bitrate supported is 2400 kbps. &lt;br /&gt;
&lt;br /&gt;
Adding &amp;lt;code&amp;gt;,deinterlace&amp;lt;/code&amp;gt; to the #transcode{} section to deinterlace the video is a good idea but not necessary as it will correct the interlaced material and does not have an impact on uninterlaced material. &lt;br /&gt;
&lt;br /&gt;
== Solving Problems with Your New File  ==&lt;br /&gt;
&lt;br /&gt;
Here are some of my most notable problems and their solutions. &lt;br /&gt;
&lt;br /&gt;
=== VLC closes without outputting anything or the file is 0kb.  ===&lt;br /&gt;
&lt;br /&gt;
*Make sure you are only converting the movie, not a playlist. &lt;br /&gt;
*If you&#039;re using a script, make sure your script is correct. (I admit, the one I provided will probably have faults.)&lt;br /&gt;
&lt;br /&gt;
=== My file is very small or only audio is recorded or only some of the video is present.  ===&lt;br /&gt;
&lt;br /&gt;
*More than likely, the input file is slightly corrupted in a spot or you are using the mp4v generic codec instead of the h264 codec. h264 really does work more consistently. &lt;br /&gt;
*Try adding &#039;&#039;&#039;fps=25,samplerate=44100&#039;&#039;&#039; to the #transcode{...} section. &lt;br /&gt;
*Your CPU may be getting too hot. Seriously. This was happening to me on one of my machines, and when I tried it on another, conversion worked fine. Using a thermometer on the original CPU/heatsink, I discovered that the CPU jumped to 70 degrees during conversion! Solution: get another fan.&lt;br /&gt;
&lt;br /&gt;
=== iTunes will not accept the new mp4 file  ===&lt;br /&gt;
&lt;br /&gt;
*If converting WMV, ASF or DVR-MS, you can probably use the &#039;&#039;&#039;vcodec=mp4v&#039;&#039;&#039; instead. There seems to be a problem with the output container when using these as file inputs.&lt;br /&gt;
&lt;br /&gt;
== Notes  ==&lt;br /&gt;
&lt;br /&gt;
*The 5G and 5.5G of iPod video (with latest firmware) support video resolutions up to 640x480; however, the screen resolution is still 320x240. This may only be useful with subtitled videos, as it removes the second step of resizing the overlayed video.&lt;br /&gt;
&lt;br /&gt;
== Older version of this howto  ==&lt;br /&gt;
&lt;br /&gt;
To make the video the correct size, you can edit the [[Preferences]], or run vlc from a [[Command prompt]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 vlc &amp;quot;input_filename&amp;quot;&amp;amp;nbsp;:sout=&amp;quot;#transcode{vcodec=mp4v, vb=512, acodec=mp4a, ab=128, channels=2, audio-sync, width=320, height=240}:std{access=file, mux=mp4,url=&amp;quot;output_filename&amp;quot;}&amp;quot; --aspect-ratio=width:height&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This all goes on one line, and you&#039;ll need to fill in some of the values: the input and output filenames, plus the aspect ratio of the input file. By default vlc will stretch the video to the size specified by sout-transcode-height and width, but if you tell vlc the file&#039;s aspect ratio, it will scale and put a black border around it. The aspect ratio can be written as a ratio of width and height, with a colon between the two, or as a decimal. &lt;br /&gt;
&lt;br /&gt;
Further I found that the iPod was particular about the parameter &amp;quot;channels&amp;quot; being set to 2. I found that without this parameter iTunes would import the file into the library but would not be able to upload the same to the iPod. &lt;br /&gt;
&lt;br /&gt;
Further during my experiments I figured out that it was better to stick with MPEG4 encoding for the video stream. While H.264 codec is the latest video compression standard I found the resultant file size usually larger than when the MPEG4 compression mode was used, keeping all the other parameters like the resolution and the bitrate same. This definitely seems contradictory to what I would have expected but these were the findings of my experiments while using videoLan VLC media player. &lt;br /&gt;
&lt;br /&gt;
(In fact, if the bit rates are chosen equally, the file sizes can be expected to be roughly the same. The advantage of h.264 over mpeg4 is its better video quality with the same bit rate or the allowance for lower bit rates and thus smaller files with comparable video quality.) &lt;br /&gt;
&lt;br /&gt;
If you would like to try using H.264 set the parameter vcodec to h264 in the above command line as follows &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 vlc &amp;quot;input_filename&amp;quot;&amp;amp;nbsp;:sout=&amp;quot;#transcode{vcodec=h264, vb=512, acodec=mp4a, ab=128, channels=2, audio-sync, width=320, height=240}:std{access=file, mux=mp4,url=&amp;quot;output_filename&amp;quot;}&amp;quot;--aspect-ratio=width:height&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A useful tip - If you intend to create a batch file that would transcode several titles in a DVD one after the other use the keyword vlc:quit as follows &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 vlc &amp;quot;input_filename&amp;quot;&amp;amp;nbsp;:sout=&amp;quot;#transcode{vcodec=h264, vb=512, acodec=mp4a, ab=128, channels=2, audio-sync, width=320, height=240}:std{access=file, mux=mp4,url=&amp;quot;output_filename&amp;quot;}&amp;quot; vlc:quit --aspect-ratio=width:height&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Converting Oddly Sized Input Videos to View on the iPod Video  ==&lt;br /&gt;
&lt;br /&gt;
The command-line examples above did not work for me when converting video that did not already have a 4:3 aspect ratio. After converting the video, iTunes would not load the video into my library, and I would get &amp;quot;invalid data&amp;quot; errors when trying to view the file in the Quicktime Player. It seams as of at least version 8.6a (not tested on previous versions), vlc will use just the height value to determine the resultant width, while maintaining the original aspect ratio, not the specified ratio. &lt;br /&gt;
&lt;br /&gt;
To remedy this, I used the &#039;&#039;&#039;sout-transcode-canvas-height&#039;&#039;&#039; option with the &#039;&#039;&#039;sout-transcode-width&#039;&#039;&#039; and removed the specific aspect ratio option and the specific height declaration. My example command-line is below: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 vlc.exe -vvv &amp;quot;my video.avi&amp;quot;&amp;amp;nbsp;:sout=&amp;quot;#transcode{vcodec=mp4v, vb=768, acodec=mp4a, ab=96, channels=2, samplerate=22050, width=320, canvas-height=240}:std{access=file, mux=mp4, url=myvideo.mp4}&amp;quot; vlc:quit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039; I&#039;ve noticed that some files encoded with XVID come out without video. If this happens, try using vcodec=h264. &lt;br /&gt;
&lt;br /&gt;
This command will start vlc, transcode the video to file, and quit when complete. The resultant video will be 320x240 with a black canvas filling in the height to the video borders. If the input is already has a 4:3 (320x240) aspect ratio, then no border will appear. &lt;br /&gt;
&lt;br /&gt;
Here is an [http://www.kludgeroo.com/linked/videolan/vlc_test_conversion_ipod.mp4 iPod format sample video] converted with vlc. &lt;br /&gt;
&lt;br /&gt;
== Using Batch Files  ==&lt;br /&gt;
&lt;br /&gt;
Here is the info for a batch file to convert videos one after another, although you have to enter your input and output values yourself (use find and replace, or, if you are better than me, make an actual script/program). Make sure the output names are different or else it will get stuck and/or overwrite the old one &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 vlc &amp;quot;&#039;&#039;&#039;input_filename&#039;&#039;&#039;&amp;quot;&amp;amp;nbsp;:sout=&amp;quot;#transcode{vcodec=mp4v, vb=512, acodec=mp4a, ab=128, channels=2, audio-sync, width=320, height=240}:std{access=file, mux=mp4,url=&amp;quot;&#039;&#039;&#039;output_filename&#039;&#039;&#039;&amp;quot;}&amp;quot; vlc:quit --aspect-ratio=width:height&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 vlc &amp;quot;&#039;&#039;&#039;input_filename(1)&#039;&#039;&#039;&amp;quot;&amp;amp;nbsp;:sout=&amp;quot;#transcode{vcodec=mp4v, vb=512, acodec=mp4a, ab=128, channels=2, audio-sync, width=320, height=240}:std{access=file, mux=mp4,url=&amp;quot;&#039;&#039;&#039;output_filename(1)&#039;&#039;&#039;&amp;quot;}&amp;quot; vlc:quit --aspect-ratio=width:height&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
......etc for each video to convert (useful for converting short .flv or .gvi, or pretty much any file) I relise this is inefficient, &lt;br /&gt;
&lt;br /&gt;
but hopefully someone will make a script (vlc seems best for making ipod videos from any source). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE2:&#039;&#039;&#039; I find that if i have spaces in the output it doesn&#039;t work, but this seems to be a problem with the .bat file. just don&#039;t use spaces and use an autorenamer to rename ([http://batchrenamer.sourceforge.net/]) &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; If you can somehow to get 264 to work (megui makes it work...) just change &#039;&#039;vcodec=mp4v&#039;&#039; to &#039;&#039;vcodec=h264&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
The script to drag and drop files (for Windows) is as follows: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 C:\PROGRA~1\VIDEOLAN\VLC\VLC -vvv&amp;amp;nbsp;%1&amp;amp;nbsp;:sout=#transcode{vcodec=mp4v,vb=512,acodec=mp4a,ab=128,channels=2,width=320,height=240}:duplicate{dst=std{access=file,mux=mp4,dst=%1.m4p}}&lt;br /&gt;
 pause&lt;br /&gt;
&lt;br /&gt;
There is no problem with spaces in filenames. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is also described (with snapshots) on http://tom.zickel.org/vlcmp4/&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
{{forum|15971}} &lt;br /&gt;
&lt;br /&gt;
If the audio ends up being too quiet, the easiest way to make it louder is in the &amp;quot;Get Info&amp;quot; box in iTunes. &lt;br /&gt;
&lt;br /&gt;
[[File:Ipod.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Version 0.9.2 and later&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
Some of these tips won&#039;t work with VLC 0.9.2, but the following command line should work with 0.9.2 &lt;br /&gt;
&lt;br /&gt;
 vlc -vvv &amp;quot;my_video.avi&amp;quot;&amp;amp;nbsp;:sout=#transcode{width=320,canvas-height=240,vcodec=mp4v,vb=768,acodec=mp4a,ab=96,channels=2}:duplicate{dst=std{access=file,mux=mp4,dst=video.mp4}} vlc://quit&lt;br /&gt;
&lt;br /&gt;
VLC&amp;amp;nbsp;1.0.2 uses the same command line parameters as VLC&amp;amp;nbsp;0.9.2. However neither VLC 0.9.2 nor VLC 1.0.2 is able to create any video files that Quicktime (and therefore iTunes) can play. Quicktime complains about errors in files generated by transcode options (other than the two below) that worked fine when using VLC 0.8.6a. &lt;br /&gt;
&lt;br /&gt;
If you want to try for yourself, the changes to the command line parameters from 0.8.6 to 0.9.2 and later are&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;url=video.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
changing to&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;dst=video.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
And&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;vlc:quit&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
changing to&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;vlc://quit&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
to allow VLC&amp;amp;nbsp;to quit and let Windows close the command prompt window.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Credits  ==&lt;br /&gt;
&lt;br /&gt;
Written by loqu (AKA Rob), http://www.kludgeroo.com/linked/videolan/vlc_ipod_converstion_8.6a.html (dead: [https://web.archive.org/web/20100228144535/http://www.kludgeroo.com/linked/videolan/vlc_ipod_converstion_8.6a.html archived version])&lt;br /&gt;
&lt;br /&gt;
I&#039;ve tested this guide on many containers, with and without subtitles. This is an evolving guide, so please refer to http://www.kludgeroo.com/linked/videolan/vlc_ipod_converstion_8.6a.html for the original. &lt;br /&gt;
&lt;br /&gt;
Before I begin I&#039;d like to thank the good people over at http://www.videolan.org for making a great multi-platform media program. I decided to make this guide, because I had to invest much of my time to get this to work. This is my way of giving back to the community.&lt;br /&gt;
&lt;br /&gt;
{{Outdated}}&lt;br /&gt;
&lt;br /&gt;
[[Category:iOS]]&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=File:8965ad57a-cb06-11db-8d4f-e8beb4eeadb9.png&amp;diff=62175</id>
		<title>File:8965ad57a-cb06-11db-8d4f-e8beb4eeadb9.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=File:8965ad57a-cb06-11db-8d4f-e8beb4eeadb9.png&amp;diff=62175"/>
		<updated>2022-11-07T09:32:43Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;8965ad57a-cb06-11db-8d4f-e8beb4eeadb9&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=File:Cea16d6e-cb06-11db-8d4f-e8beb4eeadb9.png&amp;diff=62174</id>
		<title>File:Cea16d6e-cb06-11db-8d4f-e8beb4eeadb9.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=File:Cea16d6e-cb06-11db-8d4f-e8beb4eeadb9.png&amp;diff=62174"/>
		<updated>2022-11-07T09:32:07Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cea16d6e-cb06-11db-8d4f-e8beb4eeadb9&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=File:8f7744fe-cb03-11db-8d31-e8beb4eeadb9.png&amp;diff=62173</id>
		<title>File:8f7744fe-cb03-11db-8d31-e8beb4eeadb9.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=File:8f7744fe-cb03-11db-8d31-e8beb4eeadb9.png&amp;diff=62173"/>
		<updated>2022-11-07T09:31:46Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;8f7744fe-cb03-11db-8d31-e8beb4eeadb9&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=File:2afeac56-cb03-11db-8d30-e8beb4eeadb9.png&amp;diff=62172</id>
		<title>File:2afeac56-cb03-11db-8d30-e8beb4eeadb9.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=File:2afeac56-cb03-11db-8d30-e8beb4eeadb9.png&amp;diff=62172"/>
		<updated>2022-11-07T09:31:23Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:B8f63409-cb02-11db-8d2f-e8beb4eeadb9.png|thumb]]&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=File:B8f63409-cb02-11db-8d2f-e8beb4eeadb9.png&amp;diff=62171</id>
		<title>File:B8f63409-cb02-11db-8d2f-e8beb4eeadb9.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=File:B8f63409-cb02-11db-8d2f-e8beb4eeadb9.png&amp;diff=62171"/>
		<updated>2022-11-07T09:30:37Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;v0.8.6&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62140</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62140"/>
		<updated>2022-02-21T08:40:01Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &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 to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]], [[SoC_2017|2017]], [[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.&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 and Firefox.&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;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
We have 3 major communication channels:&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;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: 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;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;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;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;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;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;
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;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 add 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;
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;
&#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;
* 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;
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;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;
== Other ideas for VLC &amp;amp; libVLC ==&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
We can help work with you to make those more detailed.&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 SSE2/AVX 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;
* Understanding the SSSE3 code of dav1d&lt;br /&gt;
* Port it to SSE2&lt;br /&gt;
* Write AVX-512 optimizations&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 Threading improvements ==&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 aims to:&lt;br /&gt;
- improve the threading of AV1, notably to separate the threads for the filters&lt;br /&gt;
- provide an external threadpool for multiple players&lt;br /&gt;
- provide a good auto-setup of threads counts, after benchmarking.&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;threading&#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;
== rav1e, the AV1 encoder in Rust ==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/xiph/rav1e rav1e] project aims to create a new AV1 encoder implementation in &lt;br /&gt;
Rust.&lt;br /&gt;
&lt;br /&gt;
To support this we need better AV1 analysis tools that give detailed information about AV1 streams including:&lt;br /&gt;
&lt;br /&gt;
* bit rate across the frame&lt;br /&gt;
* frame allocation within a scene&lt;br /&gt;
* display of frame data (block partitioning, mode decisions, motion vectors, etc)&lt;br /&gt;
* objective quality over time&lt;br /&gt;
* average rate (for streaming)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Rust&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62139</id>
		<title>SoC 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2022&amp;diff=62139"/>
		<updated>2022-02-21T08:36:07Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: Initial import&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 to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]], [[SoC_2017|2017]], [[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.&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 and Firefox.&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 it&#039;s 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;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
We have 3 major communication channels:&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;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: 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;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;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;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/tvTV 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 (aka &amp;quot;Marzipan&amp;quot;) 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;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. Like for example the network navigation section.&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;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: Soomin Lee, 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;
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;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 add 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;
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;
&#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;
* 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;
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;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, Soomin Lee&lt;br /&gt;
&lt;br /&gt;
== Other ideas for VLC &amp;amp; libVLC ==&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
We can help work with you to make those more detailed.&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 SSE2/AVX 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;
* Understanding the SSSE3 code of dav1d&lt;br /&gt;
* Port it to SSE2&lt;br /&gt;
* Write AVX-512 optimizations&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 Threading improvements ==&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 aims to:&lt;br /&gt;
- improve the threading of AV1, notably to separate the threads for the filters&lt;br /&gt;
- provide an external threadpool for multiple players&lt;br /&gt;
- provide a good auto-setup of threads counts, after benchmarking.&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;threading&#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;
== rav1e, the AV1 encoder in Rust ==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/xiph/rav1e rav1e] project aims to create a new AV1 encoder implementation in &lt;br /&gt;
Rust.&lt;br /&gt;
&lt;br /&gt;
To support this we need better AV1 analysis tools that give detailed information about AV1 streams including:&lt;br /&gt;
&lt;br /&gt;
* bit rate across the frame&lt;br /&gt;
* frame allocation within a scene&lt;br /&gt;
* display of frame data (block partitioning, mode decisions, motion vectors, etc)&lt;br /&gt;
* objective quality over time&lt;br /&gt;
* average rate (for streaming)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Rust&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VDD21&amp;diff=62113</id>
		<title>VDD21</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VDD21&amp;diff=62113"/>
		<updated>2021-11-03T20:43:37Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VDD}}&lt;br /&gt;
= Welcome to Video Dev Days 2021 =&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 its twelfths edition, people from the VideoLAN and open source multimedia communities will meet in &#039;&#039;&#039;Amsterdam&#039;&#039;&#039; to 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;
== Who can come? ==&lt;br /&gt;
&lt;br /&gt;
Literally every one is invited to VDD, we just need registration for legal reason &#039;&#039;(to enter the building)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This is a technical conference, focused on low-level multimedia, like codecs and their implementations like &#039;&#039;&#039;x264&#039;&#039;&#039; or &#039;&#039;&#039;dav1d&#039;&#039;&#039;, frameworks like &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; or &#039;&#039;&#039;Gstreamer&#039;&#039;&#039; or playback libraries like &#039;&#039;&#039;libVLC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Things like Javascript video frameworks or ad-injection frameworks would be considered out of scope.&lt;br /&gt;
&lt;br /&gt;
The price to enter is totally &#039;&#039;&#039;Free&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
== Friday December 10th ==&lt;br /&gt;
&lt;br /&gt;
Community bonding day !&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Evening drinks ===&lt;br /&gt;
&lt;br /&gt;
19:?? Evening drinks at ??&lt;br /&gt;
&lt;br /&gt;
== Saturday December 11th ==&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&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&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;08:30 - 09:00&#039;&#039;&#039; ||  style=&amp;quot;background: silver;&amp;quot; | Registration&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;09:00 - 09:10&#039;&#039;&#039; || &#039;&#039;&#039;Welcome words&#039;&#039;&#039; by Jean-Baptiste Kempf, VideoLAN&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:50 - 11:05&#039;&#039;&#039; || style=&amp;quot;background: silver;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&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;13:30 - 14:00&#039;&#039;&#039; || style=&amp;quot;background: silver;&amp;quot; |  &#039;&#039;&#039;Group photo&#039;&#039;&#039; (Goodies distribution will start before 13:30)&lt;br /&gt;
|-&lt;br /&gt;
|}&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&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;AV1 meetup&#039;&#039;&#039; || &#039;&#039;&#039;Hacking&#039;&#039;&#039; open sessions&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;16:00 - 18:00&#039;&#039;&#039; || &#039;&#039;&#039;VideoLAN meeting&#039;&#039;&#039; || &#039;&#039;&#039;Meetups&#039;&#039;&#039; || &#039;&#039;&#039;Hacking&#039;&#039;&#039; open sessions&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;19:30 - 21:30&#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;
&lt;br /&gt;
tba.&lt;br /&gt;
&lt;br /&gt;
== Sunday December 12 ==&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;13:00 - 14:00&#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;
&lt;br /&gt;
=== Afternoon schedule ===&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 || Opera 1 Auditorium || Opera 2 Auditorium || Cantata Meeting Room&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;14:00 - 15:00&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; user meetup || Gitlab CI session &#039;&#039;(VLC, but not-only)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;15:00 - 16:00&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; dev meetup || VLC mobile ports meetup&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;16:00 - 18:20&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; dev meetup || VLC UI and media library&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;18:20 - 18:30&#039;&#039;&#039; || colspan=3 style=&amp;quot;background: silver;&amp;quot; | &#039;&#039;&#039;Closing remarks&#039;&#039;&#039;  by jb&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;18:30 - 21:30&#039;&#039;&#039; || colspan=3 style=&amp;quot;background: silver;&amp;quot; | &#039;&#039;&#039;Unofficial Dinner&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unofficial Dinner ===&lt;br /&gt;
&lt;br /&gt;
== Location / main venue ==&lt;br /&gt;
tba.&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: tba.&lt;br /&gt;
&lt;br /&gt;
Elsewise, please make your own arrangements for accommodation.&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;
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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VDD21&amp;diff=62112</id>
		<title>VDD21</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VDD21&amp;diff=62112"/>
		<updated>2021-11-03T20:43:01Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: basic 2021 rework&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VDD}}&lt;br /&gt;
[[Image:Vdd2019.png|thumb|500px|]]&lt;br /&gt;
= Welcome to Video Dev Days 2021 =&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 its twelfths edition, people from the VideoLAN and open source multimedia communities will meet in &#039;&#039;&#039;Amsterdam&#039;&#039;&#039; to 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;
== Who can come? ==&lt;br /&gt;
&lt;br /&gt;
Literally every one is invited to VDD, we just need registration for legal reason &#039;&#039;(to enter the building)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This is a technical conference, focused on low-level multimedia, like codecs and their implementations like &#039;&#039;&#039;x264&#039;&#039;&#039; or &#039;&#039;&#039;dav1d&#039;&#039;&#039;, frameworks like &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; or &#039;&#039;&#039;Gstreamer&#039;&#039;&#039; or playback libraries like &#039;&#039;&#039;libVLC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Things like Javascript video frameworks or ad-injection frameworks would be considered out of scope.&lt;br /&gt;
&lt;br /&gt;
The price to enter is totally &#039;&#039;&#039;Free&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
== Friday December 10th ==&lt;br /&gt;
&lt;br /&gt;
Community bonding day !&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Evening drinks ===&lt;br /&gt;
&lt;br /&gt;
19:?? Evening drinks at ??&lt;br /&gt;
&lt;br /&gt;
== Saturday December 11th ==&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&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&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;08:30 - 09:00&#039;&#039;&#039; ||  style=&amp;quot;background: silver;&amp;quot; | Registration&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;09:00 - 09:10&#039;&#039;&#039; || &#039;&#039;&#039;Welcome words&#039;&#039;&#039; by Jean-Baptiste Kempf, VideoLAN&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:50 - 11:05&#039;&#039;&#039; || style=&amp;quot;background: silver;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&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;13:30 - 14:00&#039;&#039;&#039; || style=&amp;quot;background: silver;&amp;quot; |  &#039;&#039;&#039;Group photo&#039;&#039;&#039; (Goodies distribution will start before 13:30)&lt;br /&gt;
|-&lt;br /&gt;
|}&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&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;AV1 meetup&#039;&#039;&#039; || &#039;&#039;&#039;Hacking&#039;&#039;&#039; open sessions&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;16:00 - 18:00&#039;&#039;&#039; || &#039;&#039;&#039;VideoLAN meeting&#039;&#039;&#039; || &#039;&#039;&#039;Meetups&#039;&#039;&#039; || &#039;&#039;&#039;Hacking&#039;&#039;&#039; open sessions&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;19:30 - 21:30&#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;
&lt;br /&gt;
tba.&lt;br /&gt;
&lt;br /&gt;
== Sunday November 10 ==&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;13:00 - 14:00&#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;
&lt;br /&gt;
=== Afternoon schedule ===&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 || Opera 1 Auditorium || Opera 2 Auditorium || Cantata Meeting Room&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;14:00 - 15:00&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; user meetup || Gitlab CI session &#039;&#039;(VLC, but not-only)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;15:00 - 16:00&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; dev meetup || VLC mobile ports meetup&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;16:00 - 18:20&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; dev meetup || VLC UI and media library&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;18:20 - 18:30&#039;&#039;&#039; || colspan=3 style=&amp;quot;background: silver;&amp;quot; | &#039;&#039;&#039;Closing remarks&#039;&#039;&#039;  by jb&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;18:30 - 21:30&#039;&#039;&#039; || colspan=3 style=&amp;quot;background: silver;&amp;quot; | &#039;&#039;&#039;Unofficial Dinner&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unofficial Dinner ===&lt;br /&gt;
&lt;br /&gt;
== Location / main venue ==&lt;br /&gt;
tba.&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: tba.&lt;br /&gt;
&lt;br /&gt;
Elsewise, please make your own arrangements for accommodation.&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;
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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Template:VDD&amp;diff=62111</id>
		<title>Template:VDD</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Template:VDD&amp;diff=62111"/>
		<updated>2021-11-03T20:36:17Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox&lt;br /&gt;
|title=[[:Category:VDD|VideoLAN Dev Days]] conferences&lt;br /&gt;
|list1=[[VDD12]]&amp;amp;nbsp;&amp;amp;bull; [[VDD13]]&amp;amp;nbsp;&amp;amp;bull; [[VDD14]]&amp;amp;nbsp;&amp;amp;bull; [[VDD15]]&amp;amp;nbsp;&amp;amp;bull; [[VDD16]]&amp;amp;nbsp;&amp;amp;bull; [[VDD17]]&amp;amp;nbsp;&amp;amp;bull; [[VDD18]]&amp;amp;nbsp;&amp;amp;bull; [[VDD19]]&amp;amp;nbsp;&amp;amp;bull; [[VDD21]]&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Navigation templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Template:VDD&amp;diff=62110</id>
		<title>Template:VDD</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Template:VDD&amp;diff=62110"/>
		<updated>2021-11-03T20:36:03Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: Add 2021&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox&lt;br /&gt;
|title=[[:Category:VDD|VideoLAN Dev Days]] conferences&lt;br /&gt;
|list1=[[VDD12]]&amp;amp;nbsp;&amp;amp;bull; [[VDD13]]&amp;amp;nbsp;&amp;amp;bull; [[VDD14]]&amp;amp;nbsp;&amp;amp;bull; [[VDD15]]&amp;amp;nbsp;&amp;amp;bull; [[VDD16]]&amp;amp;nbsp;&amp;amp;bull; [[VDD17]]&amp;amp;nbsp;&amp;amp;bull; [[VDD18]]&amp;amp;nbsp;&amp;amp;bull; [[VDD19]]]&amp;amp;nbsp;&amp;amp;bull; [[VDD21]]&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Navigation templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=VDD21&amp;diff=62109</id>
		<title>VDD21</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=VDD21&amp;diff=62109"/>
		<updated>2021-11-03T20:33:33Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: Import 2019&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VDD}}&lt;br /&gt;
[[Image:Vdd2019.png|thumb|500px|]]&lt;br /&gt;
= Welcome to Video Dev Days 2019 =&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 its eleventh edition, people from the VideoLAN and open source multimedia communities will meet in &#039;&#039;&#039;Tokyo&#039;&#039;&#039; to 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;
== Who can come? ==&lt;br /&gt;
&lt;br /&gt;
Literally every one is invited to VDD, we just need registration for legal reason &#039;&#039;(to enter the building)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This is a technical conference, focused on low-level multimedia, like codecs and their implementations like &#039;&#039;&#039;x264&#039;&#039;&#039; or &#039;&#039;&#039;dav1d&#039;&#039;&#039;, frameworks like &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; or &#039;&#039;&#039;Gstreamer&#039;&#039;&#039; or playback libraries like &#039;&#039;&#039;libVLC&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Things like Javascript video frameworks or ad-injection frameworks would be considered out of scope.&lt;br /&gt;
&lt;br /&gt;
The price to enter is totally &#039;&#039;&#039;Free&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Sponsorship for Japan ==&lt;br /&gt;
&lt;br /&gt;
Since &#039;&#039;&#039;Japan&#039;&#039;&#039; is a bit further than the usual conferences, often in Europe, going to Japan is more expensive.&lt;br /&gt;
&lt;br /&gt;
If you want [[VideoLAN]] to sponsor your trip, you should read the [[VDD19/Sponsor_Policy|Sponsorship Policy]].&lt;br /&gt;
&lt;br /&gt;
== Traveling to Japan ==&lt;br /&gt;
&lt;br /&gt;
You should consider staying a bit longer to &#039;&#039;&#039;Japan&#039;&#039;&#039;, if you can afford a few extra days. Kyoto is amazing!&lt;br /&gt;
&lt;br /&gt;
You should take care of your passport and, if applicable, your visa very quickly!&lt;br /&gt;
&lt;br /&gt;
See the dedicated page: [[VDD19/Traveling_Advice|traveling advice for Japan]].&lt;br /&gt;
&lt;br /&gt;
You might want to consider to &#039;&#039;&#039;offset your carbon footprint&#039;&#039;&#039;.&amp;lt;br /&amp;gt;&lt;br /&gt;
For example: [https://co2.myclimate.org/en/flight_calculators/new MyClimate CO2 Calculator] or [https://www.carbonfootprint.com/carbonoffset.html CarboonFootPrint.com]&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
== Friday November 8th ==&lt;br /&gt;
&lt;br /&gt;
Community bonding day !&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PokeCone : Codec Wars ! ===&lt;br /&gt;
&lt;br /&gt;
Discover your team members in a discovery game around Tokyo.&amp;lt;br/&amp;gt;&lt;br /&gt;
Please meet in the sponsored hotel lobby at 9:30am&lt;br /&gt;
&lt;br /&gt;
[https://wiki.videolan.org/VDD19/#Accommodation_.2F_Hotel Hotel Villa Fontaine Hakozaki]&lt;br /&gt;
&lt;br /&gt;
=== Evening drinks ===&lt;br /&gt;
&lt;br /&gt;
19:?? Evening drinks at ??&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sponsored by Mozilla.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(NB: food is not provided there)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Saturday November 9th ==&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&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 || Opera 1 Auditorium &lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;08:30 - 09:00&#039;&#039;&#039; ||  style=&amp;quot;background: silver;&amp;quot; | Registration&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;09:00 - 09:10&#039;&#039;&#039; || &#039;&#039;&#039;Welcome words&#039;&#039;&#039; by Jean-Baptiste Kempf, VideoLAN&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;09:10 - 09:20&#039;&#039;&#039; || &#039;&#039;&#039;Internet Initative Japan&#039;&#039;&#039; by Marie Gunji, IIJ&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;09:20 - 09:50&#039;&#039;&#039; || &#039;&#039;&#039;Dav1d&#039;&#039;&#039; by Ronald S. Bultje, Two Orioles&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;09:50 - 10:20&#039;&#039;&#039; || &#039;&#039;&#039;Sash and low latency adaptive streaming&#039;&#039;&#039;, by Phil Cluff, Mux&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:20 - 10:50&#039;&#039;&#039; || &#039;&#039;&#039;x265 update&#039;&#039;&#039;, by Pradeep Ramachandran, MulticoreWare inc.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10:50 - 11:05&#039;&#039;&#039; || style=&amp;quot;background: silver;&amp;quot; | Break&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| &#039;&#039;&#039;11:05 - 11:35&#039;&#039;&#039; || &#039;&#039;&#039;rav1e update&#039;&#039;&#039; by Thomas Daede, Mozilla&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;11:35 - 12:05&#039;&#039;&#039; || &#039;&#039;&#039;VLC 4.0&#039;&#039;&#039; by Jean-Baptiste Kempf, VideoLAN&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;12:05 - 12:20&#039;&#039;&#039; || &#039;&#039;&#039;Tokyo Video Tech&#039;&#039;&#039;&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;Bentō lunch break&#039;&#039;&#039; sponsored by J-Stream&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;13:30 - 14:00&#039;&#039;&#039; || style=&amp;quot;background: silver;&amp;quot; |  &#039;&#039;&#039;Group photo&#039;&#039;&#039; (Goodies distribution will start before 13:30)&lt;br /&gt;
|-&lt;br /&gt;
|}&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 || Opera 1 Auditorium || Opera 2 Auditorium || Cantata Meeting Room&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;AV1 meetup&#039;&#039;&#039; || &#039;&#039;&#039;Hacking&#039;&#039;&#039; open sessions&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;16:00 - 18:00&#039;&#039;&#039; || &#039;&#039;&#039;VideoLAN meeting&#039;&#039;&#039; || &#039;&#039;&#039;Meetups&#039;&#039;&#039; || &#039;&#039;&#039;Hacking&#039;&#039;&#039; open sessions&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;19:30 - 21:30&#039;&#039;&#039; ||colspan=3|  &#039;&#039;&#039;Community Dinner&#039;&#039;&#039; sponsored by Mozilla&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== VideoLAN community dinner ===&lt;br /&gt;
&lt;br /&gt;
You &#039;&#039;&#039;really&#039;&#039;&#039; need to &#039;&#039;&#039;be on time&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
   Warayakiya Ginza&lt;br /&gt;
   [https://goo.gl/maps/Q8S6DV1u3FdkZUFg6 Ginza, 6 Chome−5−15] &lt;br /&gt;
   銀座能楽堂ビル 6F&lt;br /&gt;
&lt;br /&gt;
   わらやき屋 銀座店&lt;br /&gt;
   [https://goo.gl/maps/Q8S6DV1u3FdkZUFg6 銀座６丁目５−15]&lt;br /&gt;
   銀座能楽堂ビル 6F&lt;br /&gt;
&lt;br /&gt;
== Sunday November 10 ==&lt;br /&gt;
=== Schedule ===&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;
| &#039;&#039;&#039;09:30 - 13:00&#039;&#039;&#039; || &#039;&#039;&#039;Lightning talks&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Intel update&#039;&#039;&#039; from Max&lt;br /&gt;
* &#039;&#039;&#039;llvm-mingw&#039;&#039;&#039; by Martin Storsjo&lt;br /&gt;
* &#039;&#039;&#039;360 intra directional predictors&#039;&#039;&#039; by Luc Trudeau&lt;br /&gt;
* &#039;&#039;&#039;Vimeo elevator&#039;&#039;&#039; by Raphael Zummer&lt;br /&gt;
* &#039;&#039;&#039;GSoC experiences&#039;&#039;&#039; by Krishnan&lt;br /&gt;
* &#039;&#039;&#039;VLC Benchmark&#039;&#039;&#039; by Duncan&lt;br /&gt;
&#039;&#039;&#039;Break&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;A Japanese Way to Maintain Constant Quality&#039;&#039;&#039; by Yusuke Goto&lt;br /&gt;
* &#039;&#039;&#039;Patents&#039;&#039;&#039; by Vittorio&lt;br /&gt;
* &#039;&#039;&#039;TTML in mp4&#039;&#039;&#039; by JEEB&lt;br /&gt;
* &#039;&#039;&#039;BlitzLoop&#039;&#039;&#039; by marcan&lt;br /&gt;
* &#039;&#039;&#039;color: daala, dav1d and beyond&#039;&#039;&#039; by David Michael Barr&lt;br /&gt;
* &#039;&#039;&#039;Compiler-assisted security&#039;&#039;&#039; by Rémi D.-C.&lt;br /&gt;
* &#039;&#039;&#039;Rust with C&#039;&#039;&#039; by Luca&lt;br /&gt;
* &#039;&#039;&#039;Sub-frame decoding&#039;&#039;&#039; by Kieran&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;13:00 - 14:00&#039;&#039;&#039; || style=&amp;quot;background: silver; text-align: center;&amp;quot; |  &#039;&#039;&#039;Bentō lunch break&#039;&#039;&#039; sponsored by Abema TV&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Afternoon schedule ===&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 || Opera 1 Auditorium || Opera 2 Auditorium || Cantata Meeting Room&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;14:00 - 15:00&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; user meetup || Gitlab CI session &#039;&#039;(VLC, but not-only)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;15:00 - 16:00&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; dev meetup || VLC mobile ports meetup&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;16:00 - 18:20&#039;&#039;&#039; || &#039;&#039;&#039;Unconferences&#039;&#039;&#039; || &#039;&#039;&#039;FFmpeg&#039;&#039;&#039; dev meetup || VLC UI and media library&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;18:20 - 18:30&#039;&#039;&#039; || colspan=3 style=&amp;quot;background: silver;&amp;quot; | &#039;&#039;&#039;Closing remarks&#039;&#039;&#039;  by jb&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;18:30 - 21:30&#039;&#039;&#039; || colspan=3 style=&amp;quot;background: silver;&amp;quot; | &#039;&#039;&#039;Unofficial Dinner&#039;&#039;&#039; and Karaoke sessions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Unofficial Dinner ===&lt;br /&gt;
&lt;br /&gt;
It is literally next to the IIJ office.&lt;br /&gt;
&lt;br /&gt;
   Amusement Bar J-House&lt;br /&gt;
   [https://goo.gl/maps/hHFW8suntPcsS6o4A Chiyoda City, Fujimi, 2 Chome−3−14] &lt;br /&gt;
   CST ビル 5F&lt;br /&gt;
&lt;br /&gt;
   アミューズメントバー ジェイハウス&lt;br /&gt;
   [https://goo.gl/maps/hHFW8suntPcsS6o4A 東京都千代田区富士見2-3-14] &lt;br /&gt;
   CSTビル5F&lt;br /&gt;
&lt;br /&gt;
= Practical information =&lt;br /&gt;
&lt;br /&gt;
* The [https://www.japan.travel/en/plan/ official &#039;&#039;&#039;JNTO&#039;&#039;&#039; site] has a wealth of practical information targeting first-time visitors.&lt;br /&gt;
* The [[VDD19/Air_travel|air travel]] page provides more info for arrival and departure.&lt;br /&gt;
&lt;br /&gt;
== Location / main venue ==&lt;br /&gt;
The meeting is happening at the [https://goo.gl/maps/jkzwDAz99qDk84V29 IIJ HQ]:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!In English&lt;br /&gt;
!In Japanese&lt;br /&gt;
|-&lt;br /&gt;
|Internet Initiative Japan Inc.&amp;lt;br/&amp;gt;&lt;br /&gt;
Iidabashi Grand Bloom&amp;lt;br/&amp;gt;&lt;br /&gt;
2-10-2 Fujimi, Chiyoda-ku&amp;lt;br/&amp;gt;&lt;br /&gt;
Tokyo 102-0071&amp;lt;br/&amp;gt;&lt;br /&gt;
Japan&lt;br /&gt;
|株式会社インターネットイニシアティブ&amp;lt;br/&amp;gt;&lt;br /&gt;
〒102－0071 東京都千代田区富士見2-10-2&amp;lt;br/&amp;gt;&lt;br /&gt;
飯田橋グラン・ブルーム&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do not lose the issued access pass&#039;&#039;&#039;, you will need it to re-enter the building during the 2 days.&lt;br /&gt;
&lt;br /&gt;
The venue is within walking distance of Iidabashi station served by:&lt;br /&gt;
* JR East&lt;br /&gt;
** Chuo-Sobu (JB16) train line,&lt;br /&gt;
* Tokyo Metro&lt;br /&gt;
** Tozai (T06),&lt;br /&gt;
** Yurakucho (Y13) and&lt;br /&gt;
** Namboku (N10) lines,&lt;br /&gt;
* Toei&lt;br /&gt;
** Odeo (E06) metro line.&lt;br /&gt;
From the sponsored attendees&#039; hotel, take the &#039;&#039;Tozai&#039;&#039; line west-bound from &#039;&#039;Kayabachō&#039;&#039; station (T11).&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:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!In English&lt;br /&gt;
!In Japanese&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.hvf.jp/eng/location/hakozaki.php Hotel Villa Fontaine Tokyo Nihombashi Hakozaki]&amp;lt;br/&amp;gt;&lt;br /&gt;
[https://goo.gl/maps/4RZWFXwiBu76Xcwd6 20-10 Hakozaki-cho Nihombashi]&amp;lt;br/&amp;gt;&lt;br /&gt;
Chuo-ku Tokyo, 103-0015&lt;br /&gt;
|ホテルヴィラフォンテーヌ東京日本橋箱崎&amp;lt;br/&amp;gt;&lt;br /&gt;
〒103-0015 東京都中央区日本橋箱崎町２０−1０&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|+81-3-3667-3330&lt;br /&gt;
|}&lt;br /&gt;
Elsewise, please make your own arrangements for accommodation.&lt;br /&gt;
&lt;br /&gt;
Check-in is 3:00pm. Check-out is 11:00am.&lt;br /&gt;
Breakfast available from 7:00 to 9:30am.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beware&#039;&#039;&#039; that there are plenty of &#039;&#039;Villa Fontaine&#039;&#039; hotels in the area. &#039;&#039;&#039;Be sure to head to the Hakozaki one.&#039;&#039;&#039;&lt;br /&gt;
=== Public transit ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Origin&lt;br /&gt;
!Recommended route&lt;br /&gt;
|-&lt;br /&gt;
|Conference venue&lt;br /&gt;
|Tokyo Metro &#039;&#039;Tozai&#039;&#039; line east-bound to &#039;&#039;Kayabachō&#039;&#039; station (T11).&lt;br /&gt;
|-&lt;br /&gt;
|Sengakuji station&amp;lt;br/&amp;gt;Haneda airport via the [https://www.haneda-tokyo-access.com/en/ Keikyu railway]&lt;br /&gt;
|Toei &#039;&#039;Asakusa&#039;&#039; metro line north-bound to &#039;&#039;Ningyōchō&#039;&#039; station (A14)&lt;br /&gt;
|-&lt;br /&gt;
|Ueno station&amp;lt;br/&amp;gt;Narita airport via the [http://www.keisei.co.jp/keisei/tetudou/skyliner/us/index.php Keisei electric railway]&lt;br /&gt;
|Tokyo Metro &#039;&#039;Hibiya&#039;&#039; line south-bound to &#039;&#039;Ningyōchō&#039;&#039; station (H13).&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.tcat-hakozaki.co.jp/en/ T-CAT] terminal&amp;lt;br/&amp;gt;Haneda airport via T-CAT&amp;lt;br/&amp;gt;Narita airport via T-CAT&lt;br /&gt;
|Short walk.&lt;br /&gt;
|-&lt;br /&gt;
|Tokyo station&amp;lt;br/&amp;gt;Yaesu [http://www.keiseibus.co.jp/inbound/tokyoshuttle/en/ Keisei bus] stop&amp;lt;br/&amp;gt;Narita via Keisei bus&lt;br /&gt;
|&#039;&#039;&#039;1,7 km&#039;&#039;&#039; walk from the North exit.&lt;br /&gt;
|}&lt;br /&gt;
In addition to Kayabachō and Ningyōchō, the Suitengu-mae station (Z10) on the Tokyo metro Hanzōmon line is also located close-by.&lt;br /&gt;
&lt;br /&gt;
== Transportation ==&lt;br /&gt;
&lt;br /&gt;
* Get a Japanese electronic [[#Electronic_payments|payment card]] to travel easily on the public transports.&lt;br /&gt;
* Check the dedicated page for [[VDD19/Air travel#Airport_transfer|airport transfers]].&lt;br /&gt;
* For routing, you can use the following services:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Vendor&lt;br /&gt;
!Website&lt;br /&gt;
!Google Play&lt;br /&gt;
!Apple App Store&lt;br /&gt;
|-&lt;br /&gt;
|Hitachi Hyperdia&lt;br /&gt;
|[https://www.hyperdia.com Hyperdia]&lt;br /&gt;
|[https://play.google.com/store/apps/details?id=com.hyperdia.android.activity here]&lt;br /&gt;
|[https://apps.apple.com/fr/app/hyperdia-by-voice/id379001449 here]&lt;br /&gt;
|-&lt;br /&gt;
|Japan National Tourism Organization&lt;br /&gt;
| -&lt;br /&gt;
|[https://play.google.com/store/apps/details?id=jp.go.jnto.jota here]&lt;br /&gt;
|[https://apps.apple.com/app/apple-store/id1230367186?mt=8 here]&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: VideoLAN does not refund taxi, car rental and public transport.&lt;br /&gt;
&lt;br /&gt;
=== Rail pass ===&lt;br /&gt;
If you have a voucher for a rail pass, you should save it for before or after the conferencing days. JR passes are of limited within central Tokyo. They are valid for the &#039;&#039;Yamanote&#039;&#039; loop and the &#039;&#039;Chuo-Sobu&#039;&#039; east-west transverse train lines, as well as JR-operated buses, but not on the metro networks.&lt;br /&gt;
&lt;br /&gt;
== Means of payment ==&lt;br /&gt;
&lt;br /&gt;
VISA and MasterCard cards are &#039;&#039;&#039;not&#039;&#039;&#039; universally accepted in Japan.&lt;br /&gt;
&lt;br /&gt;
=== Cash ===&lt;br /&gt;
You will need to withdraw cash from an &#039;&#039;international&#039;&#039; ATM (accepting VISA, MasterCard, AmEx, Discovery and UnionPay). You can find those:&lt;br /&gt;
* at arrivals in the airport terminal,&lt;br /&gt;
* at &#039;&#039;&#039;[https://www.sevenbank.co.jp/intlcard/index2.html 7-Eleven]&#039;&#039;&#039; convenience stores,&lt;br /&gt;
* at &#039;&#039;&#039;[https://www.family.co.jp/for_tourist/en.html Family Mart]&#039;&#039;&#039; convenience stores,&lt;br /&gt;
* and during office hours in Japanese Post offices.&lt;br /&gt;
Do not bother with the local banks ATMs, most of which do not accept overseas cards.&lt;br /&gt;
To be on the safe side, you could exchange a few tens of thousands of yens in advance. Compare prices and avoid the extortionate bureaux de change at airports!&lt;br /&gt;
&lt;br /&gt;
=== Electronic payments ===&lt;br /&gt;
&lt;br /&gt;
For small day-to-day purchases, you should procure a FeliCa electronic payment card, a.k.a. an &#039;&#039;IC&#039;&#039; card. It can be used to enter and exit public transports (train, metro, bus, etc), to check out at convenience stores and many shops. You can load the card with Japanese bank notes at dedicated machines. There are two options in Tokyo area:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Vendor&lt;br /&gt;
!Regular card&lt;br /&gt;
!Tourist card&lt;br /&gt;
!Tourist point of sale&lt;br /&gt;
|-&lt;br /&gt;
!JR East&lt;br /&gt;
|[https://www.jreast.co.jp/e/pass/suica.html Suica]&amp;lt;br/&amp;gt;¥500 deposit&lt;br /&gt;
|[https://www.jreast.co.jp/e/welcomesuica/welcomesuica.html Welcome Suica]&amp;lt;br/&amp;gt;free??&lt;br /&gt;
|JR East Travel Service Center&lt;br /&gt;
|-&lt;br /&gt;
!Tokyo Metro&lt;br /&gt;
|[https://www.pasmo.co.jp/visitors/en/normalpasmo/ Pasmo]&amp;lt;br/&amp;gt;¥500 deposit&lt;br /&gt;
|[https://www.pasmo.co.jp/visitors/en/about/ Pasmo passport]&amp;lt;br/&amp;gt;¥500&lt;br /&gt;
|&lt;br /&gt;
*Keisei at Narita airport&lt;br /&gt;
*Keikyu at Haneda airport&lt;br /&gt;
|}&lt;br /&gt;
Tourist cards with their cutesy design are meant to keep as memento and provide third-party discounts. But beware that they expire after 28 days (including any unused credit).&lt;br /&gt;
&lt;br /&gt;
== Electricity ==&lt;br /&gt;
Japan has the lowest household voltage in the world, so &#039;&#039;&#039;check the specifications&#039;&#039;&#039; on your power adapters.&lt;br /&gt;
Outlets are not compatible with European or Commonwealth plugs. North American &#039;&#039;grounded&#039;&#039; plugs (with 3 pins) are also troublesome.&lt;br /&gt;
Most attendees will thus need passive adapters. They are easier to find at home, so &#039;&#039;&#039;BUY BEFORE DEPARTURE&#039;&#039;&#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Voltage&lt;br /&gt;
|100 V&lt;br /&gt;
|-&lt;br /&gt;
!Frequency&lt;br /&gt;
|50 Hz (60 Hz in Kyoto/Osaka)&lt;br /&gt;
|-&lt;br /&gt;
!Socket&lt;br /&gt;
|Type A with only 2 pins (i.e. ungrounded)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Connectivity ==&lt;br /&gt;
&lt;br /&gt;
The telephone prefix for Japan is &#039;&#039;&#039;+81&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Mobile data ===&lt;br /&gt;
You can buy, or better yet pre-order, a prepaid data SIM card at international arrivals at the airport.&lt;br /&gt;
Don&#039;t postpone, as it might be difficult to find elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Wireless LAN ===&lt;br /&gt;
Free Wi-Fi access points are common, but they may need registration, possibly in Japanese only.&lt;br /&gt;
There is a map of known Wi-Fi access points in the &#039;&#039;&#039;JNTO&#039;&#039;&#039; app (see [[#Transportation]]).&lt;br /&gt;
&lt;br /&gt;
=== Group Chat ===&lt;br /&gt;
Participants can share information and discuss using the dedicated [https://t.me/joinchat/GIwXP1WmM84pbxCXStaUew VDD 2019 Telegram group].&lt;br /&gt;
&lt;br /&gt;
== Emergency ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;119&#039;&#039;&#039; is the fire and ambulance emergency number in Japan. &#039;&#039;&#039;110&#039;&#039;&#039; is the local police number.&lt;br /&gt;
&lt;br /&gt;
Please carry your travel insurance card or certificate on you at all times.&lt;br /&gt;
If you do not have a travel insurance yet, buy a fixed-term one before you depart. EU social security cards are not &#039;&#039;&#039;not&#039;&#039;&#039; valid in Japan.&lt;br /&gt;
Advise your relatives, and if applicable, your government:&lt;br /&gt;
* [https://pastel.diplomatie.gouv.fr/fildariane/dyn/public/login.html Registration for French citizens].&lt;br /&gt;
&lt;br /&gt;
Personal safety risks in Japan primarily stem from natural disasters:&lt;br /&gt;
* [https://www.jnto.go.jp/safety-tips/eng/index.html &#039;&#039;&#039;JNTO&#039;&#039;&#039; safety tips]&lt;br /&gt;
** on [https://play.google.com/store/apps/details?id=jp.co.rcsc.safetyTips.android Google Play Store]&lt;br /&gt;
** or [https://apps.apple.com/us/app/safety-tips/id858357174 Apple App Store].&lt;br /&gt;
* In case of earthquake:&lt;br /&gt;
** Seek cover (e.g. under a table) if indoors,&lt;br /&gt;
** Get away from structures (especially glass windows) if outdoors.&lt;br /&gt;
** After the quake, get away from the shore onto high ground away from tidal waves.&lt;br /&gt;
* In case of typhoon, follow instructions from authorities. Typhoon are predicted several days ahead.&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;
* Hugo Beauzée-Luyssen.&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>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2021&amp;diff=62072</id>
		<title>SoC 2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2021&amp;diff=62072"/>
		<updated>2021-02-14T14:01:06Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2021}}&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 2021] 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 &#039;&#039;&#039;university students&#039;&#039;&#039; to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]], [[SoC_2017|2017]], [[SoC_2018|2018]], [[SoC_2019|2019]] and [[SoC_2020|2020]].&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.&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 and Firefox.&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 it&#039;s 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;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
We have 3 major communication channels:&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;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Qt interface work ==&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;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the WinRT/UWP interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The WinRT interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the preferred way of improving the current UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Qt/C++&#039;&#039;&#039; knowledge, 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;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;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/tvTV 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 (aka &amp;quot;Marzipan&amp;quot;) 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;
&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;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;
== GPU shader filters ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines. It is now possible to do all kinds of video processing that was done in the CPU directly in the GPU.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to port some of the existing CPU filters to the GPU using shaders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The first task will be to identify all the video filters in VLC and identify the ones that could be done as shaders. Then implement them. Either in OpenGL shaders, Direct3D11 shaders, both and maybe Vulkan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;OpenGL&#039;&#039;&#039; or &#039;&#039;&#039;Direct3D11&#039;&#039;&#039; shaders knowledge as well as knowledge on video filters in general.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme, unidan&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS new UI ==&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. Like for example the network navigation section.&lt;br /&gt;
&lt;br /&gt;
Further more tests should be written for these components to ensure that we don&#039;t break features on old or new devices.&lt;br /&gt;
&lt;br /&gt;
The project for this summer is to write these components in Swift with updated UI and make sure the app becomes and stays stable.&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;
*Writing tests for these components to ensure that functionality works on all supported devices&lt;br /&gt;
*Rewriting the first start screens &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: Soomin Lee, 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;
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;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 add 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;
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;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop a UPnP server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to add support for VLC to act as a UPnP server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the UpnP protocol&lt;br /&gt;
* Code a UpNP server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&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 Upnp concepts&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;
* 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;
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;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, Soomin Lee&lt;br /&gt;
&lt;br /&gt;
== Other ideas for VLC &amp;amp; libVLC ==&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
We can help work with you to make those more detailed.&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;
== Open Source Fuzzing platform ==&lt;br /&gt;
&lt;br /&gt;
The idea of this project is to develop a new web platform to support fuzzing or code analysis, like oss_fuzz, but open source.&amp;lt;br /&amp;gt;&lt;br /&gt;
That would allow to see the defects, to be able to act on them.&lt;br /&gt;
&lt;br /&gt;
It should be adaptable for clang-analyser or other similar tools.&lt;br /&gt;
&lt;br /&gt;
It can be based on gitlab, if needed, but should be developed in Go.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Go&#039;&#039;&#039; knowledge and ideally knowledge of &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Hugo Beauzée-Luyssen&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
= 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;
&lt;br /&gt;
== Workflow audio filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of audio filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add audio filters on the MLT framework backend using the [https://en.wikipedia.org/wiki/LADSPA LADSPA]/[http://lv2plug.in/ LV2] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Prepare visualizations, and notably for soundwave filters,&lt;br /&gt;
# Integrate those inside the timeline UI,&lt;br /&gt;
# Optimize.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and enough understanding of audio.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Workflow video filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of video filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add video filters on the MLT framework backend using the [https://git.sesse.net/?p=movit;a=summary movit] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Add transitions between clips&lt;br /&gt;
# Code the interface to manage those transitions,&lt;br /&gt;
# Optimize the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve multiplatform support ==&lt;br /&gt;
VLMC is aiming at being fully cross platform, but drifted a bit from that goal. While most VLMC&#039;s code is cross platform, and can be easily built targeting platforms, some dependencies might prove more difficult to build or compose with VLMC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix MLT cross compilation for Windows (This will most likely require patching directly inside MLT, all contributions must be sent upstream). &lt;br /&gt;
# Fix medialibrary code &amp;amp; build process on macOS (and potentially iOS). The medialibrary misses some platform specific code to be able to list all connected drives (hard drives &amp;amp; USB removable storage, mostly) along with filesystem browsing&lt;br /&gt;
# Update the documentation along the way&lt;br /&gt;
# Create jenkins build configuration to have nightly builds on jenkins.videolan.org &amp;amp; nightlies.videolan.org for all supported platforms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires buildsystems/toolchains knowledge, basic system programming on macOS &amp;amp; Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remote UI ==&lt;br /&gt;
&lt;br /&gt;
We would like to have a way to use VLMC from a web browser. You can easily imagine having a nice, shiny &amp;amp; simple UI for minimal movie edition, which would go hand in hand with the cloud storage feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
This task aims toward the uncoupling of the rendering backend &amp;amp; UI, as the renderer will run server side, while the UI runs on the client side.&lt;br /&gt;
&lt;br /&gt;
The idea is to be able to have a UI interacting with the renderer without having to be in the same process, or even machine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: jb, chouquette, fkuehne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d ARM NEON optimization ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV1 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Profiling to identify hotspots of the new libdav1d video decoder on arm64 across common test files&lt;br /&gt;
* Analysis of potential benefits of NEON SIMD for these hotspots&lt;br /&gt;
* Write arm64 NEON optimization using directly written assembly code&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 SSE2/AVX 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;
* Understanding the SSSE3 code of dav1d&lt;br /&gt;
* Port it to SSE2&lt;br /&gt;
* Write AVX-512 optimizations&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 Threading improvements ==&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 aims to:&lt;br /&gt;
- improve the threading of AV1, notably to separate the threads for the filters&lt;br /&gt;
- provide an external threadpool for multiple players&lt;br /&gt;
- provide a good auto-setup of threads counts, after benchmarking.&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;threading&#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 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;
== rav1e, the AV1 encoder in Rust ==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/xiph/rav1e rav1e] project aims to create a new AV1 encoder implementation in &lt;br /&gt;
Rust.&lt;br /&gt;
&lt;br /&gt;
To support this we need better AV1 analysis tools that give detailed information about AV1 streams including:&lt;br /&gt;
&lt;br /&gt;
* bit rate across the frame&lt;br /&gt;
* frame allocation within a scene&lt;br /&gt;
* display of frame data (block partitioning, mode decisions, motion vectors, etc)&lt;br /&gt;
* objective quality over time&lt;br /&gt;
* average rate (for streaming)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Rust&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2021&amp;diff=62071</id>
		<title>SoC 2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2021&amp;diff=62071"/>
		<updated>2021-02-14T14:00:20Z</updated>

		<summary type="html">&lt;p&gt;Fkuehne: Initialize with last year&amp;#039;s content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Google Summer of Code 2020}}&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 2020] 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 &#039;&#039;&#039;university students&#039;&#039;&#039; to have a paid &#039;&#039;&#039;internship&#039;&#039;&#039; by &#039;&#039;&#039;Google&#039;&#039;&#039; to work on open source projects and become top developers!&lt;br /&gt;
&lt;br /&gt;
[[VideoLAN]] was a &#039;&#039;Google Summer of Code&#039;&#039; mentoring organization in [[SoC 2007|2007]], [[SoC 2008|2008]], [[SoC 2009|2009]], [[SoC 2010|2010]], [[SoC 2011|2011]], [[SoC 2013|2013]], [[SoC 2016|2016]], [[SoC_2017|2017]], [[SoC_2018|2018]] and [[SoC_2019|2019]].&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.&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 and Firefox.&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 it&#039;s 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;
=== Submit your idea ===&lt;br /&gt;
You need to submit your idea on the &#039;&#039;Google Summer of Code&#039;&#039; platform.&lt;br /&gt;
&lt;br /&gt;
You should do so, very quickly, even before having finished compilation and the next steps, so that we can give you early feedback.&lt;br /&gt;
&lt;br /&gt;
=== Compile libVLC or VLMC ===&lt;br /&gt;
This may sound trivial, but it&#039;s harder than many expect. See https://wiki.videolan.org/Category:Building/ for more informations.&lt;br /&gt;
&lt;br /&gt;
You should come on [[IRC]] to get help to compile.&lt;br /&gt;
&lt;br /&gt;
=== Provide a small patch ===&lt;br /&gt;
To demonstrate your skills, share a small patch with us. This will let you become familiar with [[Git]], in case you don&#039;t know it already and our process on [[Sending Patches VLC|merging patches]].&lt;br /&gt;
&lt;br /&gt;
=== Let&#039;s get in touch ===&lt;br /&gt;
&lt;br /&gt;
If you have a doubt, are not sure about anything or want clarification, please get in touch with us.&lt;br /&gt;
&lt;br /&gt;
We have 3 major communication channels:&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;
== Advanced Audio Filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
We are looking for a skilled audiophile that knows a lot about audio theory and practice to work on new audio filters for VLC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* SRS WoW like or other 3D effects;&lt;br /&gt;
* channels mixing, notably upmixing, like Prologic-II;&lt;br /&gt;
* tracks mixing, and transitions;&lt;br /&gt;
* scriptable new audio filters in lua and enable users to create whatever audio filtering function they want in a Lua script;&lt;br /&gt;
* LADSPA or other libraries integration. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project needs some good audio knowledge and good C experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Qualification task:&#039;&#039;&#039;&lt;br /&gt;
Port any audio filter from MPlayer&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: unidan &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC Qt interface work ==&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;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The idea is to get closer to what the WinRT/UWP interface looks like &#039;&#039;(search on google image to get an idea)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The WinRT interface is simpler, more user friendly, and has a better &amp;quot;media center&amp;quot; feel into it.&lt;br /&gt;
&lt;br /&gt;
It would require integration with the media library and with the current interface.&lt;br /&gt;
&lt;br /&gt;
Qml is the preferred way of improving the current UI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Qt/C++&#039;&#039;&#039; knowledge, 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;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;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/tvTV 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 (aka &amp;quot;Marzipan&amp;quot;) 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;
&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;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;
== GPU shader filters ==&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLC is using OpenGL and Direct3D11 on modern machines. It is now possible to do all kinds of video processing that was done in the CPU directly in the GPU.&lt;br /&gt;
&lt;br /&gt;
This project for the summer is to port some of the existing CPU filters to the GPU using shaders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope of the tasks to do&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
The first task will be to identify all the video filters in VLC and identify the ones that could be done as shaders. Then implement them. Either in OpenGL shaders, Direct3D11 shaders, both and maybe Vulkan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;OpenGL&#039;&#039;&#039; or &#039;&#039;&#039;Direct3D11&#039;&#039;&#039; shaders knowledge as well as knowledge on video filters in general.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Steve Lhomme, unidan&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VLC iOS new UI ==&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. Like for example the network navigation section.&lt;br /&gt;
&lt;br /&gt;
Further more tests should be written for these components to ensure that we don&#039;t break features on old or new devices.&lt;br /&gt;
&lt;br /&gt;
The project for this summer is to write these components in Swift with updated UI and make sure the app becomes and stays stable.&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;
*Writing tests for these components to ensure that functionality works on all supported devices&lt;br /&gt;
*Rewriting the first start screens &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: Soomin Lee, 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;
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;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 add 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;
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;
&#039;&#039;Proposed mentor: Thomas Guillem&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop a UPnP server inside VLC ==&lt;br /&gt;
&lt;br /&gt;
The idea is to add support for VLC to act as a UPnP server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
* Study the UpnP protocol&lt;br /&gt;
* Code a UpNP server as a control module that will connect to the [https://code.videolan.org/videolan/medialibrary medialibrary]&lt;br /&gt;
&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 Upnp concepts&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;
* 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;
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;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, Soomin Lee&lt;br /&gt;
&lt;br /&gt;
== Other ideas for VLC &amp;amp; libVLC ==&lt;br /&gt;
&lt;br /&gt;
Those ideas are not detailed, but they are ideas that we could help to spring new ideas.&lt;br /&gt;
We can help work with you to make those more detailed.&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;
== Open Source Fuzzing platform ==&lt;br /&gt;
&lt;br /&gt;
The idea of this project is to develop a new web platform to support fuzzing or code analysis, like oss_fuzz, but open source.&amp;lt;br /&amp;gt;&lt;br /&gt;
That would allow to see the defects, to be able to act on them.&lt;br /&gt;
&lt;br /&gt;
It should be adaptable for clang-analyser or other similar tools.&lt;br /&gt;
&lt;br /&gt;
It can be based on gitlab, if needed, but should be developed in Go.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: &lt;br /&gt;
This project requires &#039;&#039;&#039;Go&#039;&#039;&#039; knowledge and ideally knowledge of &#039;&#039;&#039;JS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor: Hugo Beauzée-Luyssen&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
= 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;
&lt;br /&gt;
== Workflow audio filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of audio filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add audio filters on the MLT framework backend using the [https://en.wikipedia.org/wiki/LADSPA LADSPA]/[http://lv2plug.in/ LV2] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Prepare visualizations, and notably for soundwave filters,&lt;br /&gt;
# Integrate those inside the timeline UI,&lt;br /&gt;
# Optimize.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++/Qt/qml&#039;&#039;&#039; knowledge, and enough understanding of audio.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: J-B&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Workflow video filters ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Project Description&#039;&#039;&#039;:&lt;br /&gt;
VLMC is now working on the desktop, but we need to have a good setup of video filters to make it usable for most people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Understand the VLMC and MLT codebase interactions,&lt;br /&gt;
# Add video filters on the MLT framework backend using the [https://git.sesse.net/?p=movit;a=summary movit] library or a similar open source library,&lt;br /&gt;
# Code the interface corresponding to those filters, and their options,&lt;br /&gt;
# Add transitions between clips&lt;br /&gt;
# Code the interface to manage those transitions,&lt;br /&gt;
# Optimize the code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C/C++&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Felix&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Improve multiplatform support ==&lt;br /&gt;
VLMC is aiming at being fully cross platform, but drifted a bit from that goal. While most VLMC&#039;s code is cross platform, and can be easily built targeting platforms, some dependencies might prove more difficult to build or compose with VLMC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
# Fix MLT cross compilation for Windows (This will most likely require patching directly inside MLT, all contributions must be sent upstream). &lt;br /&gt;
# Fix medialibrary code &amp;amp; build process on macOS (and potentially iOS). The medialibrary misses some platform specific code to be able to list all connected drives (hard drives &amp;amp; USB removable storage, mostly) along with filesystem browsing&lt;br /&gt;
# Update the documentation along the way&lt;br /&gt;
# Create jenkins build configuration to have nightly builds on jenkins.videolan.org &amp;amp; nightlies.videolan.org for all supported platforms&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires buildsystems/toolchains knowledge, basic system programming on macOS &amp;amp; Windows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentors: Hugo&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remote UI ==&lt;br /&gt;
&lt;br /&gt;
We would like to have a way to use VLMC from a web browser. You can easily imagine having a nice, shiny &amp;amp; simple UI for minimal movie edition, which would go hand in hand with the cloud storage feature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tasks to do&#039;&#039;&#039;:&lt;br /&gt;
This task aims toward the uncoupling of the rendering backend &amp;amp; UI, as the renderer will run server side, while the UI runs on the client side.&lt;br /&gt;
&lt;br /&gt;
The idea is to be able to have a UI interacting with the renderer without having to be in the same process, or even machine.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;C++&#039;&#039;&#039; and &#039;&#039;&#039;JS&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Proposed mentor&#039;&#039;: jb, chouquette, fkuehne&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ideas for dav1d =&lt;br /&gt;
&lt;br /&gt;
== dav1d ARM NEON optimization ==&lt;br /&gt;
&lt;br /&gt;
Improving the performance of the AV1 decoder is very important for VLC and the whole ecosystem.&lt;br /&gt;
&lt;br /&gt;
It requires to:&lt;br /&gt;
* Profiling to identify hotspots of the new libdav1d video decoder on arm64 across common test files&lt;br /&gt;
* Analysis of potential benefits of NEON SIMD for these hotspots&lt;br /&gt;
* Write arm64 NEON optimization using directly written assembly code&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 SSE2/AVX 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;
* Understanding the SSSE3 code of dav1d&lt;br /&gt;
* Port it to SSE2&lt;br /&gt;
* Write AVX-512 optimizations&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 Threading improvements ==&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 aims to:&lt;br /&gt;
- improve the threading of AV1, notably to separate the threads for the filters&lt;br /&gt;
- provide an external threadpool for multiple players&lt;br /&gt;
- provide a good auto-setup of threads counts, after benchmarking.&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;threading&#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 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;
== rav1e, the AV1 encoder in Rust ==&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/xiph/rav1e rav1e] project aims to create a new AV1 encoder implementation in &lt;br /&gt;
Rust.&lt;br /&gt;
&lt;br /&gt;
To support this we need better AV1 analysis tools that give detailed information about AV1 streams including:&lt;br /&gt;
&lt;br /&gt;
* bit rate across the frame&lt;br /&gt;
* frame allocation within a scene&lt;br /&gt;
* display of frame data (block partitioning, mode decisions, motion vectors, etc)&lt;br /&gt;
* objective quality over time&lt;br /&gt;
* average rate (for streaming)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Requirements&#039;&#039;&#039;: This project requires &#039;&#039;&#039;Rust&#039;&#039;&#039; knowledge.&lt;br /&gt;
&lt;br /&gt;
Contact &#039;unlord&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
[[Category:SoC]]&lt;/div&gt;</summary>
		<author><name>Fkuehne</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=SoC_2019&amp;diff=57613</id>
		<title>SoC 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=SoC_2019&amp;diff=57613"/>
		<updated>2019-02-05T15:40:05Z</updated>

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