Project

General

Profile

Moonshot » History » Version 2

Adrian Georgescu, 05/13/2015 02:35 AM

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