Difference between revisions of "Bounties"
(121 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
− | + | 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 | ||
= Rules = | = Rules = | ||
− | |||
− | Sending a reasonable patch on a public mailing-list gives a temporary lock for the task. | + | # One must contact us before starting a bounty. |
+ | # Sending a reasonable patch on a public mailing-list gives a temporary lock for the task. | ||
− | == Payment == | + | === 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. | 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 = | ||
− | |||
− | |||
− | |||
− | + | == 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 | + | 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| | + | {{Price|2000}} |
− | + | Same as ChromeCast, but for UPnP/DLNA | |
− | |||
− | See [https://trac.videolan.org/vlc/ticket/ | + | See [https://trac.videolan.org/vlc/ticket/17365 #17365] and [https://trac.videolan.org/vlc/ticket/1441 #1441]. |
− | == | + | === Subtitles under the video === |
− | + | {{Price|1500}} | |
− | {{Price| | + | 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}} | {{Price|1000}} | ||
− | |||
− | + | See the "video-es" variable in the core. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | See [https://trac.videolan.org/vlc/ticket/824 #824]. | ||
+ | |||
=== RTP packetization === | === RTP packetization === | ||
− | {{Price|Each item: | + | {{Price|Each item: 250}} |
Do the packetization of ONE of those items: | Do the packetization of ONE of those items: | ||
− | |||
− | |||
* WMA | * WMA | ||
* WMV | * WMV | ||
* VC-1 | * 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 === | === DVB scanning === | ||
{{Price|1000}} | {{Price|1000}} | ||
− | In order to compete with TV software, we need some DVB scanning, working on | + | 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 [https://trac.videolan.org/vlc/ticket/7248 #7248]. | ||
Line 103: | Line 92: | ||
See http://nate.dynalias.net/dev/scanchannelsbda.rails and http://nate.deepcreek.org.au/svn/ScanChannelsBDA/trunk/ | See http://nate.dynalias.net/dev/scanchannelsbda.rails and http://nate.deepcreek.org.au/svn/ScanChannelsBDA/trunk/ | ||
− | === | + | ==== DVB Scanning² ==== |
− | {{Price| | + | {{Price|500}} |
− | + | Extending the DVB scan to another platform than the main one. | |
− | + | === HTTP POST support === | |
− | + | {{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. | |
− | |||
− | |||
− | |||
− | + | === 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. | ||
− | + | Also | |
+ | * Real byterange support. (Download should respect byterange limit) | ||
+ | * Self metrics (more or less accurate) or ability to toggle prefetch. | ||
=== Preferences for LUA extensions === | === Preferences for LUA extensions === | ||
− | {{Price| | + | {{Price|2500}} |
Be able to add preferences for LUA extensions. | Be able to add preferences for LUA extensions. | ||
− | |||
− | |||
− | |||
− | === | + | === Add RTP with FEC === |
− | {{Price| | + | {{Price|1200}} |
− | + | Input and output modules (SMPTE 2022). | |
− | + | === Working RealMedia Demuxer === | |
+ | {{Price|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 optimizations === | ||
Line 143: | Line 129: | ||
* Chroma conversions | * Chroma conversions | ||
* Transform filter | * 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 :) | ||
+ | |||
+ | 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}} | ||
+ | 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 == | == 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|500}} | {{Price|500}} | ||
Line 155: | Line 272: | ||
See [https://trac.videolan.org/vlc/ticket/7306 #7306]. | See [https://trac.videolan.org/vlc/ticket/7306 #7306]. | ||
− | === | + | === Support OGG length calculation === |
− | {{Price| | + | {{Price|???}} |
− | + | See [https://trac.videolan.org/vlc/ticket/6983 #6983]. | |
− | See [https://trac.videolan.org/vlc/ticket/ | ||
− | |||
=== MSS2 === | === 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]. | ||
+ | |||
+ | === 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 === | === G2M === | ||
Line 171: | Line 291: | ||
See [https://trac.videolan.org/vlc/ticket/2327 #2327]. | See [https://trac.videolan.org/vlc/ticket/2327 #2327]. | ||
− | === | + | === DTS-HD Master Audio === |
+ | {{Price|4000}} | ||
+ | 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. | ||
+ | |||
+ | === BD-J === | ||
+ | {{Price|2000}} | ||
+ | Work on libbluray integration to play BD-J BD in libbluray. | ||
+ | |||
+ | === Auto-Rotation of the video === | ||
+ | {{Price|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 [https://trac.videolan.org/vlc/ticket/2882 #2882]. | ||
+ | |||
+ | === libVLCcore SD API and Upnp === | ||
+ | {{Price|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 [https://trac.videolan.org/vlc/ticket/4437 #4437]. | ||
+ | |||
+ | === Fallback on multi-threaded decoding if hardware decoding fails === | ||
+ | {{Price|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 === | ||
+ | {{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}} | {{Price|500}} | ||
− | Add a | + | 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-through === | ||
+ | {{Price|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 [https://trac.videolan.org/vlc/ticket/4940 #4940] and other. | ||
+ | |||
+ | === ARMv8 NEON mean === | ||
+ | {{Price|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 === | ||
+ | {{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}} | {{Price|3000}} | ||
− | |||
− | This | + | 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}} | {{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. | ||
+ | |||
+ | |||
+ | == VLC Android Features == | ||
+ | === Support USB OTF === | ||
+ | {{Price|1000}} | ||
+ | |||
+ | New framework for USB from Android is quite complex, but is doable, since many example exist. | ||
+ | |||
+ | |||
+ | [[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
- 1 Rules
- 2 List of bounties
- 2.1 VLC Features
- 2.1.1 libVLC API for filters
- 2.1.2 libVLC API for sout and smem
- 2.1.3 Webdav support
- 2.1.4 Demuxdump2
- 2.1.5 UPnP/DLNA renderer
- 2.1.6 Subtitles under the video
- 2.1.7 Dual subtitles support
- 2.1.8 RTP packetization
- 2.1.9 DVB scanning
- 2.1.10 HTTP POST support
- 2.1.11 HTTP Pool for DASH
- 2.1.12 Preferences for LUA extensions
- 2.1.13 Add RTP with FEC
- 2.1.14 Working RealMedia Demuxer
- 2.1.15 ARM optimizations
- 2.1.16 Convert deinterlacer x86 optimizations
- 2.1.17 Support DVD Audio
- 2.1.18 Support HD-DVD
- 2.2 VLC bugs
- 2.3 Libavcodec bugs
- 2.4 Libavcodec features
- 2.1 VLC Features
- 3 Past bounties
- 3.1 AC-3 Volume
- 3.2 Bug -mt on Mpeg-4 video
- 3.3 Bug -mt on H.264 video
- 3.4 Support OGG length calculation
- 3.5 MSS2
- 3.6 VC-1 interlaced
- 3.7 G2M
- 3.8 DTS-HD Master Audio
- 3.9 BD-J
- 3.10 Auto-Rotation of the video
- 3.11 libVLCcore SD API and Upnp
- 3.12 Fallback on multi-threaded decoding if hardware decoding fails
- 3.13 RTP packetization
- 3.14 libVLC API for imem
- 3.15 Audio Loopback for Windows
- 3.16 Access module I/O interruption
- 3.17 HTTPS 2.0 input
- 3.18 AAC encoder
- 3.19 HDMI pass-through
- 3.20 ARMv8 NEON mean
- 3.21 Local resampling
- 3.22 Airplay renderer
- 3.23 VLM improvements
- 3.24 VA video output
- 3.25 screen capture
- 3.26 DXV decoder
- 3.27 VLC Android Features
Rules
- 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 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
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
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
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.