Difference between revisions of "Bounties"

From VideoLAN Wiki
Jump to navigation Jump to search
Line 183: Line 183:
 
==== general purpose codecs ====
 
==== general purpose codecs ====
 
  - AmaRecTV AMV2, AMV3, AMV4
 
  - AmaRecTV AMV2, AMV3, AMV4
- Cineform HD
 
 
  - Apple Pixlet
 
  - Apple Pixlet
 +
 
==== cctv software ====
 
==== cctv software ====
 
  - Verint RFB
 
  - Verint RFB

Revision as of 15:04, 8 August 2016

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.

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.

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 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.

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.

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

1000 € 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.


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.

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.

Local resampling

2000 € Stop resampling the audio when playing local files.

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

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.

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.

Preferences for LUA extensions

2500 € Be able to add preferences for LUA extensions.

ARM optimizations

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

Ideas:

  • Audio conversions
  • Chroma conversions
  • Transform filter

Add RTP with FEC

2000 € 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...

Libavcodec bugs

Libavcodec features

MVC

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

VoxWare MetaSound

500 € Add a VoxWare MetaSound Decoder in libavcodec.


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.

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.

Other decoder

We are interested in other decoders. Price are not yet defined. ?500? €

general purpose codecs

- AmaRecTV AMV2, AMV3, AMV4
- Apple Pixlet

cctv software

- Verint RFB
- IMM family of DVR codecs

screen capture

- Fox Magic Screen Capture
- NewTek SpeedHQ
- Screenpresso

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.