Documentation
¶
Overview ¶
Package algorithms contains the algorithms for node selection
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Algorithm ¶
type Algorithm interface { // UpdateSFUStatus tell the algorithm that the SFU graph and the computation and communication quality has changed // `current` is the changed SFU's current status // `reports` is a series of Quality Report // `expected` is that which SFU's status should change UpdateSFUStatus(current []*pb.SFUStatus, reports []*pb.QualityReport) (expected []*pb.SFUStatus) }
Algorithm is the node selection algorithm interface
type AtomReport ¶
type AtomReport interface{}
type Processor ¶
type Processor interface { // Init set the AddTrack, RemoveTrack and OnBroken func and init the output track from Processor // Should be NON-BLOCK! // after you created a new track, please call AddTrack // before you close a track, please call RemoveTrack // when occurred error, please call OnBroken Init( AddTrack func(webrtc.TrackLocal) (*webrtc.RTPSender, error), RemoveTrack func(*webrtc.RTPSender) error, OnBroken func(badGay error), ) error // AddInTrack add a input track to Processor // Will be called AFTER InitOutTrack! // read video from `remote` process it and write the result to the output track // r/w should stop when error occurred // Should be NON-BLOCK! AddInTrack(SID string, remote *webrtc.TrackRemote, receiver *webrtc.RTPReceiver) error // UpdateProcedure update the procedure in the Processor UpdateProcedure(procedure *pb.ProceedTrack) error }
Processor is a processor that can process webrtc.TrackRemote and output webrtc.TrackLocal MULTI-THREAD access!!! Should implemented in THREAD-SAFE!!!
type ProcessorFactory ¶
type ReportGathererBuilder ¶
type ReportGathererBuilder interface { // NewGatherer : get SessionReport from i and put TransmissionReport to o NewGatherer(src, dst *ion.Node, i <-chan SessionReport, o chan<- *pb.TransmissionReport) }
ReportGathererBuilder : How to analysis SessionReport and give TransmissionReport?
type ReporterInterceptor ¶
type ReporterInterceptor interface { interceptor.Interceptor // BindReportChannel : put report to o BindReportChannel(o chan<- AtomReport) }
ReporterInterceptor : How to analysis the RTP/RTCP packet and give report?
type ReporterInterceptorFactory ¶
type ReporterInterceptorFactory interface {
NewInterceptor(id string) (ReporterInterceptor, error)
}
ReporterInterceptorFactory just a interceptor.Factory for ReporterInterceptor
type SessionReport ¶
type SessionReport struct {
SID, UID string
Report AtomReport
}
Click to show internal directories.
Click to hide internal directories.