Versions in this module Expand all Collapse all v1 v1.9.12 Mar 3, 2026 v1.9.7 Oct 27, 2025 v1.9.6 Oct 23, 2025 v1.9.5 Oct 23, 2025 v1.9.4 Oct 23, 2025 v1.9.3 Oct 23, 2025 Changes in this version + const DefaultMaxLayerSpatial + const DefaultMaxLayerTemporal + const InitPacketBufferSizeAudio + const InitPacketBufferSizeVideo + const InvalidLayerSpatial + const InvalidLayerTemporal + const ReportDelta + var DefaultMaxLayer = VideoLayer + var DefaultVideoLayersRid = videoLayersRidQHF + var ErrDDExtentionNotFound = fmt.Errorf("dependency descriptor extension not found") + var ErrDDStructureAttachedToNonFirstPacket = fmt.Errorf("dependency descriptor structure is attached to non-first packet of a frame") + var ErrFrameEarlierThanKeyFrame = fmt.Errorf("frame is earlier than current keyframe") + var InvalidLayer = VideoLayer + func GetActiveDecodeTargetBitmask(layer VideoLayer, decodeTargets []DependencyDescriptorDecodeTarget) *uint32 + func GetSpatialLayerForRid(mimeType mime.MimeType, rid string, ti *livekit.TrackInfo) int32 + func GetSpatialLayerForVideoQuality(mimeType mime.MimeType, quality livekit.VideoQuality, ti *livekit.TrackInfo) int32 + func GetVideoLayerModeForMimeType(mimeType mime.MimeType, ti *livekit.TrackInfo) livekit.VideoLayer_Mode + func GetVideoLayersForMimeType(mimeType mime.MimeType, ti *livekit.TrackInfo) []*livekit.VideoLayer + func GetVideoQualityForSpatialLayer(mimeType mime.MimeType, spatialLayer int32, ti *livekit.TrackInfo) livekit.VideoQuality + func IsAV1KeyFrame(payload []byte) bool + func IsH264KeyFrame(payload []byte) bool + func IsH265KeyFrame(payload []byte) (kf bool) + func IsVP9KeyFrame(vp9 *codecs.VP9Packet, payload []byte) bool + func LayerPresenceFromTrackInfo(mimeType mime.MimeType, trackInfo *livekit.TrackInfo) *[livekit.VideoQuality_HIGH + 1]bool + func RidToSpatialLayer(mimeType mime.MimeType, rid string, trackInfo *livekit.TrackInfo, ...) int32 + func SpatialLayerToRid(mimeType mime.MimeType, layer int32, trackInfo *livekit.TrackInfo, ...) string + func SpatialLayerToVideoQuality(mimeType mime.MimeType, layer int32, trackInfo *livekit.TrackInfo) livekit.VideoQuality + func VPxPictureIdSizeDiff(mBit1 bool, mBit2 bool) int + func VideoQualityToRid(mimeType mime.MimeType, quality livekit.VideoQuality, ...) string + func VideoQualityToSpatialLayer(mimeType mime.MimeType, quality livekit.VideoQuality, ...) int32 + type BitReader struct + func NewBitReader(data []byte) *BitReader + func (br *BitReader) ReadBits(n int) (uint, error) + func (br *BitReader) ReadFlag() (bool, error) + func (br *BitReader) ReadSE() (int, error) + func (br *BitReader) ReadUE() (uint, error) + type Buffer struct + func NewBuffer(ssrc uint32, maxVideoPkts, maxAudioPkts int) *Buffer + func (b *Buffer) Bind(params webrtc.RTPParameters, codec webrtc.RTPCodecCapability, bitrates int) + func (b *Buffer) Close() error + func (b *Buffer) GetAudioLevel() (float64, bool) + func (b *Buffer) GetClockRate() uint32 + func (b *Buffer) GetDeltaStats() *StreamStatsWithLayers + func (b *Buffer) GetLastSenderReportTime() time.Time + func (b *Buffer) GetMediaSSRC() uint32 + func (b *Buffer) GetPacket(buff []byte, esn uint64) (int, error) + func (b *Buffer) GetSenderReportData() *livekit.RTCPSenderReportState + func (b *Buffer) GetStats() *livekit.RTPStats + func (b *Buffer) GetTemporalLayerFpsForSpatial(layer int32) []float32 + func (b *Buffer) OnClose(fn func()) + func (b *Buffer) OnCodecChange(fn func(webrtc.RTPCodecParameters)) + func (b *Buffer) OnFinalRtpStats(fn func(*livekit.RTPStats)) + func (b *Buffer) OnFpsChanged(f func()) + func (b *Buffer) OnRtcpFeedback(fn func(fb []rtcp.Packet)) + func (b *Buffer) OnRtcpSenderReport(fn func()) + func (b *Buffer) OnVideoSizeChanged(fn func([]VideoSize)) + func (b *Buffer) Read(buff []byte) (n int, err error) + func (b *Buffer) ReadExtended(buf []byte) (*ExtPacket, error) + func (b *Buffer) SendPLI(force bool) + func (b *Buffer) SetAudioLevelParams(audioLevelParams audio.AudioLevelParams) + func (b *Buffer) SetAudioLossProxying(enable bool) + func (b *Buffer) SetLastFractionLostReport(lost uint8) + func (b *Buffer) SetLogger(logger logger.Logger) + func (b *Buffer) SetPLIThrottle(duration int64) + func (b *Buffer) SetPaused(paused bool) + func (b *Buffer) SetPrimaryBufferForRTX(primaryBuffer *Buffer) + func (b *Buffer) SetRTT(rtt uint32) + func (b *Buffer) SetSenderReportData(rtpTime uint32, ntpTime uint64, packets uint32, octets uint32) + func (b *Buffer) SetTWCCAndExtID(twcc *twcc.Responder, extID uint8) + func (b *Buffer) Write(pkt []byte) (n int, err error) + type DataStats struct + func NewDataStats(params DataStatsParam) *DataStats + func (s *DataStats) Stop() + func (s *DataStats) ToProtoActive() *livekit.RTPStats + func (s *DataStats) ToProtoAggregateOnly() *livekit.RTPStats + func (s *DataStats) Update(bytes int, time int64) + type DataStatsParam struct + WindowDuration time.Duration + type DependencyDescriptorDecodeTarget struct + Layer VideoLayer + Target int + func ProcessFrameDependencyStructure(structure *dd.FrameDependencyStructure) []DependencyDescriptorDecodeTarget + func (dt *DependencyDescriptorDecodeTarget) String() string + type DependencyDescriptorParser struct + func NewDependencyDescriptorParser(ddExtID uint8, logger logger.Logger, onMaxLayerChanged func(int32, int32), ...) *DependencyDescriptorParser + func (r *DependencyDescriptorParser) Parse(pkt *rtp.Packet) (*ExtDependencyDescriptor, VideoLayer, error) + type ExtDependencyDescriptor struct + ActiveDecodeTargetsUpdated bool + DecodeTargets []DependencyDescriptorDecodeTarget + Descriptor *dd.DependencyDescriptor + ExtFrameNum uint64 + ExtKeyFrameNum uint64 + Integrity bool + RestartGeneration int + StructureUpdated bool + type ExtPacket struct + AbsCaptureTimeExt *act.AbsCaptureTime + Arrival int64 + DependencyDescriptor *ExtDependencyDescriptor + ExtSequenceNumber uint64 + ExtTimestamp uint64 + IsOutOfOrder bool + KeyFrame bool + Packet *rtp.Packet + Payload interface{} + RawPacket []byte + type Factory struct + func (f *Factory) GetBuffer(ssrc uint32) *Buffer + func (f *Factory) GetBufferPair(ssrc uint32) (*Buffer, *RTCPReader) + func (f *Factory) GetOrNew(packetType packetio.BufferPacketType, ssrc uint32) io.ReadWriteCloser + func (f *Factory) GetRTCPReader(ssrc uint32) *RTCPReader + func (f *Factory) SetRTXPair(repair, base uint32) + type FactoryOfBufferFactory struct + func NewFactoryOfBufferFactory(trackingPacketsVideo int, trackingPacketsAudio int) *FactoryOfBufferFactory + func (f *FactoryOfBufferFactory) CreateBufferFactory() *Factory + type FrameEntity struct + func (fe *FrameEntity) AddPacket(extSeq uint64, ddVal *dd.DependencyDescriptor) + func (fe *FrameEntity) Integrity() bool + func (fe *FrameEntity) Reset() + type FrameIntegrityChecker struct + func NewFrameIntegrityChecker(frameCount, packetCount int) *FrameIntegrityChecker + func (fc *FrameIntegrityChecker) AddPacket(extSeq uint64, extFrameNum uint64, ddVal *dd.DependencyDescriptor) + func (fc *FrameIntegrityChecker) FrameIntegrity(extFrameNum uint64) bool + type FrameRateCalculator interface + Completed func() bool + GetFrameRate func() []float32 + RecvPacket func(ep *ExtPacket) bool + type FrameRateCalculatorDD struct + func NewFrameRateCalculatorDD(clockRate uint32, logger logger.Logger) *FrameRateCalculatorDD + func (f *FrameRateCalculatorDD) Completed() bool + func (f *FrameRateCalculatorDD) GetFrameRateCalculatorForSpatial(spatial int32) *FrameRateCalculatorForDDLayer + func (f *FrameRateCalculatorDD) GetFrameRateForSpatial(spatial int32) []float32 + func (f *FrameRateCalculatorDD) RecvPacket(ep *ExtPacket) bool + func (f *FrameRateCalculatorDD) SetMaxLayer(spatial, temporal int32) + type FrameRateCalculatorForDDLayer struct + func (f *FrameRateCalculatorForDDLayer) GetFrameRate() []float32 + type FrameRateCalculatorForVP9Layer struct + func (f *FrameRateCalculatorForVP9Layer) GetFrameRate() []float32 + type FrameRateCalculatorH26x struct + func NewFrameRateCalculatorH26x(clockRate uint32, logger logger.Logger) *FrameRateCalculatorH26x + func (f *FrameRateCalculatorH26x) Completed() bool + func (f *FrameRateCalculatorH26x) GetFrameRate() []float32 + func (f *FrameRateCalculatorH26x) RecvPacket(ep *ExtPacket) bool + type FrameRateCalculatorVP8 struct + func NewFrameRateCalculatorVP8(clockRate uint32, logger logger.Logger) *FrameRateCalculatorVP8 + func (f *FrameRateCalculatorVP8) RecvPacket(ep *ExtPacket) bool + func (f FrameRateCalculatorVP8) Completed() bool + func (f FrameRateCalculatorVP8) GetFrameRate() []float32 + type FrameRateCalculatorVP9 struct + func NewFrameRateCalculatorVP9(clockRate uint32, logger logger.Logger) *FrameRateCalculatorVP9 + func (f *FrameRateCalculatorVP9) Completed() bool + func (f *FrameRateCalculatorVP9) GetFrameRateCalculatorForSpatial(spatial int32) *FrameRateCalculatorForVP9Layer + func (f *FrameRateCalculatorVP9) GetFrameRateForSpatial(spatial int32) []float32 + func (f *FrameRateCalculatorVP9) RecvPacket(ep *ExtPacket) bool + type PacketHistory struct + func NewPacketHistory(packetCount int) *PacketHistory + func (ph *PacketHistory) AddPacket(extSeq uint64) + func (ph *PacketHistory) PacketsConsecutive(start, end uint64) bool + type RTCPReader struct + func NewRTCPReader(ssrc uint32) *RTCPReader + func (r *RTCPReader) Close() error + func (r *RTCPReader) OnClose(fn func()) + func (r *RTCPReader) OnPacket(f func([]byte)) + func (r *RTCPReader) Read(_ []byte) (n int, err error) + func (r *RTCPReader) Write(p []byte) (n int, err error) + type SPSInfo struct + ChromaFormatIDC uint + CodedHeight uint + CodedWidth uint + ConfWinBottomOffset uint + ConfWinLeftOffset uint + ConfWinRightOffset uint + ConfWinTopOffset uint + ConformanceWindowFlag bool + DisplayHeight uint + DisplayWidth uint + PicHeightInLumaSamples uint + PicWidthInLumaSamples uint + type StreamStatsWithLayers struct + Layers map[int32]*rtpstats.RTPDeltaInfo + RTPStats *rtpstats.RTPDeltaInfo + RTPStatsRemoteView *rtpstats.RTPDeltaInfo + type VP8 struct + FirstByte byte + HeaderSize int + I bool + IsKeyFrame bool + K bool + KEYIDX uint8 + L bool + M bool + PictureID uint16 + S bool + T bool + TID uint8 + TL0PICIDX uint8 + Y bool + func (v *VP8) Marshal() ([]byte, error) + func (v *VP8) MarshalTo(buf []byte) (int, error) + func (v *VP8) Unmarshal(payload []byte) error + type VideoLayer struct + Spatial int32 + Temporal int32 + func (v VideoLayer) GreaterThan(v2 VideoLayer) bool + func (v VideoLayer) IsValid() bool + func (v VideoLayer) SpatialGreaterThanOrEqual(v2 VideoLayer) bool + func (v VideoLayer) String() string + type VideoLayersRid [DefaultMaxLayerSpatial + 1]string + func NormalizeVideoLayersRid(rids VideoLayersRid) VideoLayersRid + type VideoSize struct + Height uint32 + Width uint32 + func ExtractDependencyDescriptorVideoSize(dd *dd.DependencyDescriptor) []VideoSize + func ExtractH264VideoSize(payload []byte) VideoSize + func ExtractH265VideoSize(payload []byte) VideoSize + func ExtractVP8VideoSize(vp8Packet *VP8, payload []byte) VideoSize