Help us shape the future of Go! Take the 2026 Go Developer Survey

pacer

package
v1.13.11 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	PacketFactory = &sync.Pool{
		New: func() any {
			return &Packet{}
		},
	}
)

Functions

This section is empty.

Types

type Base

type Base struct {
	*ProbeObserver
	// contains filtered or unexported fields
}

func NewBase

func NewBase(logger logger.Logger, bwe bwe.BWE) *Base

func (*Base) SendPacket

func (b *Base) SendPacket(p *Packet) (int, error)

func (*Base) SetBitrate added in v1.4.5

func (b *Base) SetBitrate(_bitrate int)

func (*Base) SetInterval added in v1.4.5

func (b *Base) SetInterval(_interval time.Duration)

func (*Base) TimeSinceLastSentPacket added in v1.8.1

func (b *Base) TimeSinceLastSentPacket() time.Duration

type LeakyBucket added in v1.4.5

type LeakyBucket struct {
	*Base
	// contains filtered or unexported fields
}

func NewLeakyBucket added in v1.4.5

func NewLeakyBucket(logger logger.Logger, bwe bwe.BWE, interval time.Duration, bitrate int) *LeakyBucket

func (*LeakyBucket) Enqueue added in v1.4.5

func (l *LeakyBucket) Enqueue(p *Packet)

func (*LeakyBucket) SetBitrate added in v1.4.5

func (l *LeakyBucket) SetBitrate(bitrate int)

func (*LeakyBucket) SetInterval added in v1.4.5

func (l *LeakyBucket) SetInterval(interval time.Duration)

func (*LeakyBucket) Stop added in v1.4.5

func (l *LeakyBucket) Stop()

type NoQueue

type NoQueue struct {
	*Base
	// contains filtered or unexported fields
}

func NewNoQueue

func NewNoQueue(logger logger.Logger, bwe bwe.BWE) *NoQueue

func (*NoQueue) Enqueue

func (n *NoQueue) Enqueue(p *Packet)

func (*NoQueue) Stop

func (n *NoQueue) Stop()

type Pacer

type Pacer interface {
	Enqueue(p *Packet)
	Stop()

	SetInterval(interval time.Duration)
	SetBitrate(bitrate int)

	TimeSinceLastSentPacket() time.Duration

	SetPacerProbeObserverListener(listener PacerProbeObserverListener)
	StartProbeCluster(pci ccutils.ProbeClusterInfo)
	EndProbeCluster(probeClusterId ccutils.ProbeClusterId) ccutils.ProbeClusterInfo
}

type PacerBehavior added in v1.9.0

type PacerBehavior string
const (
	PacerBehaviorPassThrough PacerBehavior = "pass-through"
	PacerBehaviorNoQueue     PacerBehavior = "no-queue"
	PacerBehaviorLeakybucket PacerBehavior = "leaky-bucket"
)

type PacerProbeObserverListener added in v1.8.1

type PacerProbeObserverListener interface {
	OnPacerProbeObserverClusterComplete(probeClusterId ccutils.ProbeClusterId)
}

type Packet

type Packet struct {
	Header             *rtp.Header
	HeaderPool         *sync.Pool
	HeaderSize         int
	Payload            []byte
	IsRTX              bool
	ProbeClusterId     ccutils.ProbeClusterId
	IsProbe            bool
	AbsSendTimeExtID   uint8
	TransportWideExtID uint8
	WriteStream        webrtc.TrackLocalWriter
	Pool               *sync.Pool
	PoolEntity         *[]byte
	// contains filtered or unexported fields
}

func (*Packet) HoldExtension added in v1.13.8

func (p *Packet) HoldExtension(ext []byte) []byte

HoldExtension copies ext into the next free scratch slot, which the header can point at until SendPacket returns. It returns nil when ext does not fit or every slot is held.

type PassThrough

type PassThrough struct {
	*Base
}

func NewPassThrough

func NewPassThrough(logger logger.Logger, bwe bwe.BWE) *PassThrough

func (*PassThrough) Enqueue

func (p *PassThrough) Enqueue(pkt *Packet)

func (*PassThrough) Stop

func (p *PassThrough) Stop()

type ProbeObserver added in v1.8.1

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

func NewProbeObserver added in v1.8.1

func NewProbeObserver(logger logger.Logger) *ProbeObserver

func (*ProbeObserver) EndProbeCluster added in v1.8.1

func (po *ProbeObserver) EndProbeCluster(probeClusterId ccutils.ProbeClusterId) ccutils.ProbeClusterInfo

func (*ProbeObserver) RecordPacket added in v1.8.1

func (po *ProbeObserver) RecordPacket(size int, isRTX bool, probeClusterId ccutils.ProbeClusterId, isProbe bool)

func (*ProbeObserver) SetPacerProbeObserverListener added in v1.8.1

func (po *ProbeObserver) SetPacerProbeObserverListener(listener PacerProbeObserverListener)

func (*ProbeObserver) StartProbeCluster added in v1.8.1

func (po *ProbeObserver) StartProbeCluster(pci ccutils.ProbeClusterInfo)

Jump to

Keyboard shortcuts

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