buffer

package
v1.12.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	InitPacketBufferSizeVideo = 300
	InitPacketBufferSizeAudio = 70
)
View Source
const (
	InvalidLayerSpatial  = int32(-1)
	InvalidLayerTemporal = int32(-1)

	DefaultMaxLayerSpatial  = int32(2)
	DefaultMaxLayerTemporal = int32(3)
)

Variables

View Source
var (
	ErrFrameEarlierThanKeyFrame            = fmt.Errorf("frame is earlier than current keyframe")
	ErrDDStructureAttachedToNonFirstPacket = fmt.Errorf("dependency descriptor structure is attached to non-first packet of a frame")
	ErrDDExtentionNotFound                 = fmt.Errorf("dependency descriptor extension not found")
)
View Source
var (
	InvalidLayer = VideoLayer{
		Spatial:  InvalidLayerSpatial,
		Temporal: InvalidLayerTemporal,
	}

	DefaultMaxLayer = VideoLayer{
		Spatial:  DefaultMaxLayerSpatial,
		Temporal: DefaultMaxLayerTemporal,
	}
)
View Source
var (
	DefaultVideoLayersRid = videoLayersRidQHF
)
View Source
var (
	ExtDependencyDescriptorFactory = &sync.Pool{
		New: func() any {
			return &ExtDependencyDescriptor{}
		},
	}
)
View Source
var (
	ExtPacketFactory = &sync.Pool{
		New: func() any {
			return &ExtPacket{}
		},
	}
)

Functions

func ExtractDependencyDescriptorVideoSize added in v1.9.1

func ExtractDependencyDescriptorVideoSize(dd *dd.DependencyDescriptor) []codec.VideoSize

func GetActiveDecodeTargetBitmask added in v1.4.2

func GetActiveDecodeTargetBitmask(layer VideoLayer, decodeTargets []DependencyDescriptorDecodeTarget) *uint32

func GetSpatialLayerForRid added in v1.9.1

func GetSpatialLayerForRid(mimeType mime.MimeType, rid string, ti *livekit.TrackInfo) int32

func GetSpatialLayerForVideoQuality added in v1.9.1

func GetSpatialLayerForVideoQuality(mimeType mime.MimeType, quality livekit.VideoQuality, ti *livekit.TrackInfo) int32

func GetVideoLayerModeForMimeType added in v1.9.1

func GetVideoLayerModeForMimeType(mimeType mime.MimeType, ti *livekit.TrackInfo) livekit.VideoLayer_Mode

func GetVideoLayersForMimeType added in v1.9.1

func GetVideoLayersForMimeType(mimeType mime.MimeType, ti *livekit.TrackInfo) []*livekit.VideoLayer

func GetVideoQualityForSpatialLayer added in v1.9.1

func GetVideoQualityForSpatialLayer(mimeType mime.MimeType, spatialLayer int32, ti *livekit.TrackInfo) livekit.VideoQuality

func LayerPresenceFromTrackInfo added in v1.2.1

func LayerPresenceFromTrackInfo(mimeType mime.MimeType, trackInfo *livekit.TrackInfo) *[livekit.VideoQuality_HIGH + 1]bool

func ReleaseExtDependencyDescriptor added in v1.9.8

func ReleaseExtDependencyDescriptor(extDD *ExtDependencyDescriptor)

func ReleaseExtPacket added in v1.9.8

func ReleaseExtPacket(extPkt *ExtPacket)

func RidToSpatialLayer added in v1.2.1

func RidToSpatialLayer(mimeType mime.MimeType, rid string, trackInfo *livekit.TrackInfo, ridSpace VideoLayersRid) int32

func SpatialLayerToRid added in v1.2.1

func SpatialLayerToRid(mimeType mime.MimeType, layer int32, trackInfo *livekit.TrackInfo, ridSpace VideoLayersRid) string

func SpatialLayerToVideoQuality added in v1.2.1

func SpatialLayerToVideoQuality(mimeType mime.MimeType, layer int32, trackInfo *livekit.TrackInfo) livekit.VideoQuality

func VideoQualityToRid added in v1.2.1

func VideoQualityToRid(mimeType mime.MimeType, quality livekit.VideoQuality, trackInfo *livekit.TrackInfo, ridSpace VideoLayersRid) string

func VideoQualityToSpatialLayer added in v1.2.1

func VideoQualityToSpatialLayer(mimeType mime.MimeType, quality livekit.VideoQuality, trackInfo *livekit.TrackInfo) int32

Types

type Buffer

type Buffer struct {
	*BufferBase
	// contains filtered or unexported fields
}

Buffer contains all packets

func NewBuffer

func NewBuffer(ssrc uint32, maxVideoPkts, maxAudioPkts int) *Buffer

func (*Buffer) Bind

func (b *Buffer) Bind(params webrtc.RTPParameters, codec webrtc.RTPCodecCapability, bitrates int) error

func (*Buffer) Close

func (b *Buffer) Close() error

func (*Buffer) NotifyRTX added in v1.9.10

func (b *Buffer) NotifyRTX(ssrc uint32, repairSSRC uint32, rsid string)

func (*Buffer) OnClose

func (b *Buffer) OnClose(fn func())

func (*Buffer) OnFinalRtpStats added in v1.4.0

func (b *Buffer) OnFinalRtpStats(fn func(*livekit.RTPStats))

func (*Buffer) OnNotifyRTX added in v1.9.10

func (b *Buffer) OnNotifyRTX(fn func(ssrc uint32, repairSSRC uint32, rsid string))

func (*Buffer) OnRtcpFeedback added in v0.15.7

func (b *Buffer) OnRtcpFeedback(fn func(fb []rtcp.Packet))

func (*Buffer) Read

func (b *Buffer) Read(buff []byte) (n int, err error)

func (*Buffer) SetAudioLossProxying added in v1.6.0

func (b *Buffer) SetAudioLossProxying(enable bool)

func (*Buffer) SetLastFractionLostReport

func (b *Buffer) SetLastFractionLostReport(lost uint8)

func (*Buffer) SetPrimaryBufferForRTX added in v1.5.3

func (b *Buffer) SetPrimaryBufferForRTX(primaryBuffer *Buffer)

func (*Buffer) SetTWCCAndExtID added in v1.5.3

func (b *Buffer) SetTWCCAndExtID(twcc *twcc.Responder, extID uint8)

func (*Buffer) Write

func (b *Buffer) Write(pkt []byte) (n int, err error)

Write adds an RTP Packet, ordering is not guaranteed, newer packets may arrive later

type BufferBase added in v1.9.10

type BufferBase struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewBufferBase added in v1.9.10

func NewBufferBase(params BufferBaseParams) *BufferBase

func (*BufferBase) Bind added in v1.9.10

func (b *BufferBase) Bind(rtpParameters webrtc.RTPParameters, codec webrtc.RTPCodecCapability, bitrate int) error

func (*BufferBase) BindLocked added in v1.9.10

func (b *BufferBase) BindLocked(rtpParameters webrtc.RTPParameters, codec webrtc.RTPCodecCapability, bitrate int) error

func (*BufferBase) CloseWithReason added in v1.9.10

func (b *BufferBase) CloseWithReason(reason string) (stats *livekit.RTPStats, err error)

func (*BufferBase) GetAudioLevel added in v1.9.10

func (b *BufferBase) GetAudioLevel() (float64, bool)

func (*BufferBase) GetDeltaStats added in v1.9.10

func (b *BufferBase) GetDeltaStats() *StreamStatsWithLayers

func (*BufferBase) GetDeltaStatsLite added in v1.9.10

func (b *BufferBase) GetDeltaStatsLite() *rtpstats.RTPDeltaInfoLite

func (*BufferBase) GetLastSenderReportTime added in v1.9.10

func (b *BufferBase) GetLastSenderReportTime() time.Time

func (*BufferBase) GetNACKPairs added in v1.9.10

func (b *BufferBase) GetNACKPairs() []rtcp.NackPair

func (*BufferBase) GetNACKPairsLocked added in v1.9.10

func (b *BufferBase) GetNACKPairsLocked() []rtcp.NackPair

func (*BufferBase) GetPacket added in v1.9.10

func (b *BufferBase) GetPacket(buff []byte, esn uint64) (int, error)

func (*BufferBase) GetRtcpReceptionReportLocked added in v1.9.10

func (b *BufferBase) GetRtcpReceptionReportLocked(proxyLoss uint8) *rtcp.ReceptionReport

func (*BufferBase) GetSenderReportData added in v1.9.10

func (b *BufferBase) GetSenderReportData() *livekit.RTCPSenderReportState

func (*BufferBase) GetStats added in v1.9.10

func (b *BufferBase) GetStats() *livekit.RTPStats

func (*BufferBase) GetTemporalLayerFpsForSpatial added in v1.9.10

func (b *BufferBase) GetTemporalLayerFpsForSpatial(layer int32) []float32

func (*BufferBase) HandleIncomingPacket added in v1.9.10

func (b *BufferBase) HandleIncomingPacket(
	rawPkt []byte,
	rtpPacket *rtp.Packet,
	arrivalTime int64,
	isBuffered bool,
	isRTX bool,
	skippedSeqs []uint16,
	oobSequenceNumber uint16,
) (uint64, error)

func (*BufferBase) HandleIncomingPacketLocked added in v1.9.10

func (b *BufferBase) HandleIncomingPacketLocked(
	rawPkt []byte,
	rtpPacket *rtp.Packet,
	arrivalTime int64,
	isBuffered bool,
	isRTX bool,
	skippedSeqs []uint16,
	oobSequenceNumber uint16,
) (uint64, error)

func (*BufferBase) IsClosed added in v1.9.10

func (b *BufferBase) IsClosed() bool

func (*BufferBase) MarkForRestartStream added in v1.9.12

func (b *BufferBase) MarkForRestartStream(reason string)

func (*BufferBase) MaxAudioPkts added in v1.9.10

func (b *BufferBase) MaxAudioPkts() int

func (*BufferBase) MaxVideoPkts added in v1.9.10

func (b *BufferBase) MaxVideoPkts() int

func (*BufferBase) NotifyRead added in v1.9.10

func (b *BufferBase) NotifyRead()

func (*BufferBase) OnCodecChange added in v1.9.10

func (b *BufferBase) OnCodecChange(fn func(webrtc.RTPCodecParameters))

func (*BufferBase) OnFpsChanged added in v1.9.10

func (b *BufferBase) OnFpsChanged(f func())

func (*BufferBase) OnRtcpSenderReport added in v1.9.10

func (b *BufferBase) OnRtcpSenderReport(fn func())

func (*BufferBase) OnStreamRestart added in v1.9.10

func (b *BufferBase) OnStreamRestart(fn func(string))

func (*BufferBase) OnVideoSizeChanged added in v1.9.10

func (b *BufferBase) OnVideoSizeChanged(fn func([]codec.VideoSize))

func (*BufferBase) ReadExtended added in v1.9.10

func (b *BufferBase) ReadExtended(buf []byte) (*ExtPacket, error)

func (*BufferBase) RestartOOBSequenceNumber added in v1.10.0

func (b *BufferBase) RestartOOBSequenceNumber(reason string)

func (*BufferBase) RestartStream added in v1.9.10

func (b *BufferBase) RestartStream(reason string)

func (*BufferBase) SSRC added in v1.9.10

func (b *BufferBase) SSRC() uint32

func (*BufferBase) SendPLI added in v1.9.10

func (b *BufferBase) SendPLI(force bool)

func (*BufferBase) SetAudioLevelConfig added in v1.9.10

func (b *BufferBase) SetAudioLevelConfig(audioLevelConfig audio.AudioLevelConfig)

func (*BufferBase) SetLogger added in v1.9.10

func (b *BufferBase) SetLogger(lgr logger.Logger)

func (*BufferBase) SetPLIThrottle added in v1.9.10

func (b *BufferBase) SetPLIThrottle(duration int64)

func (*BufferBase) SetPaused added in v1.9.10

func (b *BufferBase) SetPaused(paused bool)

func (*BufferBase) SetRTT added in v1.9.10

func (b *BufferBase) SetRTT(rtt uint32)

func (*BufferBase) SetSenderReportData added in v1.9.10

func (b *BufferBase) SetSenderReportData(srData *livekit.RTCPSenderReportState)

func (*BufferBase) SetStreamRestartDetection added in v1.9.10

func (b *BufferBase) SetStreamRestartDetection(enable bool)

func (*BufferBase) StartKeyFrameSeeder added in v1.9.10

func (b *BufferBase) StartKeyFrameSeeder()

func (*BufferBase) StopKeyFrameSeeder added in v1.9.10

func (b *BufferBase) StopKeyFrameSeeder()

func (*BufferBase) WaitRead added in v1.9.10

func (b *BufferBase) WaitRead()

type BufferBaseParams added in v1.9.10

type BufferBaseParams struct {
	SSRC                uint32
	MaxVideoPkts        int
	MaxAudioPkts        int
	LoggerComponents    []string
	SendPLI             func()
	IsReportingEnabled  bool
	IsOOBSequenceNumber bool
	IsDDRestartEnabled  bool
}

type BufferProvider added in v1.9.10

