[haiku-inc] Contract Proposal: Streaming Support and Media Kit Development

  • From: Dario Casalinuovo <b.vitruvio@xxxxxxxxx>
  • To: haiku-inc@xxxxxxxxxxxxx
  • Date: Fri, 26 Feb 2016 20:51:42 +0100

Hello,
moving forward the latest post this is the contract proposal for the work.
I propose to spend at least 120 hours across 4 weeks for $1300 working to
add streaming support and improve the media_kit to be used for production.
If I can continue to put my time I could spend additionally 240 hours over
8 weeks.

The development will relate the following areas and tickets :

Implement Streaming Support for the media_kit (#10119)

* Solve the problems related to the plugin manager and provide a wrapped
BDataIO that is enough smart to buffer the data used for plugins sniffing.
* Investigate BFileInterface and see what should be changed to make it work
over streaming.
* Investigate BMediaFile limitations and the possibility to have media
plugins automatically support streaming, ffmpeg has support for it.
* Improve media kit latency system investigating the introduction of the
notion of min/max latencies (relates #7285). This is needed as our
currently latency management isn't probably enough adequate to support best
effort services from the internet.
* Add streaming support in MediaPlayer.

Fix and sanitize the media_server reference count system (#4021)

* Crashed applications are not correctly released, the backend reference
system should be analyzed.
* Sometimes the media_addon_server fails to detect when to release nodes.
* Fix BBuffer proliferation (#4954)

Reduce code duplication in the media_kit and introduce the BMediaClient API
(ex BMediaFilter)

* The game_kit is using a custom audio producer, it should use BSoundPlayer
or BMediaClient.
* Most functionality between our addons nodes can be merged.
* MediaPlayer can take advantage of it to reduce the code base.
* BSoundPlayer and BMediaRecorder can be reworked to use BMediaClient as
backend.

Depending on how much time fixing the previous tasks will take, I'm
planning to work eventually on the following points:

* Introduce and finalize the new MediaPlayer plugin API
* Add id3 tags support (#9525, ArmyKnife as plugin?)
* Work towards more stability for the media_server (#6220)

The high priority items of the contract are streaming support and the
BMediaClient class, on which I have already put a lot of development. I
don't plan to replace every node in the system during this contract, but I
want to make the most common and most important ones to derive from the
same source. This will improve bugs traceability and common behavior
control between nodes. Once those milestones have been reached I plan to
move on the other issues.

I plan to begin working on it and spend the initial 120 hours starting from
March 1st.

I will appreciate if it's possible to have the final decision made before
Monday.

-- 
Best Regards,
Dario Casalinuovo

Other related posts: