scream

package
v0.0.0-...-7e6c5de Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 7, 2025 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package scream provides interceptors to implement SCReAM congestion control via cgo

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BandwidthEstimator

type BandwidthEstimator interface {
	GetTargetBitrate(ssrc uint32) (int, error)
	GetStats() map[string]interface{}
}

type NewPeerConnectionCallback

type NewPeerConnectionCallback func(id string, estimator BandwidthEstimator)

type RTPQueue

type RTPQueue interface {
	scream.RTPQueue
	// Enqueue adds a new packet to the end of the queue.
	Enqueue(packet *packet, ts float64)
	// Dequeue removes and returns the first packet in the queue.
	Dequeue() *packet
}

RTPQueue implements the packet queue which will be used by SCReAM to buffer packets

type ReceiverInterceptor

type ReceiverInterceptor struct {
	interceptor.NoOp
	// contains filtered or unexported fields
}

ReceiverInterceptor generates Feedback for SCReAM congestion control

func (*ReceiverInterceptor) BindRTCPWriter

BindRTCPWriter lets you modify any outgoing RTCP packets. It is called once per PeerConnection. The returned method will be called once per packet batch.

func (*ReceiverInterceptor) BindRemoteStream

BindRemoteStream lets you modify any incoming RTP packets. It is called once for per RemoteStream. The returned method will be called once per rtp packet.

func (*ReceiverInterceptor) Close

func (r *ReceiverInterceptor) Close() error

Close closes the interceptor.

func (*ReceiverInterceptor) UnbindRemoteStream

func (r *ReceiverInterceptor) UnbindRemoteStream(info *interceptor.StreamInfo)

UnbindRemoteStream is called when the Stream is removed. It can be used to clean up any data related to that track.

type ReceiverInterceptorFactory

type ReceiverInterceptorFactory struct {
	// contains filtered or unexported fields
}

ReceiverInterceptorFactory is a interceptor.Factory for a scream receiver interceptor

func NewReceiverInterceptor

func NewReceiverInterceptor(opts ...ReceiverOption) (*ReceiverInterceptorFactory, error)

NewReceiverInterceptor returns a new ReceiverInterceptor

func (*ReceiverInterceptorFactory) NewInterceptor

NewInterceptor constructs a new SCReAM receiver interceptor

type ReceiverOption

type ReceiverOption func(r *ReceiverInterceptor) error

ReceiverOption can be used to configure SenderInterceptor.

func ReceiverInterval

func ReceiverInterval(interval time.Duration) ReceiverOption

ReceiverInterval sets the feedback send interval for the interceptor

type SenderInterceptor

type SenderInterceptor struct {
	interceptor.NoOp
	// contains filtered or unexported fields
}

SenderInterceptor performs SCReAM congestion control

func (*SenderInterceptor) BindLocalStream

BindLocalStream lets you modify any outgoing RTP packets. It is called once for per LocalStream. The returned method will be called once per rtp packet.

func (*SenderInterceptor) BindRTCPReader

BindRTCPReader lets you modify any incoming RTCP packets. It is called once per sender/receiver, however this might change in the future. The returned method will be called once per packet batch.

func (*SenderInterceptor) Close

func (s *SenderInterceptor) Close() error

Close closes the interceptor

func (*SenderInterceptor) GetStats

func (s *SenderInterceptor) GetStats() map[string]interface{}

func (*SenderInterceptor) GetTargetBitrate

func (s *SenderInterceptor) GetTargetBitrate(ssrc uint32) (int, error)

GetTargetBitrate returns the target bitrate calculated by SCReAM in bps.

func (*SenderInterceptor) UnbindLocalStream

func (s *SenderInterceptor) UnbindLocalStream(info *interceptor.StreamInfo)

UnbindLocalStream is called when the Stream is removed. It can be used to clean up any data related to that track.

type SenderInterceptorFactory

type SenderInterceptorFactory struct {
	// contains filtered or unexported fields
}

func NewSenderInterceptor

func NewSenderInterceptor(opts ...SenderOption) (*SenderInterceptorFactory, error)

func (*SenderInterceptorFactory) NewInterceptor

func (f *SenderInterceptorFactory) NewInterceptor(id string) (interceptor.Interceptor, error)

func (*SenderInterceptorFactory) OnNewPeerConnection

func (f *SenderInterceptorFactory) OnNewPeerConnection(cb NewPeerConnectionCallback)

type SenderOption

type SenderOption func(r *SenderInterceptor) error

SenderOption can be used to configure SenderInterceptor.

func InitialBitrate

func InitialBitrate(rate float64) SenderOption

func MaxBitrate

func MaxBitrate(rate float64) SenderOption

func MinBitrate

func MinBitrate(rate float64) SenderOption

func SenderQueue

func SenderQueue(queueFactory func() RTPQueue) SenderOption

SenderQueue sets the factory function to create new RTP Queues for new streams.

func Tx

func Tx(tx *scream.Tx) SenderOption

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
⌂ 换网址