Moonshot
Version 6 (Adrian Georgescu, 05/13/2015 02:45 am)
1 | 3 | Adrian Georgescu | h1. Project Moonshot (a.k.a. WebSylk) |
---|---|---|---|
2 | 1 | Adrian Georgescu | |
3 | 4 | Adrian Georgescu | Adding WebRTC and 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 and Web-browsers. |
4 | 1 | Adrian Georgescu | |
5 | 1 | Adrian Georgescu | (Items in this list are not necessarily in order) |
6 | 1 | Adrian Georgescu | |
7 | 1 | Adrian Georgescu | h2. Add VP8 support to SIP SIMPLE Client SDK |
8 | 1 | Adrian Georgescu | |
9 | 1 | 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. |
10 | 1 | Adrian Georgescu | |
11 | 1 | Adrian Georgescu | We need to add support for it to the SDK so we can transparently interoperate with WebRTC endpoints without the need for transcoding. |
12 | 1 | Adrian Georgescu | |
13 | 1 | Adrian Georgescu | 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. |
14 | 1 | Adrian Georgescu | |
15 | 6 | Adrian Georgescu | h2. Extend SylkServer with a web framework |
16 | 5 | Adrian Georgescu | |
17 | 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. |
18 | 1 | Adrian Georgescu | |
19 | 1 | Adrian Georgescu | Example URLs: |
20 | 1 | Adrian Georgescu | |
21 | 1 | Adrian Georgescu | https://conference.sip2sip.info/sylk/conference/screen-sharing/ |
22 | 1 | Adrian Georgescu | https://conference.sip2sip.info/sylk/conference/ |
23 | 1 | Adrian Georgescu | https://conference.sip2sip.info/sylk/webrtcgateway/ |
24 | 6 | Adrian Georgescu | |
25 | 6 | Adrian Georgescu | When staring a conference room, SylkServer will advertise the following entry points: |
26 | 6 | Adrian Georgescu | |
27 | 6 | Adrian Georgescu | * A SIP address (all media possible) |
28 | 6 | Adrian Georgescu | * An optional phone number (audio only) |
29 | 6 | Adrian Georgescu | * An XMPP address (chat and optional audio/video) |
30 | 6 | Adrian Georgescu | * A WEB URL (all media is possible) |
31 | 6 | Adrian Georgescu | * IRC room (text only) |
32 | 1 | Adrian Georgescu | |
33 | 1 | Adrian Georgescu | |
34 | 1 | Adrian Georgescu | h2. Design SylkRTC |
35 | 1 | Adrian Georgescu | |
36 | 1 | Adrian Georgescu | The WebSocket API for gatewaying WebRTC endpoints to the SIP world. It needs to cover: |
37 | 1 | Adrian Georgescu | |
38 | 1 | Adrian Georgescu | h3. Phase 1 |
39 | 1 | Adrian Georgescu | |
40 | 1 | Adrian Georgescu | * Registration of multiple accounts |
41 | 1 | Adrian Georgescu | * Multiple sessions |
42 | 1 | Adrian Georgescu | * Audio / video sessions |
43 | 1 | Adrian Georgescu | |
44 | 1 | Adrian Georgescu | h3. Phase 2 |
45 | 1 | Adrian Georgescu | |
46 | 1 | Adrian Georgescu | * Chat |
47 | 1 | Adrian Georgescu | * Presence |
48 | 1 | Adrian Georgescu | * Contacts management |
49 | 1 | Adrian Georgescu | |
50 | 1 | Adrian Georgescu | h3. Phase 3 |
51 | 1 | Adrian Georgescu | |
52 | 1 | Adrian Georgescu | * File transfer |
53 | 1 | Adrian Georgescu | * Screen sharing |
54 | 1 | Adrian Georgescu | |
55 | 1 | Adrian Georgescu | |
56 | 1 | Adrian Georgescu | h2. Implement the gateway skeleton (first alpha release) |
57 | 1 | Adrian Georgescu | |
58 | 1 | Adrian Georgescu | It needs to cover: |
59 | 1 | Adrian Georgescu | |
60 | 1 | Adrian Georgescu | * Multiple accounts |
61 | 1 | Adrian Georgescu | * Single session per account |
62 | 1 | Adrian Georgescu | * Audio and video |
63 | 1 | Adrian Georgescu | |
64 | 1 | Adrian Georgescu | |
65 | 1 | Adrian Georgescu | h2. Gateway phase 2 |
66 | 1 | Adrian Georgescu | |
67 | 1 | Adrian Georgescu | * Chat |
68 | 1 | Adrian Georgescu | * Presence |
69 | 1 | Adrian Georgescu | * Contact management |
70 | 1 | Adrian Georgescu | |
71 | 1 | Adrian Georgescu | |
72 | 1 | Adrian Georgescu | h1. Other |
73 | 1 | Adrian Georgescu | |
74 | 1 | Adrian Georgescu | Random notes, thoughts, etc. |
75 | 1 | Adrian Georgescu | |
76 | 1 | Adrian Georgescu | |
77 | 1 | Adrian Georgescu | h2. Write our own Janus SIP plugin |
78 | 1 | Adrian Georgescu | |
79 | 1 | Adrian Georgescu | 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. |
80 | 1 | Adrian Georgescu | |
81 | 1 | Adrian Georgescu | The SylkRTC API would not change, but it should facilitate some features such as multiple sessions per account. |
82 | 1 | Adrian Georgescu | |
83 | 1 | Adrian Georgescu | h2. Multi-party video |
84 | 1 | Adrian Georgescu | |
85 | 1 | 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. |
86 | 1 | Adrian Georgescu | |
87 | 1 | Adrian Georgescu | Adding support for "transparent streams" (and sessions) might be required. 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. |
88 | 1 | Adrian Georgescu | |
89 | 1 | Adrian Georgescu | 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. |
90 | 1 | Adrian Georgescu | |
91 | 1 | Adrian Georgescu | I'm not sure if Janus supports simulcast. (sending one big picture and the rest as thumbnails) |
92 | 1 | Adrian Georgescu | |
93 | 1 | Adrian Georgescu | |
94 | 1 | Adrian Georgescu | h2. Streaming |
95 | 1 | Adrian Georgescu | |
96 | 1 | Adrian Georgescu | This can probably be offloaded to Janus. |