Project

General

Profile

Moonshot » History » Version 13

Adrian Georgescu, 08/11/2015 10:17 AM

1 3 Adrian Georgescu
h1. Project Moonshot (a.k.a. WebSylk)
2 1 Adrian Georgescu
3 12 Adrian Georgescu
Adding WebRTC and multiparty video capability to SylkServer. This will allow anyone with basic computer knowledge to setup a zero-configuration meeting point that can be used to join a multi-party conference using standards-based clients like SIP, XMPP, IRC and Web-browsers. Also, it will allow third-parties to develop their own front-ends based on a web based API.
4 1 Adrian Georgescu
5
(Items in this list are not necessarily in order)
6
7
h2. Add VP8 support to SIP SIMPLE Client SDK
8
9 10 Adrian Georgescu
WebRTC mandates implementing both VP8 and H264, but the H264 part is getting quite some resistance. The current state (as of 12th of May 2015) is: Chrome does not implement H264, and in Firefox it has to be manually enabled through the advanced configuration menu. We need to add support for it to the SDK so we can transparently interoperate with WebRTC endpoints without the need for transcoding. Apparently libvpx already has VP9 support, which is currently behind a flag in Chrome, it's probably a good idea to try to add it too.
10 1 Adrian Georgescu
11 13 Adrian Georgescu
h2. Adding support for "transparent streams" to SIP SIMPLE Client SDK.
12 12 Adrian Georgescu
13 6 Adrian Georgescu
h2. Extend SylkServer with a web framework
14 5 Adrian Georgescu
15 6 Adrian Georgescu
Using such framework any web based application can tap into. Different applications might need to serve web content: screensharing images, conference web page, WebRTC endpoint, etc. There should be a single HTTP(S) endpoint where applications tap into and serve content.
16 1 Adrian Georgescu
17
Example URLs:
18
19
https://conference.sip2sip.info/sylk/conference/screen-sharing/
20
https://conference.sip2sip.info/sylk/conference/
21
https://conference.sip2sip.info/sylk/webrtcgateway/
22 6 Adrian Georgescu
23
When staring a conference room, SylkServer will advertise the following entry points:
24
25 1 Adrian Georgescu
 * A SIP address (all media possible)
26 6 Adrian Georgescu
 * An optional phone number (audio only)
27
 * An  XMPP address (chat and optional audio/video)
28
 * A WEB URL (all media is possible)
29
 * IRC room (text only)
30 1 Adrian Georgescu
31 10 Adrian Georgescu
h2. Design WebSylk
32 1 Adrian Georgescu
33
The WebSocket API for gatewaying WebRTC endpoints to the SIP world. It needs to cover:
34
35
h3. Phase 1
36
37
* Registration of multiple accounts
38
* Multiple sessions
39
* Audio / video sessions
40
41
h3. Phase 2
42
43
* Chat
44
* Presence
45
* Contacts management
46
47
h3. Phase 3
48
49
* File transfer
50 8 Adrian Georgescu
* Screen sharing
51 10 Adrian Georgescu
* Documents shared editing (may need additional resources)
52 1 Adrian Georgescu
53
h2. Implement the gateway skeleton (first alpha release)
54
55
It needs to cover:
56
57
* Multiple accounts
58
* Single session per account
59
* Audio and video
60
61
h2. Gateway phase 2
62
63
* Chat
64
* Presence
65
* Contact management
66
67
h1. Other
68
69
Random notes, thoughts.
70
71
h2. Write our own Janus SIP plugin
72
73
Based on the existing one, but using PJSIP instead. It will become clearer once we are further in the project. We'd use just the SIP signaling part, not any media capability, that's taken care of.
74
75 10 Adrian Georgescu
The WebSylk API would not change, but it should facilitate some features such as multiple sessions per account.
76 1 Adrian Georgescu
77
h2. Multi-party video
78
79 12 Adrian Georgescu
There is a Janus plugin for that, maybe we can leverage it. Adding support for this to our SDK is a no go, in it's current state. Basically we'd need a Session which doesn't really handle media, but it takes some SDP that got passed to it and deals with it. We'd use multiple Video streams in a single session, and some way to correlate them, probably piggibacking on what WebRTC already does with BUNDLE, for example. Not sure if Janus supports simulcast. (sending one big picture and the rest as thumbnails)
80 1 Adrian Georgescu
81
82
h2. Streaming
83
84 10 Adrian Georgescu
This can probably be offloaded to Janus, we will contribute the patches upstream.