Difference between revisions of "Bounties"

From VideoLAN Wiki
Jump to navigation Jump to search
 
(151 intermediate revisions by 6 users not shown)
Line 1: Line 1:
= WIP =
+
This page is a list of the [https://en.wikipedia.org/wiki/Bounty_%28reward%29 bounties] that [[VideoLAN]] will pay for features developed on {{VLC}} or 3rd party libraries.
This is a '''<big>Work In Progress</big>'''. It is NOT a definitive, nor are the prices!
 
  
 
= Rules =
 
= Rules =
== Payment ==
+
 
 +
# One must contact us before starting a bounty.
 +
# Sending a reasonable patch on a public mailing-list gives a temporary lock for the task.
 +
 
 +
=== WIP ===
 +
This list is always '''<big>Work In Progress</big>'''. It is NOT a definitive list, nor are the prices!
 +
 
 +
Therefore, ask before doing anything. Or suggest ideas.
 +
 
 +
=== Payment ===
 
The bounties are paid to a legal entity that can create an '''invoice'''. It can be done by an independent worker too.
 
The bounties are paid to a legal entity that can create an '''invoice'''. It can be done by an independent worker too.
  
Money is paid by the VideoLAN non-profit organization in '''Euros'''.
+
Money is paid by the VideoLAN non-profit organization in '''Euros'''. VideoLAN does not have a VAT number, so the prices are what VideoLAN will pay.
  
Money is paid on code '''merge''' in the relevant project. Sending a reasonable patch on a public mailing-list gives a temporary lock for the task.
+
Money is paid on code '''merge''' in the relevant project.
  
== Join our effort ==
+
=== Join our effort ===
 
If you feel like adding some money to a special bounty, please [http://www.videolan.org/contact.html Contact us].
 
If you feel like adding some money to a special bounty, please [http://www.videolan.org/contact.html Contact us].
  
 
= List of bounties =
 
= List of bounties =
== AC-3 Volume==
+
 
 +
== VLC Features ==
 +
=== libVLC API for filters ===
 +
{{Price|2000}}
 +
This task consist on doing a '''correct''' set of libVLC API for audio filters and video filters.
 +
 
 +
This would be useful for phonon, tomahawk and other libVLC applications.
 +
 
 +
See [https://trac.videolan.org/vlc/ticket/5603 #5603]
 +
 
 +
=== libVLC API for sout and smem ===
 +
{{Price|2000}}
 +
Create a libVLC API to be able to use smem. This will include a libVLC API for sout.
 +
 
 +
This is very difficult, and needs extended knowledge of VLC.
 +
 
 +
See [https://trac.videolan.org/vlc/ticket/5037 #5037]
 +
 
 +
=== Webdav support ===
 +
{{Price|700}}
 +
This is ''readdir'' implementation for webdav for the HTTP access, with Basic Authentication.
 +
 
 +
See [https://trac.videolan.org/vlc/ticket/9065 #9065]
 +
 
 +
=== Demuxdump2  ===
 +
{{Price|2000}}
 +
This is a new module to dump the incoming streams, like demuxdump, but with more use cases reported.
 +
 
 +
The important use cases that are not supported for now are:
 +
* so that we can "download" from a Network source in the libVLC mobile ports (for example, copy from upnp drive to the local phone)
 +
* so that we can "record" adaptive streaming, like Dash, HLS, MMS or other complex streaming formats.
 +
 
 +
=== UPnP/DLNA renderer ===
 +
{{Price|2000}}
 +
Same as ChromeCast, but for UPnP/DLNA
 +
 
 +
See [https://trac.videolan.org/vlc/ticket/17365 #17365] and [https://trac.videolan.org/vlc/ticket/1441 #1441].
 +
 
 +
=== Subtitles under the video ===
 +
{{Price|1500}}
 +
Develop the feature so that we get subtitles under the video, in the black bars, for GPU blending video output (D3D, OpenGL)
 +
 
 +
Price is for core + one module. One extra module is 500 each.
 +
 
 +
See [https://trac.videolan.org/vlc/ticket/2591 #2591].
 +
 
 +
=== Dual subtitles support ===
 +
{{Price|1000}}
 +
 
 +
See the "video-es" variable in the core.
 +
 
 +
See [https://trac.videolan.org/vlc/ticket/824 #824].
 +
 +
=== RTP packetization ===
 +
{{Price|Each item: 250}}
 +
Do the packetization of ONE of those items:
 +
* WMA
 +
* WMV
 +
* VC-1
 +
 
 +
See [https://trac.videolan.org/vlc/ticket/1289 #1289], [https://trac.videolan.org/vlc/ticket/1323 #1323],  and [https://trac.videolan.org/vlc/ticket/6505 #6505].
 +
 
 +
=== DVB scanning ===
 +
{{Price|1000}}
 +
In order to compete with TV software, we need some DVB scanning, working on one platform using the DTV module.
 +
 
 +
See [https://trac.videolan.org/vlc/ticket/7248 #7248].
 +
 
 +
See http://nate.dynalias.net/dev/scanchannelsbda.rails and http://nate.deepcreek.org.au/svn/ScanChannelsBDA/trunk/
 +
 
 +
==== DVB Scanning² ====
 +
{{Price|500}}
 +
Extending the DVB scan to another platform than the main one.
 +
 
 +
=== HTTP POST support ===
 
{{Price|1000}}
 
{{Price|1000}}
 +
In order to support webservices, it would be nice to have support for POST in the normal HTTP stack and provide a suitable API for modules.
  
Fix correctly the AC-3 volume issue. See [https://trac.videolan.org/vlc/ticket/3994 #3994].
+
=== HTTP Pool for DASH ===
 +
{{Price|2000}}
 +
In order to support adaptive streaming, it would be nice to have support for a shared pool between multiple streams in the normal HTTP stack and use it in the adaptive module.
  
The issue can come from a mis-integration with liba52, or could come from some channels being wrongly discarded.
+
Also
 +
* Real byterange support. (Download should respect byterange limit)
 +
* Self metrics (more or less accurate) or ability to toggle prefetch.
  
This must work on Windows.
+
=== Preferences for LUA extensions ===
 +
{{Price|2500}}
 +
Be able to add preferences for LUA extensions.
  
== libVLC API for filters ==
 
{{Price|800?}}
 
'''Correct''' libVLC API for audio filters, video filters, including equalizer.
 
  
This would be useful for phonon, tomahawk and other libVLC application.
+
=== Add RTP with FEC ===
 +
{{Price|1200}}
 +
Input and output modules (SMPTE 2022).
  
== libVLC API for smem ==
+
=== Working RealMedia Demuxer ===
 
{{Price|1000}}
 
{{Price|1000}}
libVLC API for smem. This might include a libVLC API for sout.
+
This task consist in writing a '''correct''' and working demuxer for real media format, to avoid crashing and playing all videos from China...
  
== libVLC API for imem ==
 
{{Price|200}}
 
libVLC API for imem to map to a libvlc_media_t object.
 
  
== ARM optimizations ==
+
=== ARM optimizations ===
ARM optimisation for core and important filters.
+
ARM optimisation for core and important filters. This is TBD.
  
 
Ideas:
 
Ideas:
* TBD
+
* Audio conversions
* TBD
+
* Chroma conversions
 +
* Transform filter
 +
 
 +
=== Convert deinterlacer x86 optimizations ===
 +
{{Price|500}}
 +
What? Convert x86 assembler code in the deinterlacer to proper out-of-line
 +
(.s/.S) assembler.
 +
 
 +
Why? The inline existing assembler (esp. Yadif) breaks depending on compiler
 +
options (e.g. -O0, -flto) and versions.
 +
 
 +
For yadif, updating it from upstream is probably the best idea.
 +
 
 +
 
 +
=== Support DVD Audio ===
 +
{{Price|2000}}
 +
 
 +
See the dvdcpxm and the http://avisynth.nl/index.php/DVDAGuide page
 +
 
 +
=== Support HD-DVD ===
 +
{{Price|2000}}
 +
 
 +
If you have the hardware :)
  
== Local resampling ==
+
See [https://trac.videolan.org/vlc/ticket/10273 #10273].
 +
 
 +
 
 +
== VLC bugs ==
 +
 
 +
=== Screencast ===
 +
==== Audio Loopback for Mac ====
 +
{{Price|500}}
 +
To record the desktop sounds.
 +
 
 +
* It also requires to ''check that all input are using mdate()-based PTS''
 +
 
 +
==== UI for better screencasting ====
 +
{{Price|250}}
 +
See [https://trac.videolan.org/vlc/ticket/4535 #4535] and [https://trac.videolan.org/vlc/ticket/5988 #5988].
 +
 
 +
=== RTSP/UDP issue ===
 +
{{Price|2000}}
 +
Fix the RTSP output so that the UDP transfers work across client NATs (android clients). This will require interleaving support.
 +
 
 +
=== Asynchronous demuxer end-of-stream ===
 +
{{Price|250}}
 +
An (access_)demux can set pf_demux to NULL. This avoids blocking the input thread when doing I/O.
 +
But there are no ways to emit an end-of-stream if the pf_demux function is not set. A callback should be defined for this purpose.
 +
(FWIW, this limitation is already affecting the out-of-tree Spotify plugin.)
 +
 
 +
=== Separate video converters from video filters ===
 +
{{Price|500}}
 +
Video conversion filters and "normal" post-processing filters all expose the same capability.
 +
It makes a mess in the preferences panel, and the semantics for probing are under-specified.
 +
 
 +
Conversion filters should not touch their input and output formats.
 +
Post-processing filters should be able to change either or both input and output formats, but must be requested explicitly.
 +
The filter chain should be improved accordingly.
 +
 
 +
 
 +
=== NVENC encoder ===
 +
{{Price|1000}} (excl. NVIDIA affiliates)
 +
 
 +
A plugin could encode video on capable (Kepler/Maxwell) NVIDIA GPUs. At minimum H.264 is needed; MPEG2 would be nice to have.
 +
Some level of interface compatibility/similarity with the x264 plugin is highly desirable.
 +
 
 +
This may need to be out-of-tree depending on the ability to redistribute the header file. The run-time should be dynamically loaded.
 +
 
 +
=== Allow video filters to provide a picture pool ===
 
{{Price|1500}}
 
{{Price|1500}}
Stop audio resampling for local files (???).
+
Only video output display plugins are currently able to supply a custom picture pool.
 +
Filters are forced to use generic picture buffers allocated from main memory. This is a major impediment to support hardware acceleration. This is somewhat orthogonal to the previous bounty, but they cannot be done in parallel due to obvious conflicts.
 +
 
 +
This needs changes in the video output and in the filter chain to allow filters (both conversion and post-processing) to provide an optional pool callback for
 +
their *input* pictures. Support for video splitters pool and removal of picture_t.context would be nice bonuses.
 +
 
 +
== Libavcodec bugs ==
 +
 
 +
=== Multi-threaded hw decoding ===
 +
{{Price|500}}
 +
To fix the issue that you cannot have MT hw decoding.
 +
 
 +
== Libavcodec features ==
 +
 
 +
=== MVC ===
 +
{{Price|6000}}
 +
Add a MVC Decoder in libavcodec and wire it to VLC.
 +
 
 +
=== Cineform features ===
 +
{{Price|1000}}
 +
Now that the cineform SDK is open source, implement mission features, like temporal transform, (maybe bayer), bottom-line-bug fixing, alpha channel fixing, interlacing fixing.
 +
 
 +
=== VoxWare MetaSound ===
 +
{{Price|500}}
 +
Add a VoxWare MetaSound Decoder in libavcodec.
 +
 
 +
 
 +
=== X-AVC-S decoder ===
 +
{{Price|600}}
 +
Sony second version of AVC-S, which is just a rebranded H.264, although with different sps/pps management.
 +
Unfortunately no specifications are available, so some time of reverse engineering is required.
 +
 
 +
=== Microsoft VC1 Progressive ===
 +
{{Price|600}}
 +
Microsoft VC1 Progressive segmented frame mode
 +
 
 +
=== AAC ===
 +
- AACE (aac enhanced with low delay)
 +
 
 +
- xHE-AAC
 +
 
 +
=== Other decoder ===
 +
We are interested in other decoders.
 +
Assume price of 500€ for each variant.
 +
{{Price|500}}
 +
==== general purpose codecs ====
 +
- AmaRecTV AMV2, AMV3, AMV4
 +
- AmuseGraphics - AGM2, AGM3
 +
- AIMV, CNGA, RGGB (Powerpoint?)
 +
 
 +
==== cctv software ====
 +
- Verint RFB (RFBW)
 +
- IMM family of DVR codecs (IMM5, IMM6)
 +
 
 +
= Past bounties =
 +
 
 +
=== AC-3 Volume ===
 +
{{Price|1000}}
 +
 
 +
Fix correctly the AC-3 volume issue. See [https://trac.videolan.org/vlc/ticket/3994 #3994].
 +
 
 +
The issue can come from a mis-integration with liba52, or could come from some channels being wrongly discarded.
 +
 
 +
This '''must''' work on Windows.
  
== Bug -mt on Mpeg-4 video ==
+
=== Bug -mt on Mpeg-4 video ===
{{Price|300}}
+
{{Price|500}}
 
Fix the Mpeg-4 resolution change for -mt in libavcodec.
 
Fix the Mpeg-4 resolution change for -mt in libavcodec.
 
See [https://trac.videolan.org/vlc/ticket/6579 #6579] and [https://trac.videolan.org/vlc/ticket/6533 #6533].
 
See [https://trac.videolan.org/vlc/ticket/6579 #6579] and [https://trac.videolan.org/vlc/ticket/6533 #6533].
  
== Bug -mt on H.264 video ==
+
=== Bug -mt on H.264 video ===
{{Price|300}}
+
{{Price|500}}
 
Fix the H.264 resolution change for -mt in libavcodec.
 
Fix the H.264 resolution change for -mt in libavcodec.
 
See [https://trac.videolan.org/vlc/ticket/7306 #7306].
 
See [https://trac.videolan.org/vlc/ticket/7306 #7306].
  
== MSS2 ==
+
=== Support OGG length calculation ===
 +
{{Price|???}}
 +
See [https://trac.videolan.org/vlc/ticket/6983 #6983].
 +
 
 +
=== MSS2 ===
 
{{Price|1000}}
 
{{Price|1000}}
 
Add a MSS2 Decoder in libavcodec.
 
Add a MSS2 Decoder in libavcodec.
 
See [https://trac.videolan.org/vlc/ticket/750 #750].
 
See [https://trac.videolan.org/vlc/ticket/750 #750].
  
== G2M ==
+
=== VC-1 interlaced ===
 +
{{Price|1000}}
 +
Fix VC-1 interlaced and adding missing B-frames support in libavcodec.
 +
See [https://trac.videolan.org/vlc/ticket/5887 #5887].
 +
 
 +
=== G2M ===
 
{{Price|1000}}
 
{{Price|1000}}
 
Add a G2M2/G2M3/G2M4 Decoder in libavcodec.
 
Add a G2M2/G2M3/G2M4 Decoder in libavcodec.
 
See [https://trac.videolan.org/vlc/ticket/2327 #2327].
 
See [https://trac.videolan.org/vlc/ticket/2327 #2327].
  
== VoxWare ==
+
=== DTS-HD Master Audio ===
{{Price|500}}
+
{{Price|4000}}
Add a VoxWare MetaSound Decoder in libavcodec.
 
 
 
== DTS-HD Master Audio ==
 
{{Price|3000}}
 
 
Add a [[DTS|DTS-HD Master Audio Decoder]].
 
Add a [[DTS|DTS-HD Master Audio Decoder]].
  
 
This can be either in libavcodec or in libdca, but it must work in VLC in the end, including 8 channels. This is probably the XLL extension to code.
 
This can be either in libavcodec or in libdca, but it must work in VLC in the end, including 8 channels. This is probably the XLL extension to code.
  
== VC-1 interlacing ==
+
=== BD-J ===
{{Price|500}}
+
{{Price|2000}}
Fix VC-1 interlaced and adding missing B-frames support in libavcodec.
+
Work on libbluray integration to play BD-J BD in libbluray.
See [https://trac.videolan.org/vlc/ticket/5887 #5887].
 
  
== BD+ ==
+
=== Auto-Rotation of the video ===
 
{{Price|2000}}
 
{{Price|2000}}
Work on libbdplus to play BD+ BD in libbluray.
+
As many MP4 videos and JPEG files we need to rotate those when we detect it.
  
== RTP packetization ==
+
So far, the demuxer has the info, but that is it.
{{Price|Each item: 100}}
+
 
* Opus
+
The core should ask the video output if it can do the transformation (OpenGL) else it should load the transform filter with the right parameter.
* WMA
+
 
* WMV
+
See [https://trac.videolan.org/vlc/ticket/2882 #2882].
* VC-1
 
* VP8
 
See [https://trac.videolan.org/vlc/ticket/380 #380], [https://trac.videolan.org/vlc/ticket/1289 #1289], [https://trac.videolan.org/vlc/ticket/1323 #1323],  [https://trac.videolan.org/vlc/ticket/6443 #6443], [https://trac.videolan.org/vlc/ticket/5178 #5178] and [https://trac.videolan.org/vlc/ticket/6505 #6505]
 
  
== SD API and Upnp ==
+
=== libVLCcore SD API and Upnp ===
{{Price|200}}
+
{{Price|800}}
 
The Upnp SD is very slow because it needs to fetch recusively all nodes. This needs to change.
 
The Upnp SD is very slow because it needs to fetch recusively all nodes. This needs to change.
  
Line 104: Line 319:
 
See [https://trac.videolan.org/vlc/ticket/4437 #4437].
 
See [https://trac.videolan.org/vlc/ticket/4437 #4437].
  
== DVB scanning ==
+
=== Fallback on multi-threaded decoding if hardware decoding fails ===
 
{{Price|1000}}
 
{{Price|1000}}
In order to compete with TV software, we need some DVB scanning, working on all platforms.
+
At present, libavcodec will fall back on single-threaded decoding if hardware decoding is enabled and fails during its initialization due to unsupported pixel formats, profiles, etc.. Add support to fallback on multi-threaded decoding if supported by the respective codec.
See [https://trac.videolan.org/vlc/ticket/7248 #7248].
+
 
 +
=== RTP packetization ===
 +
{{Price|Each item: 200}}
 +
Do the packetization of ONE of those items:
 +
* RGB
 +
* YUV
 +
 
 +
=== libVLC API for imem ===
 +
{{Price|1000}}
 +
Create a libVLC API for imem to map to a libvlc_media_t object, in order to use it like the rest of libVLC. Notably libvlc_media_player_new_from_media
 +
 
 +
 
 +
=== Audio Loopback for Windows ===
 +
{{Price|500}}
 +
To record the desktop sounds.
 +
 
 +
* It also requires to ''check that all input are using mdate()-based PTS''
 +
 
 +
=== Access module I/O interruption ===
 +
{{Price|2000}}
 +
Access modules need to wake up from waiting for I/O events when the user stops or seeks the input.
 +
Thread cancellation is not practical for access modules, and inapplicable to seeking. net_*() helper functions are limited to the input
 +
thread, not working with stream_Url*() or stream_Demux*(), and not supporting more than one file descriptor and event.
 +
A more flexible solution is necessary; stopping should always work; provisions for seeking would be nice to have, but
 +
not expected to work without additional demuxer changes. Support for multiple file descriptors (DVB) and condition variables (UDP) is a must.
 +
 
 +
=== HTTPS 2.0 input ===
 +
{{Price|2000}}
 +
Connection reuse when seeking and opening multiple files would speed up seeking and segmented streaming respectively.
 +
FWIW, I believe a fully functional implementation of this depends on the access I/O interruption feature above.
 +
 
 +
=== AAC encoder ===
 +
{{Price|?}}
 +
Add a native AAC encoder matching the quality of existing implementations by Apple (QuickTime) or Nero (libfaac). Adding support for more channels than just 2.0 is supposed to be covered by an additional bounty.
  
== HDMI pass-thru ==
+
=== HDMI pass-through ===
 
{{Price|1000}}
 
{{Price|1000}}
For other codecs than the normal AC-3 and DTS.
+
Notably for other codecs than the ones we have over S/PDIF.
 +
 
 +
We need:
 +
* DTS extensions over HDMI, notably DTS HD MA
 +
* E-AC3
 +
* Dolby TrueHD
 +
* MPGA
 +
 
 +
The price is for at least the first 3.
  
 
See [https://trac.videolan.org/vlc/ticket/4940 #4940] and other.
 
See [https://trac.videolan.org/vlc/ticket/4940 #4940] and other.
  
== Preferences for LUA extensions ==
+
=== ARMv8 NEON mean ===
{{Price|1200}}
+
{{Price|750}}
Be able to add preferences for LUA extensions.
+
What? add unrolled ARMv8 SIMD assembler optimizations for both so-called
 +
"merge" operations in the deinterlacing filter.
 +
 
 +
Why? because there is x86 and ARMv7 and no ARMv8 support.
 +
 
 +
=== Local resampling ===
 +
{{Price|2000}}
 +
Stop resampling the audio when playing local files.
 +
 
 +
This is extremely difficult, and needs extended knowledge of VLC.
 +
 
 +
=== Airplay renderer ===
 +
{{Price|1000}}
 +
Same as ChromeCast, but for AirPlay. See the RAOP module too!
 +
 
 +
See [https://trac.videolan.org/vlc/ticket/17366 #17366].
 +
 
 +
=== VLM improvements ===
 +
{{Price|3000}}
 +
 
 +
This tasks consists in improving the VLM API, in order to get closer to something like a Plex Server: on demand VoD, with transcoding for the specific device.
 +
 
 +
In scope is:
 +
* simplification of the VLM code
 +
* commonification of the VLM input and playlist (or media player) code, to reduce VLM specific code
 +
* API to remove the weird vlm parsing from the core (the vlm file parsing should be a module)
 +
* preparation of VoD for non-RTSP cases (read HTTP streaming)
 +
 
 +
Out of scope are:
 +
* HTTP interface changes
 +
* profiles for transcoding
 +
 
 +
'''NB:''' small reduction of VLM features is accepted.
 +
 
 +
 
 +
=== VA video output ===
 +
{{Price|500}} (excl. Intel affiliates)
 +
 
 +
A video capable of scaled rotated YUV output with blending similar should support Intel cards to complement the VDPAU output.
 +
X11 support is necessary.
 +
The two usual CSC matrices should be supported; image adjust would be nice.
 +
 
 +
Hardware decoding pass-through could be added later.
 +
Wayland support is a possible future extension.
 +
 
 +
=== screen capture ===
 +
- Fox Magic Screen Capture
 +
 
 +
=== DXV decoder ===
 +
{{Price|2000}}
 +
Published by Resolume, there are two codecs identified by DXDI and DXD3.
 +
Completely closed source, no specifications and available for Windows and OSX only.
 +
Binary decoder should not be too hard to reverse, although it is something that will take a considerable effort.
 +
 
  
== Downloader for LUA extensions from addons ==
+
== VLC Android Features ==
 +
=== Support USB OTF ===
 
{{Price|1000}}
 
{{Price|1000}}
See libattica.
 
  
== Screencast ==
+
New framework for USB from Android is quite complex, but is doable, since many example exist.
{{Price|500?}}
 
Currently the screencasting is poor:
 
* No interface to correctly select both
 
* No loopback on Windows and Mac
 
* Need to check that all input are using mdate()-based PTS
 
  
== HTTP/AVI seeking ==
 
{{Price|500?}}
 
VLC behaves poorly with AVI over http connections. This is true for mp4 too.
 
MPlayer does it way better.
 
  
See [https://trac.videolan.org/vlc/ticket/2151 #2151].
+
[[Category:Coding]]

Latest revision as of 10:35, 9 October 2018

This page is a list of the bounties that VideoLAN will pay for features developed on VLC media player or 3rd party libraries.

Contents

Rules

  1. One must contact us before starting a bounty.
  2. Sending a reasonable patch on a public mailing-list gives a temporary lock for the task.

WIP

This list is always Work In Progress. It is NOT a definitive list, nor are the prices!

Therefore, ask before doing anything. Or suggest ideas.

Payment

The bounties are paid to a legal entity that can create an invoice. It can be done by an independent worker too.

Money is paid by the VideoLAN non-profit organization in Euros. VideoLAN does not have a VAT number, so the prices are what VideoLAN will pay.

Money is paid on code merge in the relevant project.

Join our effort

If you feel like adding some money to a special bounty, please Contact us.

List of bounties

VLC Features

libVLC API for filters

2000 € This task consist on doing a correct set of libVLC API for audio filters and video filters.

This would be useful for phonon, tomahawk and other libVLC applications.

See #5603

libVLC API for sout and smem

2000 € Create a libVLC API to be able to use smem. This will include a libVLC API for sout.

This is very difficult, and needs extended knowledge of VLC.

See #5037

Webdav support

700 € This is readdir implementation for webdav for the HTTP access, with Basic Authentication.

See #9065

Demuxdump2

2000 € This is a new module to dump the incoming streams, like demuxdump, but with more use cases reported.

The important use cases that are not supported for now are:

  • so that we can "download" from a Network source in the libVLC mobile ports (for example, copy from upnp drive to the local phone)
  • so that we can "record" adaptive streaming, like Dash, HLS, MMS or other complex streaming formats.

UPnP/DLNA renderer

2000 € Same as ChromeCast, but for UPnP/DLNA

See #17365 and #1441.

Subtitles under the video

1500 € Develop the feature so that we get subtitles under the video, in the black bars, for GPU blending video output (D3D, OpenGL)

Price is for core + one module. One extra module is 500 each.

See #2591.

Dual subtitles support

1000 €

See the "video-es" variable in the core.

See #824.

RTP packetization

Each item: 250 € Do the packetization of ONE of those items:

  • WMA
  • WMV
  • VC-1

See #1289, #1323, and #6505.

DVB scanning

1000 € In order to compete with TV software, we need some DVB scanning, working on one platform using the DTV module.

See #7248.

See http://nate.dynalias.net/dev/scanchannelsbda.rails and http://nate.deepcreek.org.au/svn/ScanChannelsBDA/trunk/

DVB Scanning²

500 € Extending the DVB scan to another platform than the main one.

HTTP POST support

1000 € In order to support webservices, it would be nice to have support for POST in the normal HTTP stack and provide a suitable API for modules.

HTTP Pool for DASH

2000 € In order to support adaptive streaming, it would be nice to have support for a shared pool between multiple streams in the normal HTTP stack and use it in the adaptive module.

Also

  • Real byterange support. (Download should respect byterange limit)
  • Self metrics (more or less accurate) or ability to toggle prefetch.

Preferences for LUA extensions

2500 € Be able to add preferences for LUA extensions.


Add RTP with FEC

1200 € Input and output modules (SMPTE 2022).

Working RealMedia Demuxer

1000 € This task consist in writing a correct and working demuxer for real media format, to avoid crashing and playing all videos from China...


ARM optimizations

ARM optimisation for core and important filters. This is TBD.

Ideas:

  • Audio conversions
  • Chroma conversions
  • Transform filter

Convert deinterlacer x86 optimizations

500 € What? Convert x86 assembler code in the deinterlacer to proper out-of-line (.s/.S) assembler.

Why? The inline existing assembler (esp. Yadif) breaks depending on compiler options (e.g. -O0, -flto) and versions.

For yadif, updating it from upstream is probably the best idea.


Support DVD Audio

2000 €

See the dvdcpxm and the http://avisynth.nl/index.php/DVDAGuide page

Support HD-DVD

2000 €

If you have the hardware :)

See #10273.


VLC bugs

Screencast

Audio Loopback for Mac

500 € To record the desktop sounds.

  • It also requires to check that all input are using mdate()-based PTS

UI for better screencasting

250 € See #4535 and #5988.

RTSP/UDP issue

2000 € Fix the RTSP output so that the UDP transfers work across client NATs (android clients). This will require interleaving support.

Asynchronous demuxer end-of-stream

250 € An (access_)demux can set pf_demux to NULL. This avoids blocking the input thread when doing I/O. But there are no ways to emit an end-of-stream if the pf_demux function is not set. A callback should be defined for this purpose. (FWIW, this limitation is already affecting the out-of-tree Spotify plugin.)

Separate video converters from video filters

500 € Video conversion filters and "normal" post-processing filters all expose the same capability. It makes a mess in the preferences panel, and the semantics for probing are under-specified.

Conversion filters should not touch their input and output formats. Post-processing filters should be able to change either or both input and output formats, but must be requested explicitly. The filter chain should be improved accordingly.


NVENC encoder

1000 € (excl. NVIDIA affiliates)

A plugin could encode video on capable (Kepler/Maxwell) NVIDIA GPUs. At minimum H.264 is needed; MPEG2 would be nice to have. Some level of interface compatibility/similarity with the x264 plugin is highly desirable.

This may need to be out-of-tree depending on the ability to redistribute the header file. The run-time should be dynamically loaded.

Allow video filters to provide a picture pool

1500 € Only video output display plugins are currently able to supply a custom picture pool. Filters are forced to use generic picture buffers allocated from main memory. This is a major impediment to support hardware acceleration. This is somewhat orthogonal to the previous bounty, but they cannot be done in parallel due to obvious conflicts.

This needs changes in the video output and in the filter chain to allow filters (both conversion and post-processing) to provide an optional pool callback for their *input* pictures. Support for video splitters pool and removal of picture_t.context would be nice bonuses.

Libavcodec bugs

Multi-threaded hw decoding

500 € To fix the issue that you cannot have MT hw decoding.

Libavcodec features

MVC

6000 € Add a MVC Decoder in libavcodec and wire it to VLC.

Cineform features

1000 € Now that the cineform SDK is open source, implement mission features, like temporal transform, (maybe bayer), bottom-line-bug fixing, alpha channel fixing, interlacing fixing.

VoxWare MetaSound

500 € Add a VoxWare MetaSound Decoder in libavcodec.


X-AVC-S decoder

600 € Sony second version of AVC-S, which is just a rebranded H.264, although with different sps/pps management. Unfortunately no specifications are available, so some time of reverse engineering is required.

Microsoft VC1 Progressive

600 € Microsoft VC1 Progressive segmented frame mode

AAC

- AACE (aac enhanced with low delay)

- xHE-AAC

Other decoder

We are interested in other decoders. Assume price of 500€ for each variant. 500 €

general purpose codecs

- AmaRecTV AMV2, AMV3, AMV4
- AmuseGraphics - AGM2, AGM3
- AIMV, CNGA, RGGB (Powerpoint?)

cctv software

- Verint RFB (RFBW)
- IMM family of DVR codecs (IMM5, IMM6)

Past bounties

AC-3 Volume

1000 €

Fix correctly the AC-3 volume issue. See #3994.

The issue can come from a mis-integration with liba52, or could come from some channels being wrongly discarded.

This must work on Windows.

Bug -mt on Mpeg-4 video

500 € Fix the Mpeg-4 resolution change for -mt in libavcodec. See #6579 and #6533.

Bug -mt on H.264 video

500 € Fix the H.264 resolution change for -mt in libavcodec. See #7306.

Support OGG length calculation

??? € See #6983.

MSS2

1000 € Add a MSS2 Decoder in libavcodec. See #750.

VC-1 interlaced

1000 € Fix VC-1 interlaced and adding missing B-frames support in libavcodec. See #5887.

G2M

1000 € Add a G2M2/G2M3/G2M4 Decoder in libavcodec. See #2327.

DTS-HD Master Audio

4000 € Add a DTS-HD Master Audio Decoder.

This can be either in libavcodec or in libdca, but it must work in VLC in the end, including 8 channels. This is probably the XLL extension to code.

BD-J

2000 € Work on libbluray integration to play BD-J BD in libbluray.

Auto-Rotation of the video

2000 € As many MP4 videos and JPEG files we need to rotate those when we detect it.

So far, the demuxer has the info, but that is it.

The core should ask the video output if it can do the transformation (OpenGL) else it should load the transform filter with the right parameter.

See #2882.

libVLCcore SD API and Upnp

800 € The Upnp SD is very slow because it needs to fetch recusively all nodes. This needs to change.

This task will likely need a change of API for the Service Discoveries.

See #4437.

Fallback on multi-threaded decoding if hardware decoding fails

1000 € At present, libavcodec will fall back on single-threaded decoding if hardware decoding is enabled and fails during its initialization due to unsupported pixel formats, profiles, etc.. Add support to fallback on multi-threaded decoding if supported by the respective codec.

RTP packetization

Each item: 200 € Do the packetization of ONE of those items:

  • RGB
  • YUV

libVLC API for imem

1000 € Create a libVLC API for imem to map to a libvlc_media_t object, in order to use it like the rest of libVLC. Notably libvlc_media_player_new_from_media


Audio Loopback for Windows

500 € To record the desktop sounds.

  • It also requires to check that all input are using mdate()-based PTS

Access module I/O interruption

2000 € Access modules need to wake up from waiting for I/O events when the user stops or seeks the input. Thread cancellation is not practical for access modules, and inapplicable to seeking. net_*() helper functions are limited to the input thread, not working with stream_Url*() or stream_Demux*(), and not supporting more than one file descriptor and event. A more flexible solution is necessary; stopping should always work; provisions for seeking would be nice to have, but not expected to work without additional demuxer changes. Support for multiple file descriptors (DVB) and condition variables (UDP) is a must.

HTTPS 2.0 input

2000 € Connection reuse when seeking and opening multiple files would speed up seeking and segmented streaming respectively. FWIW, I believe a fully functional implementation of this depends on the access I/O interruption feature above.

AAC encoder

? € Add a native AAC encoder matching the quality of existing implementations by Apple (QuickTime) or Nero (libfaac). Adding support for more channels than just 2.0 is supposed to be covered by an additional bounty.

HDMI pass-through

1000 € Notably for other codecs than the ones we have over S/PDIF.

We need:

  • DTS extensions over HDMI, notably DTS HD MA
  • E-AC3
  • Dolby TrueHD
  • MPGA

The price is for at least the first 3.

See #4940 and other.

ARMv8 NEON mean

750 € What? add unrolled ARMv8 SIMD assembler optimizations for both so-called "merge" operations in the deinterlacing filter.

Why? because there is x86 and ARMv7 and no ARMv8 support.

Local resampling

2000 € Stop resampling the audio when playing local files.

This is extremely difficult, and needs extended knowledge of VLC.

Airplay renderer

1000 € Same as ChromeCast, but for AirPlay. See the RAOP module too!

See #17366.

VLM improvements

3000 €

This tasks consists in improving the VLM API, in order to get closer to something like a Plex Server: on demand VoD, with transcoding for the specific device.

In scope is:

  • simplification of the VLM code
  • commonification of the VLM input and playlist (or media player) code, to reduce VLM specific code
  • API to remove the weird vlm parsing from the core (the vlm file parsing should be a module)
  • preparation of VoD for non-RTSP cases (read HTTP streaming)

Out of scope are:

  • HTTP interface changes
  • profiles for transcoding

NB: small reduction of VLM features is accepted.


VA video output

500 € (excl. Intel affiliates)

A video capable of scaled rotated YUV output with blending similar should support Intel cards to complement the VDPAU output. X11 support is necessary. The two usual CSC matrices should be supported; image adjust would be nice.

Hardware decoding pass-through could be added later. Wayland support is a possible future extension.

screen capture

- Fox Magic Screen Capture

DXV decoder

2000 € Published by Resolume, there are two codecs identified by DXDI and DXD3. Completely closed source, no specifications and available for Windows and OSX only. Binary decoder should not be too hard to reverse, although it is something that will take a considerable effort.


VLC Android Features

Support USB OTF

1000 €

New framework for USB from Android is quite complex, but is doable, since many example exist.