rtcp

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Oct 1, 2018 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Goodbye

type Goodbye struct {
	// The SSRC/CSRC identifiers that are no longer active
	Sources []uint32
	// Optional text indicating the reason for leaving, e.g., "camera malfunction" or "RTP loop detected"
	Reason string
}

The Goodbye packet indicates that one or more sources are no longer active.

func (Goodbye) Marshal

func (g Goodbye) Marshal() ([]byte, error)

Marshal encodes the Goodbye packet in binary

func (*Goodbye) Unmarshal

func (g *Goodbye) Unmarshal(rawPacket []byte) error

Unmarshal decodes the Goodbye packet from binary

type Header struct {
	// If the padding bit is set, this individual RTCP packet contains
	// some additional padding octets at the end which are not part of
	// the control information but are included in the length field.
	Padding bool
	// The number of reception reports, sources contained or FMT in this packet (depending on the Type)
	Count uint8
	// The RTCP packet type for this packet
	Type PacketType
	// The length of this RTCP packet in 32-bit words minus one,
	// including the header and any padding.
	Length uint16
}

A Header is the common header shared by all RTCP packets

func (Header) Marshal

func (h Header) Marshal() ([]byte, error)

Marshal encodes the Header in binary

func (*Header) Unmarshal

func (h *Header) Unmarshal(rawPacket []byte) error

Unmarshal decodes the Header from binary

type Packet

type Packet interface {
	Marshal() ([]byte, error)
	Unmarshal(rawPacket []byte) error
}

Packet represents an RTCP packet, a protocol used for out-of-band statistics and control information for an RTP session

type PacketType

type PacketType uint8

PacketType specifies the type of an RTCP packet

const (
	TypeSenderReport            PacketType = 200 // RFC 3550, 6.4.1
	TypeReceiverReport          PacketType = 201 // RFC 3550, 6.4.2
	TypeSourceDescription       PacketType = 202 // RFC 3550, 6.5
	TypeGoodbye                 PacketType = 203 // RFC 3550, 6.6
	TypeApplicationDefined      PacketType = 204 // RFC 3550, 6.7 (unimplemented)
	TypePayloadSpecificFeedback PacketType = 206 // RFC 4585, 6.3

)

RTCP packet types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-4

func (PacketType) String

func (p PacketType) String() string

type PictureLossIndication

type PictureLossIndication struct {
	// SSRC of sender
	SenderSSRC uint32

	// SSRC where the loss was experienced
	MediaSSRC uint32
}

The PictureLossIndication packet informs the encoder about the loss of an undefined amount of coded video data belonging to one or more pictures

func (PictureLossIndication) Marshal

func (p PictureLossIndication) Marshal() ([]byte, error)

Marshal encodes the PictureLossIndication in binary

func (*PictureLossIndication) Unmarshal

func (p *PictureLossIndication) Unmarshal(rawPacket []byte) error

Unmarshal decodes the PictureLossIndication from binary

type Reader

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

A Reader reads packets from an RTCP combined packet.

func NewReader

func NewReader(r io.Reader) *Reader

NewReader creates a new Reader reading from r.

func (*Reader) ReadPacket

func (r *Reader) ReadPacket() (header Header, data []byte, err error)

ReadPacket reads one packet from r.

It returns the parsed packet Header and a byte slice containing the encoded packet data (including the header). How the packet data is parsed depends on the Type field contained in the Header.

type ReceiverReport

type ReceiverReport struct {
	// The synchronization source identifier for the originator of this RR packet.
	SSRC uint32
	// Zero or more reception report blocks depending on the number of other
	// sources heard by this sender since the last report. Each reception report
	// block conveys statistics on the reception of RTP packets from a
	// single synchronization source.
	Reports []ReceptionReport
}

A ReceiverReport (RR) packet provides reception quality feedback for an RTP stream

func (ReceiverReport) Marshal

func (r ReceiverReport) Marshal() ([]byte, error)

Marshal encodes the ReceiverReport in binary

func (*ReceiverReport) Unmarshal

func (r *ReceiverReport) Unmarshal(rawPacket []byte) error

Unmarshal decodes the ReceiverReport from binary

type ReceptionReport

type ReceptionReport struct {
	// The SSRC identifier of the source to which the information in this
	// reception report block pertains.
	SSRC uint32
	// The fraction of RTP data packets from source SSRC lost since the
	// previous SR or RR packet was sent, expressed as a fixed point
	// number with the binary point at the left edge of the field.
	FractionLost uint8
	// The total number of RTP data packets from source SSRC that have
	// been lost since the beginning of reception.
	TotalLost uint32
	// The low 16 bits contain the highest sequence number received in an
	// RTP data packet from source SSRC, and the most significant 16
	// bits extend that sequence number with the corresponding count of
	// sequence number cycles.
	LastSequenceNumber uint32
	// An estimate of the statistical variance of the RTP data packet
	// interarrival time, measured in timestamp units and expressed as an
	// unsigned integer.
	Jitter uint32
	// The middle 32 bits out of 64 in the NTP timestamp received as part of
	// the most recent RTCP sender report (SR) packet from source SSRC. If no
	// SR has been received yet, the field is set to zero.
	LastSenderReport uint32
	// The delay, expressed in units of 1/65536 seconds, between receiving the
	// last SR packet from source SSRC and sending this reception report block.
	// If no SR packet has been received yet from SSRC, the field is set to zero.
	Delay uint32
}

