Documentation ¶
Overview ¶
Package rtp provides RTP packetizer and depacketizer
Index ¶
- type AbsSendTimeExtension
- type AudioLevelExtension
- type Depacketizer
- type Extension
- type Header
- func (h *Header) DelExtension(id uint8) error
- func (h *Header) GetExtension(id uint8) []byte
- func (h *Header) GetExtensionIDs() []uint8
- func (h *Header) Marshal() (buf []byte, err error)
- func (h *Header) MarshalSize() int
- func (h *Header) MarshalTo(buf []byte) (n int, err error)
- func (h *Header) SetExtension(id uint8, payload []byte) error
- func (h *Header) Unmarshal(buf []byte) (n int, err error)
- type Packet
- type Packetizer
- type PartitionHeadChecker
- type Payloader
- type Sequencer
- type TransportCCExtension
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AbsSendTimeExtension ¶
type AbsSendTimeExtension struct {
Timestamp uint64
}
AbsSendTimeExtension is a extension payload format in http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
func NewAbsSendTimeExtension ¶
func NewAbsSendTimeExtension(sendTime time.Time) *AbsSendTimeExtension
NewAbsSendTimeExtension makes new AbsSendTimeExtension from time.Time.
func (*AbsSendTimeExtension) Estimate ¶
func (t *AbsSendTimeExtension) Estimate(receive time.Time) time.Time
Estimate absolute send time according to the receive time. Note that if the transmission delay is larger than 64 seconds, estimated time will be wrong.
func (*AbsSendTimeExtension) Marshal ¶
func (t *AbsSendTimeExtension) Marshal() ([]byte, error)
Marshal serializes the members to buffer.
func (*AbsSendTimeExtension) Unmarshal ¶
func (t *AbsSendTimeExtension) Unmarshal(rawData []byte) error
Unmarshal parses the passed byte slice and stores the result in the members.
type AudioLevelExtension ¶
AudioLevelExtension is a extension payload format described in https://tools.ietf.org/html/rfc6464
Implementation based on: https://chromium.googlesource.com/external/webrtc/+/e2a017725570ead5946a4ca8235af27470ca0df9/webrtc/modules/rtp_rtcp/source/rtp_header_extensions.cc#49
One byte format: 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID | len=0 |V| level | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Two byte format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID | len=1 |V| level | 0 (pad) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
func (*AudioLevelExtension) Marshal ¶
func (a *AudioLevelExtension) Marshal() ([]byte, error)
Marshal serializes the members to buffer
func (*AudioLevelExtension) Unmarshal ¶
func (a *AudioLevelExtension) Unmarshal(rawData []byte) error
Unmarshal parses the passed byte slice and stores the result in the members
type Depacketizer ¶
type Depacketizer interface { IsDetectedFinalPacketInSequence(rtpPacketMarketBit bool) bool Unmarshal(packet []byte) ([]byte, error) }
Depacketizer depacketizes a RTP payload, removing any RTP specific data from the payload
type Extension ¶
type Extension struct {
// contains filtered or unexported fields
}
Extension RTP Header extension
type Header ¶
type Header struct { Version uint8 Padding bool Extension bool Marker bool PayloadType uint8 SequenceNumber uint16 Timestamp uint32 SSRC uint32 CSRC []uint32 ExtensionProfile uint16 Extensions []Extension }
Header represents an RTP packet header
func (*Header) DelExtension ¶
DelExtension Removes an RTP Header extension
func (*Header) GetExtension ¶
GetExtension returns an RTP header extension
func (*Header) GetExtensionIDs ¶
GetExtensionIDs returns an extension id array
func (*Header) MarshalSize ¶
MarshalSize returns the size of the header once marshaled.
func (*Header) SetExtension ¶
SetExtension sets an RTP header extension
type Packet ¶
Packet represents an RTP Packet
func (*Packet) MarshalSize ¶
MarshalSize returns the size of the packet once marshaled.
type Packetizer ¶
type Packetizer interface { Packetize(payload []byte, samples uint32) []*Packet EnableAbsSendTime(value int) SkipSamples(skippedSamples uint32) }
Packetizer packetizes a payload
func NewPacketizer ¶
func NewPacketizer(mtu int, pt uint8, ssrc uint32, payloader Payloader, sequencer Sequencer, clockRate uint32) Packetizer
NewPacketizer returns a new instance of a Packetizer for a specific payloader
type PartitionHeadChecker ¶
PartitionHeadChecker is the interface that checks whether the packet is keyframe or not
type Sequencer ¶
Sequencer generates sequential sequence numbers for building RTP packets
func NewFixedSequencer ¶
NewFixedSequencer returns a new sequencer starting from a specific sequence number
func NewRandomSequencer ¶
func NewRandomSequencer() Sequencer
NewRandomSequencer returns a new sequencer starting from a random sequence number
type TransportCCExtension ¶
type TransportCCExtension struct {
TransportSequence uint16
}
TransportCCExtension is a extension payload format in https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 0xBE | 0xDE | length=1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID | L=1 |transport-wide sequence number | zero padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
func (*TransportCCExtension) Marshal ¶
func (t *TransportCCExtension) Marshal() ([]byte, error)
Marshal serializes the members to buffer
func (*TransportCCExtension) Unmarshal ¶
func (t *TransportCCExtension) Unmarshal(rawData []byte) error
Unmarshal parses the passed byte slice and stores the result in the members