VLC Dev Projects

From VideoLAN Wiki
Revision as of 19:48, 10 May 2015 by Courmisch (talk | contribs)
Jump to navigation Jump to search

This is a list of small independent improvements to VLC media player for which we are looking for interested developers, because we simply don't have enough time.

These do not require advanced knowledge of VLC internals but they can still vastly improve many parts of VLC


For each project, we list a contact person, who knows the subject best and who will be able to assist you if you are interested in working on these. We generally are very often present on irc.videolan.org, chan #videolan, so please don't hesitate to drop by or to send a mail if you are interested in a given problem (our mail adresses are generally <nick>@videolan.org).

Be careful, some projects may be unrelated, or deprecated, because of fast evolving software! Ask before you attempt!


Short projects

These projects are junior projects, the most easy ones to do, that require minimum knowledge of VLC.


Help Fixing bugs

Go to our bugtracker on http://trac.videolan.org/vlc/ and close a bug !

We also have a number of "easy" bugs. You can check them out here

We recommend:

Code Janitorial

It basically means to clean the code, it is helpful for all programmers. It helps to find bugs, and is a good way to learn about VLC's internals.

It is covered in the Code Janitorial section.


Video Filters

You can do video filters for VLC media player.

A cool idea for a video filter would be "old movie" mode.

You can start the code here and you should read the hacker guide.


Audio Filters

You can do audio filters for VLC media player.

A good idea would be to integrate freeverb3 or LADSPA.

You can start the code here.


Lua Playlist parsers for websites

VLC already supports youtube, dailymotion or other websites using the .lua scripts! Add new sites and new URLs support!

Supporting quvi scripts would be nice.

Windows Media Center (WMC) IR Remote Control

Basic Controls work (e.g. Volume, Mute etc), but I would like to get Play/Pause/Stop/DVD Menu etc to work!

Contact: some1


Add support for the Podcast service discovery module to the Mac UI

The code is mostly there for the Qt interface, but needs to be ported and implemented nicely (!) to the Mac interface.

Contact: feepk

Normal projects

DirectWrite rendering

DirectWrite is another API introduced in Windows 7, used to write nicely shaped characters to screen. Someone should look into it, to see what could be done (like subtitles display).

Contact: Geal


Mozila and ActiveX Javascript API

Add a callback to signal playlist state changes such as item started, item ended, next item started, last item ended, and so on.

Contact: jpsaman


Improved Podcast support

Our current podcast support is very weak. We can read them, but that's all. We need a real infrastructure to handle them correctly. This will require some changes to the playlist code, so you will need to work closely with existing developers.


Improved ASX support

ASX is a playlist format used by Microsoft stuff. We can read it but we could do much better. More information is available at https://trac.videolan.org/vlc/ticket/20


Hint MP4/MOV Files

Add video and audio hint tracks as the output file is muxed. Resulting files can be streamed from RTSP server with trickplay, like DSS/QTSS. Probably requires use of GPAC libraries.


LastFM radios

http://gabistapler.de/blog/index.php?/archives/268-Play-last.fm-streams-without-the-player.html

Contact: funman


ASM optims

If you know how to code in x86 ASM, we have a few tasks for you

Contact jb


SVCD/VCD improvements

Menus and such needs to be improvements and fixed.

Contact jb


Multi-Angle DVD support

We need multi-angle DVD support.

Contact jb


RTMP

Integrate librtmp in a correct way


WiiMote control

Use the code from GSoC_2009 for this

Contact jb


Quicktime VR

Use the code from GSoC_2009 and integrate it to the mainline

Contact jb


Long projects

DVD Audio

If you are a coder and fan of DVD-Audio, you can help to improve the support of DVD-Audio playback. Especially decryption.

Contact jb


HD DVD support

Very difficult project for someone having the right hardware Proposed mentor: jb


Performant VLC streaming server

There are many bottlenecks currently limiting the performance and scalability of VLC as a streaming server:

  • The I/O blocks are linear, which implies lots of avoidable memory copying and dynamic memory allocations (particularly in the streaming output).
  • mdate() (the timestamping function) is invoked in too many places to count them; but it is not a cheap operation on modern systems and should be avoided on the fast path. Ideally, a single thread would only need to call mdate() at most once per wake-up. In some case, mdate() is only used for debugging purpose which is really inefficient.
  • The HTTP/RTSP core is single-threaded. This prevents scaling to SMP systems (which are the norm on server-side nowadays) properly. This also implies not very scalable I/O event polling. Finally, this gets problematic if one HTTP/RTSP client triggers a computationally intensive operation (such as establishing a TLS context if HTTP/SSL is used).
  • There are many dynamic memory allocations that could be avoided. Video filters and codecs are very careful about this, but the stream output plugins are not. In many case, a stack-based buffer can be used (stack buffer, has constant time fast lock-less allocation, and needs not be freed explicitly) instead.
  • The messaging subsystems might be adding more locking (needs checking); this should be avoided particularly if the message is anyway ignord (e.g. debug message in non-debug mode).

Other improvements that would be particularly beneficial on the server side:

  • Memory allocation failure are not always duly handled. In some cases, that could potentially be leveraged by a client to crash a VLC server by causing a very large allocation attempt.
  • Rewrite and revive the root wrapper to allow VLC to bind to the RTSP (554) port while not retaining root privileges.

Contact: Courmisch


AirTune streaming

We need to be able to stream everything to your iPhone.


AirPlay Support