type BufferProvider interface {
	SetLogger(lgr logger.Logger)
	SetAudioLevelConfig(audioLevelConfig audio.AudioLevelConfig)
	SetStreamRestartDetection(enable bool)
	SetPLIThrottle(duration int64)
	SetRTT(rtt uint32)
	SetPaused(paused bool)

	SendPLI(force bool)

	ReadExtended(buf []byte) (*ExtPacket, error)
	GetPacket(buf []byte, esn uint64) (int, error)

	GetAudioLevel() (float64, bool)
	GetTemporalLayerFpsForSpatial(layer int32) []float32
	GetStats() *livekit.RTPStats
	GetDeltaStats() *StreamStatsWithLayers
	GetDeltaStatsLite() *rtpstats.RTPDeltaInfoLite
	GetLastSenderReportTime() time.Time
	GetNACKPairs() []rtcp.NackPair

	SetSenderReportData(srData *livekit.RTCPSenderReportState)
	GetSenderReportData() *livekit.RTCPSenderReportState

	OnRtcpSenderReport(fn func())
	OnFpsChanged(fn func())
	OnVideoSizeChanged(fn func([]codec.VideoSize))
	OnCodecChange(fn func(webrtc.RTPCodecParameters))
	OnStreamRestart(fn func(string))

	StartKeyFrameSeeder()
	StopKeyFrameSeeder()

	HandleIncomingPacket(
		rawPkt []byte,
		rtpPacket *rtp.Packet,
		arrivalTime int64,
		isBuffered bool,
		isRTX bool,
		skippedSeqs []uint16,
		oobSequenceNumber uint16,
	) (uint64, error)

	MarkForRestartStream(reason string)
	RestartStream(reason string)

	CloseWithReason(reason string) (*livekit.RTPStats, error)
}

type DataStats added in v0.15.6

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

func NewDataStats added in v0.15.6

func NewDataStats(params DataStatsParam) *DataStats

func (*DataStats) Stop added in v0.15.6

func (s *DataStats) Stop()

func (*DataStats) ToProtoActive added in v0.15.6

func (s *DataStats) ToProtoActive() *livekit.RTPStats

func (*DataStats) ToProtoAggregateOnly added in v0.15.6

func (s *DataStats) ToProtoAggregateOnly() *livekit.RTPStats

func (*DataStats) Update added in v0.15.6

func (s *DataStats) Update(bytes int, time int64)

type DataStatsParam added in v0.15.6

type DataStatsParam struct {
	WindowDuration time.Duration
}

type DependencyDescriptorDecodeTarget added in v1.4.2

type DependencyDescriptorDecodeTarget struct {
	Target int
	Layer  VideoLayer
}

func ProcessFrameDependencyStructure added in v1.4.2

func ProcessFrameDependencyStructure(structure *dd.FrameDependencyStructure) []DependencyDescriptorDecodeTarget

func (*DependencyDescriptorDecodeTarget) String added in v1.5.1

type DependencyDescriptorParser added in v1.0.0

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

func NewDependencyDescriptorParser added in v1.0.0

func NewDependencyDescriptorParser(ddExtID uint8, logger logger.Logger, onMaxLayerChanged func(int32, int32), enableRestart bool) *DependencyDescriptorParser

func (*DependencyDescriptorParser) Parse added in v1.0.0

type ExtDependencyDescriptor added in v1.4.4

type ExtDependencyDescriptor struct {
	Descriptor *dd.DependencyDescriptor

	DecodeTargets              []DependencyDescriptorDecodeTarget
	StructureUpdated           bool
	ActiveDecodeTargetsUpdated bool
	Integrity                  bool
	ExtFrameNum                uint64
	// the frame number of the keyframe which the current frame depends on
	ExtKeyFrameNum uint64

	// increase when the stream restarts, clear and reinitialize all dd state includes
	// attached structure, frame chain, decode target.
	RestartGeneration int
}

type ExtPacket

type ExtPacket struct {
	VideoLayer
	Arrival              int64
	ExtSequenceNumber    uint64
	ExtTimestamp         uint64
	Packet               *rtp.Packet
	Payload              any
	IsKeyFrame           bool
	RawPacket            []byte
	DependencyDescriptor *ExtDependencyDescriptor
	AbsCaptureTimeExt    *act.AbsCaptureTime
	IsOutOfOrder         bool
	IsBuffered           bool
}

type Factory

type Factory struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func (*Factory) GetBuffer

func (f *Factory) GetBuffer(ssrc uint32) *Buffer

