-
Notifications
You must be signed in to change notification settings - Fork 3
/
TODO
75 lines (63 loc) · 1.76 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
TODO / MAIN ARCHITECTURE
TODO
-----------
- Extend Debug tab with more features
- Graphs?
- Filtering for specific trace levels
- More messages
- Add timestamps to chat messages
- Popup support
- Audio
- Simple audio recording
- Variable bitrate
- Change in settings
- Ping and speed/bandwidth detection
- Number of wakeups/packets/data /s
- Custom audio hooking into applications
- Chat messages fix min
- Test if next_resendable() actually works correctly
- Remove disconnected peers
- Detect if UDP connections get disconnected
- Maybe after 5 lost packets?
- Audio maybe add packet loss detection (fec in opus)
- TUI settings tab
- Audio options
- Input device
- Output device
- Bitrate
- Noise cancelling
- Split TUI into smaller chunks
- Send udp announce after disconnecting and reconnecting
from and to the rendezvous server
- Prepare the ringbuffer for unlimited connections
- Move InterthreadMessages to client only
- Reorganize dependencies
ARCHITECTURE
-----------
UDP messages
- Split full message into multiple smaller parts
- Reliable and unreliable message types
- Message id
- Incremented every message
- Different on every peer
CLIENT
- Threading: 3 channels
- IO Networking Thread
- GUI Thread
- FFMPEG Thread(s)
- Wakeup Thread for IO
Channels:
- GUI to IO
- IO to GUI
- FFMPEG to IO
- GUI to FFMPEG
UDP Hole Punching:
- C1 calls C2 VIA server
- C1 starts sending packets to server through UDP
- C2 picks up
- C2 start sending packet to server through UDP
- server informs both C1 and C2
that they can start connecting
- C1 starts sending packets to C2
- C2 starts sending packets to C1
- Connection established