VLC should be able to push audio and video to AirPlay devices, and receive video from iPhones.


BD-J / BD-Live

This is a project to go on the work of last year on Blu-Ray Menus

This project requires Java knowledge

Contact jb


VideoLAN Subtitle Editor

The "VideoLAN Subtitle Editor" is runs on any OS that is supported by Libvlc.

Features:

* Qt4 Interface
* Media playback based on Libvlc
* Multiple OS support (Linux, MacOS X, Windows, *BSD, ...)
* Internationalisation of subtitles
* Exporting to many subtitle formats (.srt, .ssa/.ass, .sub, .srt, .ssf, ...).

Examples of subtile editors:

* Subtitle Editor http://home.gna.org/subtitleeditor/
* Open Subtitle Editor http://opensubtitleed.sourceforge.net/
* Subtile formats: http://en.wikipedia.org/wiki/Subtitles

Contact: jpsaman

VLC Security / IP Camera Solution

LibVLC has the great potential to become a very affordable, universal IP/security camera solution.

Settings should be user configurable and/or scriptable as required.

Sample use cases:

  • Upon motion, record for 60 seconds.
  • Record everything... but only temporary... if motion is detected: transfer 1 minute before until 1 minute after no motion is detected anymore to a file

This kind of thing is often requested on IRC and such.

Contact: edwardw

Finished projects

Audioscrobbler

An Audioscrobbler VLC Plug-in for the social music network Last.Fm

Plugin is finished, now part of vlc 0.9.0 (development version). Done by funman

DVB support for Windows / BDA Drivers

DVB is the norm for :

  • Digital Terrestrial TV (aka DVB-T)
  • Digital Cable TV (aka DVB-C)
  • Digital Satellite TV (aka DVB-S)

Several DVB input cards exist. We support these on Linux, but not on Windows. For Windows, we need to support so-called BDA drivers.

The problem is that we don't have both the time and the required hardware on Windows comps.

This project is probably not terribly complex, but you need the hardware.

Plugin is done and available in the current Git version. Code by kenS

DBus Integration

DBus is a communication mechanism for Linux (mainly).

We would like VLC to be able to use it so that other programs can interact with vlc (start/stop, know what is being played, ...)

Work is well advanced, see DBus, by funman and Mr_Mirsal

Contact: Xtophe, funman

V4L2 support

VLC currently has a pvr module and a v4l (video for linux) module. However

  • some cards are only supported in the new v4l2 API
  • The linux kernel will soon drop v4l support

So if someone could update VLC's current modules to work with V4L2 and the new ivtv api, this would be a welcome addition. This is not a very difficult project, but you will need to have the hardware to test against. The code has been began, so it should not be too difficult.

Plugin is done and available in the current Git version. Code by Richard Hosking, dionoea and Dennis Lou.

RTCP support

Our RTSP implementation (for broadcasting and video on demand) does not support the RTCP protocol. This is a must to have a real support for RTSP. Some work has already been started, but there is still much to do.

Contact: JPSaman

Windows port

Finish port libcddb and libcdio for Windows.

Port libzvbi for Windows

Contact jb

Improvements to the X11 video output

Fullscreen support to improve .


Subtitles improvements

VLC media player does not support all the styles for a lot of subtitles type. Take a look at here to start coding.

Contact bitmap

Direct2D video output

Direct2D is a new API introduced in Windows 7. VLC could use a a Direct2D vout.

Contact: Geal

DirectX 9 video output

DirectX 9 features some improvements that we could use in our video output

Contact: Geal

Pixel shaders in OpenGL video output

It would be nice to have a small proof of concept video output which takes care of chroma conversion using pixel shaders.

Contact: dionoea

WTV support

We would love to have a .wtv demuxer for the new wtv files from Windows Media center

Contact jb

Interaction with online services

Hello, I would like to present their concept idea, it involves interaction with online services and some changes in the user interface of VLC Media Player.

On the first tab (Movie) is very straightforward, a user inserts a DVD, HD-DVD or BlyRay selects the desired slot and begin viewing. In the future it will be possible to implement view of the disk image.

The second tab (Video), makes it possible to watch media files directly from the HDD. Setting up a profile can be all sorted by category (Films, TV shows, etc.), the category of Films on (Action, Horror, Comedy), the category of TV show on (Lost, House M. D, X-Files), etc. After watching a movie or TV show, you can not closing VLC media player immediately to share impressions with your friends on Twitter, MySpace, Facebook.

The third tab (Music), provides an opportunity to listen to music as a straight line from the HDD. Similar to the previous tab, everything can be sorted into categories (Hip-Hop, R'n'B, Dance, Rock).

Another idea is to tab Online TV, where you can make a small internet browser tied to popular online Servas (YouTube) and send links to interesting videos to friends directly from the VLC Player.

Contact: Jack.LJ

Remember Your Place in a Video

Launching a new video while another is paused loses the place of the original video. There are a few ways to correct this. 1. If a video is open when you try to open another, VLC could ask you if you're sure you want to start a new video. 2. VLC could allow multiple video windows to be open at once. 3. A tab system could be introduced. 4. VLC could offer to remember your place in the video. If you close a video, or just open another one, you should be able to go back to the video you were playing and see a window offering to restore your position. *best option* Amazon VOD does this now and it's terrific. If I close a window playing a video, and then reopen the video later, Amazon will ask me if I want to start from the beginning or where it was last time.


Discussions on projects

Proposals