func (*Factory) GetBufferPair

func (f *Factory) GetBufferPair(ssrc uint32) (*Buffer, *RTCPReader)

func (*Factory) GetOrNew

func (f *Factory) GetOrNew(packetType packetio.BufferPacketType, ssrc uint32) io.ReadWriteCloser

func (*Factory) GetRTCPReader

func (f *Factory) GetRTCPReader(ssrc uint32) *RTCPReader

func (*Factory) SetRTXPair added in v1.5.3

func (f *Factory) SetRTXPair(repair, base uint32, rsid string)

type FactoryOfBufferFactory added in v1.3.2

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

func NewFactoryOfBufferFactory added in v1.3.2

func NewFactoryOfBufferFactory(trackingPacketsVideo int, trackingPacketsAudio int) *FactoryOfBufferFactory

func (*FactoryOfBufferFactory) CreateBufferFactory added in v1.3.2

func (f *FactoryOfBufferFactory) CreateBufferFactory() *Factory

type FrameEntity added in v1.4.5

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

func (*FrameEntity) AddPacket added in v1.4.5

func (fe *FrameEntity) AddPacket(extSeq uint64, ddVal *dd.DependencyDescriptor)

func (*FrameEntity) Integrity added in v1.4.5

func (fe *FrameEntity) Integrity() bool

func (*FrameEntity) Reset added in v1.4.5

func (fe *FrameEntity) Reset()

type FrameIntegrityChecker added in v1.4.5

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

func NewFrameIntegrityChecker added in v1.4.5

func NewFrameIntegrityChecker(frameCount, packetCount int) *FrameIntegrityChecker

func (*FrameIntegrityChecker) AddPacket added in v1.4.5

func (fc *FrameIntegrityChecker) AddPacket(extSeq uint64, extFrameNum uint64, ddVal *dd.DependencyDescriptor)

func (*FrameIntegrityChecker) FrameIntegrity added in v1.4.5

func (fc *FrameIntegrityChecker) FrameIntegrity(extFrameNum uint64) bool

type FrameRateCalculator added in v1.3.0

type FrameRateCalculator interface {
	RecvPacket(ep *ExtPacket) bool
	GetFrameRate() []float32
	Completed() bool
}

type FrameRateCalculatorDD added in v1.3.0

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

FrameRateCalculator based on Dependency descriptor

func NewFrameRateCalculatorDD added in v1.3.0

func NewFrameRateCalculatorDD(clockRate uint32, logger logger.Logger) *FrameRateCalculatorDD

func (*FrameRateCalculatorDD) Completed added in v1.3.0

func (f *FrameRateCalculatorDD) Completed() bool

func (*FrameRateCalculatorDD) GetFrameRateCalculatorForSpatial added in v1.3.0

func (f *FrameRateCalculatorDD) GetFrameRateCalculatorForSpatial(spatial int32) *FrameRateCalculatorForDDLayer

func (*FrameRateCalculatorDD) GetFrameRateForSpatial added in v1.3.0

func (f *FrameRateCalculatorDD) GetFrameRateForSpatial(spatial int32) []float32

func (*FrameRateCalculatorDD) RecvPacket added in v1.3.0

func (f *FrameRateCalculatorDD) RecvPacket(ep *ExtPacket) bool

func (*FrameRateCalculatorDD) SetMaxLayer added in v1.3.0

func (f *FrameRateCalculatorDD) SetMaxLayer(spatial, temporal int32)

type FrameRateCalculatorForDDLayer added in v1.3.0

type FrameRateCalculatorForDDLayer struct {
	*FrameRateCalculatorDD
	// contains filtered or unexported fields
}

func (*FrameRateCalculatorForDDLayer) GetFrameRate added in v1.3.0

func (f *FrameRateCalculatorForDDLayer) GetFrameRate() []float32

type FrameRateCalculatorForVP9Layer added in v1.4.2

type FrameRateCalculatorForVP9Layer struct {
	*FrameRateCalculatorVP9
	// contains filtered or unexported fields
}

func (*FrameRateCalculatorForVP9Layer) GetFrameRate added in v1.4.2

func (f *FrameRateCalculatorForVP9Layer) GetFrameRate() []float32

type FrameRateCalculatorH26x added in v1.8.4

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

func NewFrameRateCalculatorH26x added in v1.8.4

func NewFrameRateCalculatorH26x(clockRate uint32, logger logger.Logger) *FrameRateCalculatorH26x

func (*FrameRateCalculatorH26x) Completed added in v1.8.4

