Documentation ¶
Index ¶
- Constants
- func Unmarshal(rawPacket []byte) (Packet, Header, error)
- type Goodbye
- type Header
- type NackPair
- type Packet
- type PacketBitmap
- type PacketType
- type PictureLossIndication
- type RapidResynchronizationRequest
- func (p *RapidResynchronizationRequest) DestinationSSRC() []uint32
- func (p *RapidResynchronizationRequest) Header() Header
- func (p RapidResynchronizationRequest) Marshal() ([]byte, error)
- func (p *RapidResynchronizationRequest) String() string
- func (p *RapidResynchronizationRequest) Unmarshal(rawPacket []byte) error
- type RawPacket
- type Reader
- type ReceiverReport
- type ReceptionReport
- type SDESType
- type SLIEntry
- type SenderReport
- type SliceLossIndication
- type SourceDescription
- type SourceDescriptionChunk
- type SourceDescriptionItem
- type TransportLayerNack
Constants ¶
const ( FormatSLI uint8 = 2 FormatPLI uint8 = 1 FormatTLN uint8 = 1 FormatRRR uint8 = 5 )
Transport and Payload specific feedback messages overload the count field to act as a message type. those are listed here
Variables ¶
This section is empty.
Functions ¶
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) DestinationSSRC ¶ added in v1.2.0
DestinationSSRC returns an array of SSRC values that this packet refers to.
type Header ¶
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
type NackPair ¶ added in v1.2.0
type NackPair struct { // ID of lost packets PacketID uint16 // Bitmask of following lost packets LostPackets PacketBitmap }
NackPair is a wire-representation of a collection of Lost RTP packets
func (*NackPair) PacketList ¶ added in v1.2.0
PacketList returns a list of Nack'd packets that's referenced by a NackPair
type Packet ¶
type Packet interface { Header() Header // DestinationSSRC returns an array of SSRC values that this packet refers to. DestinationSSRC() []uint32 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 PacketBitmap ¶ added in v1.2.0
type PacketBitmap uint16
PacketBitmap shouldn't be used like a normal integral, so it's type is masked here. Access it with PacketList().
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) TypeTransportSpecificFeedback PacketType = 205 // RFC 4585, 6051 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 // contains filtered or unexported fields }
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) DestinationSSRC ¶ added in v1.2.0
func (p *PictureLossIndication) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*PictureLossIndication) Header ¶ added in v1.2.0
func (p *PictureLossIndication) Header() Header
Header returns the Header associated with this packet.
func (PictureLossIndication) Marshal ¶
func (p PictureLossIndication) Marshal() ([]byte, error)
Marshal encodes the PictureLossIndication in binary
func (*PictureLossIndication) String ¶ added in v1.2.0
func (p *PictureLossIndication) String() string
func (*PictureLossIndication) Unmarshal ¶
func (p *PictureLossIndication) Unmarshal(rawPacket []byte) error
Unmarshal decodes the PictureLossIndication from binary
type RapidResynchronizationRequest ¶ added in v1.2.0
type RapidResynchronizationRequest struct { // SSRC of sender SenderSSRC uint32 // SSRC of the media source MediaSSRC uint32 }
The RapidResynchronizationRequest packet informs the encoder about the loss of an undefined amount of coded video data belonging to one or more pictures
func (*RapidResynchronizationRequest) DestinationSSRC ¶ added in v1.2.0
func (p *RapidResynchronizationRequest) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*RapidResynchronizationRequest) Header ¶ added in v1.2.0
func (p *RapidResynchronizationRequest) Header() Header
Header returns the Header associated with this packet.
func (RapidResynchronizationRequest) Marshal ¶ added in v1.2.0
func (p RapidResynchronizationRequest) Marshal() ([]byte, error)
Marshal encodes the RapidResynchronizationRequest in binary
func (*RapidResynchronizationRequest) String ¶ added in v1.2.0
func (p *RapidResynchronizationRequest) String() string
func (*RapidResynchronizationRequest) Unmarshal ¶ added in v1.2.0
func (p *RapidResynchronizationRequest) Unmarshal(rawPacket []byte) error
Unmarshal decodes the RapidResynchronizationRequest from binary
type RawPacket ¶ added in v1.2.0
type RawPacket []byte
RawPacket represents an unparsed RTCP packet. It's returned by Unmarshal when a packet with an unknown type is encountered.
func (*RawPacket) DestinationSSRC ¶ added in v1.2.0
DestinationSSRC returns an array of SSRC values that this packet refers to.
type Reader ¶
type Reader struct {
// contains filtered or unexported fields
}
A Reader reads packets from an RTCP combined packet.
func (*Reader) ReadPacket ¶
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 // extra data from the end of the packet; the application can parse this if needed. ProfileExtensions []byte }
A ReceiverReport (RR) packet provides reception quality feedback for an RTP stream
func (*ReceiverReport) DestinationSSRC ¶ added in v1.2.0
func (r *ReceiverReport) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*ReceiverReport) Header ¶ added in v1.2.0
func (r *ReceiverReport) Header() Header
Header returns the Header associated with this packet.
func (ReceiverReport) Marshal ¶
func (r ReceiverReport) Marshal() ([]byte, error)
Marshal encodes the ReceiverReport in binary
func (ReceiverReport) String ¶ added in v1.2.0
func (r ReceiverReport) String() string
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
type SLIEntry ¶ added in v1.2.0
type SLIEntry struct { // ID of first lost slice First uint16 // Number of lost slices Number uint16 // ID of related picture Picture uint8 }
SLIEntry represents a single entry to the SLI packet's list of lost slices.
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) DestinationSSRC ¶ added in v1.2.0
func (r *SenderReport) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*SenderReport) Header ¶ added in v1.2.0
func (r *SenderReport) Header() Header
Header returns the Header associated with this packet.
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 SliceLossIndication ¶ added in v1.2.0
type SliceLossIndication struct { // SSRC of sender SenderSSRC uint32 // SSRC of the media source MediaSSRC uint32 SLI []SLIEntry }
The SliceLossIndication packet informs the encoder about the loss of a picture slice
func (*SliceLossIndication) DestinationSSRC ¶ added in v1.2.0
func (p *SliceLossIndication) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*SliceLossIndication) Header ¶ added in v1.2.0
func (p *SliceLossIndication) Header() Header
Header returns the Header associated with this packet.
func (SliceLossIndication) Marshal ¶ added in v1.2.0
func (p SliceLossIndication) Marshal() ([]byte, error)
Marshal encodes the SliceLossIndication in binary
func (*SliceLossIndication) String ¶ added in v1.2.0
func (p *SliceLossIndication) String() string
func (*SliceLossIndication) Unmarshal ¶ added in v1.2.0
func (p *SliceLossIndication) Unmarshal(rawPacket []byte) error
Unmarshal decodes the SliceLossIndication from binary
type SourceDescription ¶
type SourceDescription struct {
Chunks []SourceDescriptionChunk
}
A SourceDescription (SDES) packet describes the sources in an RTP stream.
func (*SourceDescription) DestinationSSRC ¶ added in v1.2.0
func (s *SourceDescription) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*SourceDescription) Header ¶ added in v1.2.0
func (s *SourceDescription) Header() Header
Header returns the Header associated with this packet.
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
type TransportLayerNack ¶ added in v1.2.0
type TransportLayerNack struct { // SSRC of sender SenderSSRC uint32 // SSRC of the media source MediaSSRC uint32 Nacks []NackPair }
The TransportLayerNack packet informs the encoder about the loss of a transport packet IETF RFC 4585, Section 6.2.1 https://tools.ietf.org/html/rfc4585#section-6.2.1
func (*TransportLayerNack) DestinationSSRC ¶ added in v1.2.0
func (p *TransportLayerNack) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*TransportLayerNack) Header ¶ added in v1.2.0
func (p *TransportLayerNack) Header() Header
Header returns the Header associated with this packet.
func (TransportLayerNack) Marshal ¶ added in v1.2.0
func (p TransportLayerNack) Marshal() ([]byte, error)
Marshal encodes the TransportLayerNack in binary
func (*TransportLayerNack) String ¶ added in v1.2.0
func (p *TransportLayerNack) String() string
func (*TransportLayerNack) Unmarshal ¶ added in v1.2.0
func (p *TransportLayerNack) Unmarshal(rawPacket []byte) error
Unmarshal decodes the TransportLayerNack from binary