Documentation
¶
Index ¶
- Constants
- Variables
- func IsH264Keyframe(payload []byte) bool
- func VP8PictureIdSizeDiff(mBit1 bool, mBit2 bool) int
- type Bucket
- type Buffer
- func (b *Buffer) Bind(params webrtc.RTPParameters, codec webrtc.RTPCodecCapability, o Options)
- func (b *Buffer) Bitrate() int64
- func (b *Buffer) BitrateTemporalCumulative() []int64
- func (b *Buffer) Close() error
- func (b *Buffer) GetClockRate() uint32
- func (b *Buffer) GetMediaSSRC() uint32
- func (b *Buffer) GetPacket(buff []byte, sn uint16) (int, error)
- func (b *Buffer) GetSenderReportData() (rtpTime uint32, ntpTime uint64, lastReceivedTimeInNanosSinceEpoch int64)
- func (b *Buffer) GetStats() *StreamStatsWithLayers
- func (b *Buffer) OnAudioLevel(fn func(level uint8, durationMs uint32))
- func (b *Buffer) OnClose(fn func())
- func (b *Buffer) OnFeedback(fn func(fb []rtcp.Packet))
- func (b *Buffer) OnTransportWideCC(fn func(sn uint16, timeNS int64, marker bool))
- func (b *Buffer) Read(buff []byte) (n int, err error)
- func (b *Buffer) ReadExtended() (*ExtPacket, error)
- func (b *Buffer) SendPLI()
- func (b *Buffer) SetLastFractionLostReport(lost uint8)
- func (b *Buffer) SetLogger(logger logger.Logger)
- func (b *Buffer) SetPLIThrottle(duration int64)
- func (b *Buffer) SetRTT(rtt uint32)
- func (b *Buffer) SetSenderReportData(rtpTime uint32, ntpTime uint64)
- func (b *Buffer) Write(pkt []byte) (n int, err error)
- type ExtPacket
- type Factory
- type LayerStats
- type NackQueue
- type Options
- type RTCPReader
- type StreamStats
- type StreamStatsWithLayers
- type VP8
Constants ¶
View Source
const (
ReportDelta = 1e9
)
Variables ¶
Functions ¶
func IsH264Keyframe ¶ added in v0.15.0
IsH264Keyframe detects if h264 payload is a keyframe this code was taken from https://github.com/jech/galene/blob/codecs/rtpconn/rtpreader.go#L45 all credits belongs to Juliusz Chroboczek @jech and the awesome Galene SFU
func VP8PictureIdSizeDiff ¶
Types ¶
type Buffer ¶
Buffer contains all packets
func (*Buffer) BitrateTemporalCumulative ¶
BitrateTemporalCumulative returns the current publisher stream bitrate temporal layer accumulated with lower temporal layers.
func (*Buffer) GetClockRate ¶
GetClockRate returns the RTP clock rate
func (*Buffer) GetMediaSSRC ¶
GetMediaSSRC returns the associated SSRC of the RTP stream
func (*Buffer) GetSenderReportData ¶
func (b *Buffer) GetSenderReportData() (rtpTime uint32, ntpTime uint64, lastReceivedTimeInNanosSinceEpoch int64)
GetSenderReportData returns the rtp, ntp and nanos of the last sender report
func (*Buffer) GetStats ¶
func (b *Buffer) GetStats() *StreamStatsWithLayers
func (*Buffer) OnAudioLevel ¶
func (*Buffer) OnFeedback ¶
func (*Buffer) OnTransportWideCC ¶
func (*Buffer) ReadExtended ¶
func (*Buffer) SetLastFractionLostReport ¶
func (*Buffer) SetPLIThrottle ¶ added in v0.15.4
func (*Buffer) SetSenderReportData ¶
type Factory ¶
func NewBufferFactory ¶
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
type LayerStats ¶ added in v0.15.4
type NackQueue ¶ added in v0.15.0
type NackQueue struct {
// contains filtered or unexported fields
}
func NewNACKQueue ¶ added in v0.15.0
func NewNACKQueue() *NackQueue
type Options ¶
type Options struct {
MaxBitRate uint64
}
BufferOptions provides configuration options for the buffer
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))
type StreamStats ¶ added in v0.15.4
type StreamStats struct { TotalPrimaryPackets uint32 TotalPrimaryBytes uint64 TotalRetransmitPackets uint32 TotalRetransmitBytes uint64 TotalPaddingPackets uint32 TotalPaddingBytes uint64 TotalPacketsLost uint32 TotalFrames uint32 RTT uint32 Jitter float64 TotalNACKs uint32 TotalPLIs uint32 TotalFIRs uint32 }
type StreamStatsWithLayers ¶ added in v0.15.4
type StreamStatsWithLayers struct { StreamStats StreamStats Layers map[int]LayerStats }
type VP8 ¶
type VP8 struct { FirstByte byte PictureIDPresent int PictureID uint16 /* 8 or 16 bits, picture ID */ MBit bool TL0PICIDXPresent int TL0PICIDX uint8 /* 8 bits temporal level zero index */ // Optional Header If either of the T or K bits are set to 1, // the TID/Y/KEYIDX extension field MUST be present. TIDPresent int TID uint8 /* 2 bits temporal layer idx */ Y uint8 KEYIDXPresent int KEYIDX uint8 /* 5 bits of key frame idx */ HeaderSize int // IsKeyFrame is a helper to detect if current packet is a keyframe IsKeyFrame bool }
VP8 is a helper to get temporal data from VP8 packet header
VP8 Payload Descriptor 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ |X|R|N|S|R| PID | (REQUIRED) |X|R|N|S|R| PID | (REQUIRED) +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ X: |I|L|T|K| RSV | (OPTIONAL) X: |I|L|T|K| RSV | (OPTIONAL) +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ I: |M| PictureID | (OPTIONAL) I: |M| PictureID | (OPTIONAL) +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ L: | TL0PICIDX | (OPTIONAL) | PictureID | +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ T/K:|TID|Y| KEYIDX | (OPTIONAL) L: | TL0PICIDX | (OPTIONAL) +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ T/K:|TID|Y| KEYIDX | (OPTIONAL) +-+-+-+-+-+-+-+-+
Click to show internal directories.
Click to hide internal directories.