func (f *FrameRateCalculatorH26x) Completed() bool

func (*FrameRateCalculatorH26x) GetFrameRate added in v1.8.4

func (f *FrameRateCalculatorH26x) GetFrameRate() []float32

func (*FrameRateCalculatorH26x) RecvPacket added in v1.8.4

func (f *FrameRateCalculatorH26x) RecvPacket(ep *ExtPacket) bool

type FrameRateCalculatorVP8 added in v1.3.0

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

FrameRateCalculator based on PictureID in VP8

func NewFrameRateCalculatorVP8 added in v1.3.0

func NewFrameRateCalculatorVP8(clockRate uint32, logger logger.Logger) *FrameRateCalculatorVP8

func (FrameRateCalculatorVP8) Completed added in v1.3.0

func (f FrameRateCalculatorVP8) Completed() bool

func (FrameRateCalculatorVP8) GetFrameRate added in v1.3.0

func (f FrameRateCalculatorVP8) GetFrameRate() []float32

func (*FrameRateCalculatorVP8) RecvPacket added in v1.3.0

func (f *FrameRateCalculatorVP8) RecvPacket(ep *ExtPacket) bool

type FrameRateCalculatorVP9 added in v1.4.2

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

FrameRateCalculator based on PictureID in VP9

func NewFrameRateCalculatorVP9 added in v1.4.2

func NewFrameRateCalculatorVP9(clockRate uint32, logger logger.Logger) *FrameRateCalculatorVP9

func (*FrameRateCalculatorVP9) Completed added in v1.4.2

func (f *FrameRateCalculatorVP9) Completed() bool

func (*FrameRateCalculatorVP9) GetFrameRateCalculatorForSpatial added in v1.4.2

func (f *FrameRateCalculatorVP9) GetFrameRateCalculatorForSpatial(spatial int32) *FrameRateCalculatorForVP9Layer

func (*FrameRateCalculatorVP9) GetFrameRateForSpatial added in v1.4.2

func (f *FrameRateCalculatorVP9) GetFrameRateForSpatial(spatial int32) []float32

func (*FrameRateCalculatorVP9) RecvPacket added in v1.4.2

func (f *FrameRateCalculatorVP9) RecvPacket(ep *ExtPacket) bool

type PacketHistory added in v1.4.5

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

func NewPacketHistory added in v1.4.5

func NewPacketHistory(packetCount int) *PacketHistory

func (*PacketHistory) AddPacket added in v1.4.5

func (ph *PacketHistory) AddPacket(extSeq uint64)

func (*PacketHistory) PacketsConsecutive added in v1.4.5

func (ph *PacketHistory) PacketsConsecutive(start, end uint64) bool

type RTCPReader

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

func NewRTCPReader

func NewRTCPReader(ssrc uint32) *RTCPReader

func (*RTCPReader) Close

func (r *RTCPReader) Close() error

func (*RTCPReader) OnClose

func (r *RTCPReader) OnClose(fn func())

func (*RTCPReader) OnPacket

func (r *RTCPReader) OnPacket(f func([]byte))

func (*RTCPReader) Read

func (r *RTCPReader) Read(_ []byte) (n int, err error)

func (*RTCPReader) Write

func (r *RTCPReader) Write(p []byte) (n int, err error)

type StreamStatsWithLayers added in v0.15.4

type StreamStatsWithLayers struct {
	RTPStats *rtpstats.RTPDeltaInfo
	Layers   map[int32]*rtpstats.RTPDeltaInfo

	RTPStatsRemoteView *rtpstats.RTPDeltaInfo
}

type VideoLayer added in v1.0.0

type VideoLayer struct {
	Spatial  int32
	Temporal int32
}

func (VideoLayer) GreaterThan added in v1.0.0

func (v VideoLayer) GreaterThan(v2 VideoLayer) bool

func (VideoLayer) IsValid added in v1.0.0

func (v VideoLayer) IsValid() bool

func (VideoLayer) SpatialGreaterThanOrEqual added in v1.0.0

func (v VideoLayer) SpatialGreaterThanOrEqual(v2 VideoLayer) bool

func (VideoLayer) String added in v1.0.0

func (v VideoLayer) String() string

type VideoLayersRid added in v1.9.1

type VideoLayersRid [DefaultMaxLayerSpatial + 1]string

func NormalizeVideoLayersRid added in v1.9.1

func NormalizeVideoLayersRid(rids VideoLayersRid) VideoLayersRid

Jump to

Keyboard shortcuts

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