A ReceptionReport block conveys statistics on the reception of RTP packets from a single synchronization source.

func (ReceptionReport) Marshal

func (r ReceptionReport) Marshal() ([]byte, error)

Marshal encodes the ReceptionReport in binary

func (*ReceptionReport) Unmarshal

func (r *ReceptionReport) Unmarshal(rawPacket []byte) error

Unmarshal decodes the ReceptionReport from binary

type SDESType

type SDESType uint8

SDESType is the item type used in the RTCP SDES control packet.

const (
	SDESEnd      SDESType = iota // end of SDES list                RFC 3550, 6.5
	SDESCNAME                    // canonical name                  RFC 3550, 6.5.1
	SDESName                     // user name                       RFC 3550, 6.5.2
	SDESEmail                    // user's electronic mail address  RFC 3550, 6.5.3
	SDESPhone                    // user's phone number             RFC 3550, 6.5.4
	SDESLocation                 // geographic user location        RFC 3550, 6.5.5
	SDESTool                     // name of application or tool     RFC 3550, 6.5.6
	SDESNote                     // notice about the source         RFC 3550, 6.5.7
	SDESPrivate                  // private extensions              RFC 3550, 6.5.8  (not implemented)
)

RTP SDES item types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5

func (SDESType) String

func (s SDESType) String() string

type SenderReport

type SenderReport struct {
	// The synchronization source identifier for the originator of this SR packet.
	SSRC uint32
	// The wallclock time when this report was sent so that it may be used in
	// combination with timestamps returned in reception reports from other
	// receivers to measure round-trip propagation to those receivers.
	NTPTime uint64
	// Corresponds to the same time as the NTP timestamp (above), but in
	// the same units and with the same random offset as the RTP
	// timestamps in data packets. This correspondence may be used for
	// intra- and inter-media synchronization for sources whose NTP
	// timestamps are synchronized, and may be used by media-independent
	// receivers to estimate the nominal RTP clock frequency.
	RTPTime uint32
	// The total number of RTP data packets transmitted by the sender
	// since starting transmission up until the time this SR packet was
	// generated.
	PacketCount uint32
	// The total number of payload octets (i.e., not including header or
	// padding) transmitted in RTP data packets by the sender since
	// starting transmission up until the time this SR packet was
	// generated.
	OctetCount uint32
	// Zero or more reception report blocks depending on the number of other
	// sources heard by this sender since the last report. Each reception report
	// block conveys statistics on the reception of RTP packets from a
	// single synchronization source.
	Reports []ReceptionReport
}

A SenderReport (SR) packet provides reception quality feedback for an RTP stream

func (SenderReport) Marshal

func (r SenderReport) Marshal() ([]byte, error)

Marshal encodes the SenderReport in binary

func (*SenderReport) Unmarshal

func (r *SenderReport) Unmarshal(rawPacket []byte) error

Unmarshal decodes the SenderReport from binary

type SourceDescription

type SourceDescription struct {
	Chunks []SourceDescriptionChunk
}

A SourceDescription (SDES) packet describes the sources in an RTP stream.

func (SourceDescription) Marshal

func (s SourceDescription) Marshal() ([]byte, error)

Marshal encodes the SourceDescription in binary

func (*SourceDescription) Unmarshal

func (s *SourceDescription) Unmarshal(rawPacket []byte) error

Unmarshal decodes the SourceDescription from binary

type SourceDescriptionChunk

type SourceDescriptionChunk struct {
	// The source (ssrc) or contributing source (csrc) identifier this packet describes
	Source uint32
	Items  []SourceDescriptionItem
}

A SourceDescriptionChunk contains items describing a single RTP source

func (SourceDescriptionChunk) Marshal

func (s SourceDescriptionChunk) Marshal() ([]byte, error)

Marshal encodes the SourceDescriptionChunk in binary

func (*SourceDescriptionChunk) Unmarshal

func (s *SourceDescriptionChunk) Unmarshal(rawPacket []byte) error

Unmarshal decodes the SourceDescriptionChunk from binary

type SourceDescriptionItem

type SourceDescriptionItem struct {
	// The type identifier for this item. eg, SDESCNAME for canonical name description.
	//
	// Type zero or SDESEnd is interpreted as the end of an item list and cannot be used.
	Type SDESType
	// Text is a unicode text blob associated with the item. Its meaning varies based on the item's Type.
	Text string
}

A SourceDescriptionItem is a part of a SourceDescription that describes a stream.

func (SourceDescriptionItem) Marshal

func (s SourceDescriptionItem) Marshal() ([]byte, error)

Marshal encodes the SourceDescriptionItem in binary

func (*SourceDescriptionItem) Unmarshal

func (s *SourceDescriptionItem) Unmarshal(rawPacket []byte) error

Unmarshal decodes the SourceDescriptionItem from binary

Jump to

Keyboard shortcuts

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