
Since almost all Google domains support HTTPS, and it is a good practice to use HTTPS wherever possible, thus in this patch, I changed most HTTP links to https whose domains are known to support HTTPS well. Modifications are generated by running these commands in src/docs directory: sed -i 's/http:\/\/www.chromium.org/https:\/\/www.chromium.org/g' *.md sed -i 's/http:\/\/developer.android.com/https:\/\/developer.android.com/g' *.md sed -i 's/http:\/\/dev.chromium.org/https:\/\/dev.chromium.org/g' *.md sed -i 's/http:\/\/build.chromium.org/https:\/\/build.chromium.org/g' *.md sed -i 's/http:\/\/src.chromium.org/https:\/\/src.chromium.org/g' *.md sed -i 's/http:\/\/crbug.com/https:\/\/crbug.com/g' *.md sed -i 's/http:\/\/groups.google.com/https:\/\/groups.google.com/g' *.md sed -i 's/http:\/\/cs.chromium.org/https:\/\/cs.chromium.org/g' *.md sed -i 's/http:\/\/codereview.chromium.org/https:\/\/codereview.chromium.org/g' *.md BUG= Review-Url: https://codereview.chromium.org/2545363002 Cr-Commit-Position: refs/heads/master@{#436501}
94 lines
4.4 KiB
Markdown
94 lines
4.4 KiB
Markdown
# Piranha Plant
|
||
|
||
Piranha Plant is the name of a project, started in November 2013, that aims to
|
||
deliver the future architecture of MediaStreams in Chromium.
|
||
|
||
Project members are listed in the
|
||
[group for the project](https://groups.google.com/a/chromium.org/forum/#!members/piranha-plant).
|
||
|
||
The Piranha Plant is a monster plant that has appeared in many of the Super
|
||
Mario games. In the original Super Mario Bros, it hid in the green pipes and is
|
||
thus an apt name for the project as we are fighting "monsters in the plumbing."
|
||
|
||

|
||
|
||
[TOC]
|
||
|
||
## Background
|
||
|
||
When the MediaStream spec initially came to be, it was tightly coupled with
|
||
PeerConnection. The infrastructure for both of these was initially implemented
|
||
primarily in libjingle, and then used by Chromium. For this reason, the
|
||
MediaStream implementation in Chromium is still somewhat coupled with the
|
||
PeerConnection implementation, it still uses some libjingle interfaces on the
|
||
Chromium side, and progress is sometimes more difficult as changes need to land
|
||
in libjingle before changes can be made in Chromium.
|
||
|
||
Since the early days, the MediaStream spec has evolved so that PeerConnection is
|
||
just one destination for a MediaStream, multiple teams are or will be consuming
|
||
the MediaStream infrastructure, and we have a clearer vision of what the
|
||
architecture should look like now that the spec is relatively stable.
|
||
|
||
## Goals
|
||
|
||
1. Document the idealized future design for MediaStreams in Chromium (MS) as
|
||
well as the current state.
|
||
1. Create and execute on a plan to incrementally implement the future design.
|
||
1. Improve quality, maintainability and readability/understandability of the MS
|
||
code.
|
||
1. Make life easier for Chromium developers using MS.
|
||
1. Balance concerns and priorities of the different teams that are or will be
|
||
using MS in Chromium.
|
||
1. Do the above without hurting our ability to produce the WebRTC.org
|
||
deliverables, and without hurting interoperability between Chromium and
|
||
other software built on the WebRTC.org deliverables.
|
||
|
||
## Deliverables
|
||
|
||
1. Project code name: Piranha Plant.
|
||
1. A [design document](https://www.chromium.org/developers/design-documents/idealized-mediastream-design)
|
||
for the idealized future design (work in progress).
|
||
1. A document laying out a plan for incremental steps to achieve as much of the
|
||
idealized design as is pragmatic. See below for current draft.
|
||
1. A [master bug](https://crbug.com/323223) to collect all existing and
|
||
currently planned work items:
|
||
1. Sub-bugs of the master bug, for all currently known and planned work.
|
||
1. A document describing changed and improved team policies to help us keep
|
||
improving code quality (e.g. naming, improved directory structure, OWNERS
|
||
files). Not started.
|
||
|
||
## Task List
|
||
|
||
Here are some upcoming tasks we need to work on to progress towards the
|
||
idealized design. Those currently being worked on have emails at the front:
|
||
|
||
* General
|
||
* More restrictive OWNERS
|
||
* DEPS files to limit dependencies on libjingle
|
||
* Rename MediaStream{Manager, Dispatcher, DispatcherHandler} to
|
||
CaptureDevice{...} since it is a bit confusing to use the MediaStream
|
||
name here.
|
||
* Rename MediaStreamDependencyFactory to PeerConnectionDependencyFactory.
|
||
* Split up MediaStreamImpl.
|
||
* Change the RTCPeerConnectionHandler to only create the PeerConnection
|
||
and related stuff when necessary.
|
||
* Audio
|
||
* [xians] Add a Content API where given an audio WebMediaStreamTrack, you
|
||
can register as a sink for that track.
|
||
* Move RendererMedia, the current local audio track sink interface, to
|
||
//media and change as necessary.
|
||
* Put a Chrome-side adapter on the libjingle audio track interface.
|
||
* Move the APM from libjingle to Chrome, putting it behind an experimental
|
||
flag to start with.
|
||
* Do format change notifications on the capture thread.
|
||
* Switch to a push model for received PeerConnection audio.
|
||
* Video
|
||
* [perkj] Add a Chrome-side interface representing a sink for a video
|
||
track.
|
||
* [perkj] Add a Content API where given a video WebMediaStreamTrack, you
|
||
can register as a sink for that track.
|
||
* Add a Chrome-side adapter for libjingle’s video track interface, which
|
||
may also need to change.
|
||
* Implement a Chrome-side VideoSource and constraints handling (currently
|
||
in libjingle).
|