2,045 bytes added,
19:26, 6 May 2012 = getUserMedia Implementation Roadmap =
== Goal ==
* Implement the getUserMedia specification on 3 platforms: Desktop, Android and B2G.
* Includes the following uses of getUserMedia:
<pre>
getUserMedia({picture:true}, onsuccess(Blob blob), onerror);
getUserMedia({video:true,audio:true}, onsuccess(MediaStream stream), onerror);
video.src = stream;
audio.src = stream;
</pre>
* Appropriate permission, notification and status UIs.
== Phase 1 ==
* Implement image capture {picture:true} API
** Android: {{bug|738528}} [Anant]
** B2G: {{bug|749886}} [Fabrice]
** Desktop: {{bug|749887}} [???]
*** ({{bug|692955}} tracking <input> on Desktop, reuse possible. {{bug|748835}} tracking UI).
* Define common abstraction "MediaEngine" for device access across multiple platforms.
** Cross-plaform: {{bug|750943}} [Suhas/Anant]
*** (crypt's version in {{bug|739566}})
* Define "chrome" extensions to MediaStreams for privileged JS code (and B2G's) use. This includes CameraControl features (https://wiki.mozilla.org/WebAPI/CameraControl).
** Cross-platform: {{bug|752352}} [Fabrice/Anant?]
* Implement a fallback backend for MediaEngine (when hardware support not available, returnMediaStream with white noise, for example).
** Cross-platform: {{bug|752351}} [???]
* Write DOM bindings for getUserMedia (backed with Fallback MediaEngine).
** Cross-platform: {{bug|752353}} [Anant]
*** (split code from {{bug|691234}} into this one)
== Phase 2 ==
* Implement MediaEngine backends:
** Android: bug ??? (either based on Android NDK/SDK, or, webrtc.org code).
** B2G: bug ??? [Fabrice] (based on Gonk).
** Desktop: {{bug|691234}} [Anant] (based on webrtc.org code).
== Phase 3 ==
* Implement permissions, notification & status UI
** Android: bug ???
** B2G: bug ???
** Desktop: {{bug|729522}} [???]
Once UI lands, getUserMedia may be pref'ed on.
== Phase 4 and beyond ==
* Implement file backend for MediaEngine.
* Refactor getUserMedia{picture:true} implementations to use MediaEngine + privileged MediaStreams and CameraControl APIs.