-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🧠 Substantial refactor of connection and routing logic #60
Conversation
Been testing this branch, it's definitely more reliable and at 5mbps I see somewhat decreased packet loss and grey frames. Using callgrind I see no obvious places in code that waste lots of CPU, previously thumbnail generation alone was ~50% of CPU usage and relay threads another ~25% (seemingly due to constructing a byte vector in an inefficient way) @haydenmc why not just merge this as is and then add back thumbnail generation? I mean it works great :) |
…ransport glomming together multiple UDP payloads.
This payload is a substantial refactor of several parts of the project to address longstanding technical debt and pave the way for automated testing.
JanusFtl
and refactored into several classes with clearer separation of responsibilities:FtlServer
,FtlControlConnection
, andFtlStream
.FtlStream
class now works to maintain the order of incoming RTP packets, more intelligently sends NACKs for groups of missing packets instead of one-at-a-time, and calculates additional stats such as running average bitrate.JanusFtl
handling ofFtlStream
objects and associatedJanusSession
viewers, removingFtlStreamStore
.RelayThreadPool
, as the performance benefits were not yet made clear, and it often resulted in packets being delivered out-of-ordershared_ptr
instances withunique_ptr
and plain reference passing.JANUS_LOG
andrtp.h
utility functions.Result<T>
type introduced to better indicate success/failure of an operation.