Categorygithub.com/pion/rtcp
modulepackage
1.2.15
Repository: https://github.com/pion/rtcp.git
Documentation: pkg.go.dev

# README


Pion RTCP

A Go implementation of RTCP

Pion RTCP Sourcegraph Widget Slack Widget
GitHub Workflow Status Go Reference Coverage Status Go Report Card License: MIT


See DESIGN.md for an overview of features and future goals.

Roadmap

The library is used as a part of our WebRTC implementation. Please refer to that roadmap to track our major milestones.

Community

Pion has an active community on the Slack.

Follow the Pion Twitter for project updates and important WebRTC news.

We are always looking to support your projects. Please reach out if you have something to build! If you need commercial support or don't want to use public methods you can contact us at [email protected]

Contributing

Check out the contributing wiki to join the group of amazing people making this project possible

License

MIT License - see LICENSE for full text

# Functions

Marshal takes an array of Packets and serializes them to a single buffer.
NackPairsFromSequenceNumbers generates a slice of NackPair from a list of SequenceNumbers This handles generating the proper values for PacketID/LostPackets.
NewCNAMESourceDescription creates a new SourceDescription with a single CNAME item.
Unmarshal takes an entire udp datagram (which may consist of multiple RTCP packets) and returns the unmarshaled packets it contains.

# Constants

These are the valid values that ChunkType can assume.
RFC 3611, section 4.5.
RFC 3611, section 4.2.
11.
10.
01.
00.
Transport and Payload specific feedback messages overload the count field to act as a message type.
Transport and Payload specific feedback messages overload the count field to act as a message type.
Transport and Payload specific feedback messages overload the count field to act as a message type.
Transport and Payload specific feedback messages overload the count field to act as a message type.
Transport and Payload specific feedback messages overload the count field to act as a message type.
Transport and Payload specific feedback messages overload the count field to act as a message type.
https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#page-5.
Transport and Payload specific feedback messages overload the count field to act as a message type.
RFC 3611, section 4.1.
RFC 3611, section 4.3.
RFC 3611, section 4.4.
These are the valid values that ChunkType can assume.
canonical name RFC 3550, 6.5.1.
user's electronic mail address RFC 3550, 6.5.3.
end of SDES list RFC 3550, 6.5.
geographic user location RFC 3550, 6.5.5.
user name RFC 3550, 6.5.2.
notice about the source RFC 3550, 6.5.7.
user's phone number RFC 3550, 6.5.4.
private extensions RFC 3550, 6.5.8 (not implemented).
name of application or tool RFC 3550, 6.5.6.
RFC 3611, section 4.6.
These are the valid values that ChunkType can assume.
Values for TTLorHopLimitType.
Values for TTLorHopLimitType.
Values for TTLorHopLimitType.
RFC 3550, 6.7 (unimplemented).
RFC 3611.
RFC 3550, 6.6.
RFC 4585, 6.3.
RFC 3550, 6.4.2.
RFC 3550, 6.4.1.
RFC 3550, 6.5.
TypeTCCDeltaScaleFactor https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#section-3.1.5.
https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#section-3.1.1.
type of packet status symbol and recv delta.
type of packet status symbol and recv delta.
https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#page-7 see Example 2: "packet received, w/o recv delta".
type of packet status chunk.
for packet status chunk.
https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#section-3.1.4.
for status vector chunk.
RFC 4585, 6051.
RFC 3611, section 4.7.

# Structs

ApplicationDefined represents an RTCP application-defined packet.
CCFeedbackMetricBlock is a Feedback Metric Block.
CCFeedbackReport is a Congestion Control Feedback Report as defined in https://www.rfc-editor.org/rfc/rfc8888.html#name-rtcp-congestion-control-fee.
CCFeedbackReportBlock is a Feedback Report Block.
DLRRReport encodes a single report inside a DLRRReportBlock.
DLRRReportBlock encodes a DLRR Report Block as described in RFC 3611 section 4.5.
The ExtendedReport packet is an Implementation of RTCP Extended Reports defined in RFC 3611.
A FIREntry is a (SSRC, seqno) pair, as carried by FullIntraRequest.
The FullIntraRequest packet is used to reliably request an Intra frame in a video stream.
The Goodbye packet indicates that one or more sources are no longer active.
A Header is the common header shared by all RTCP packets.
NackPair is a wire-representation of a collection of Lost RTP packets.
PacketReceiptTimesReportBlock represents a Packet Receipt Times report block, as described in RFC 3611 section 4.3.
The PictureLossIndication packet informs the encoder about the loss of an undefined amount of coded video data belonging to one or more pictures.
The RapidResynchronizationRequest packet informs the encoder about the loss of an undefined amount of coded video data belonging to one or more pictures.
ReceiverEstimatedMaximumBitrate contains the receiver's estimated maximum bitrate.
ReceiverReferenceTimeReportBlock encodes a Receiver Reference Time report block as described in RFC 3611 section 4.4.
A ReceiverReport (RR) packet provides reception quality feedback for an RTP stream.
A ReceptionReport block conveys statistics on the reception of RTP packets from a single synchronization source.
RecvDelta are represented as multiples of 250us small delta is 1 byte: [0,63.75]ms = [0, 63750]us = [0, 255]*250us big delta is 2 bytes: [-8192.0, 8191.75]ms = [-8192000, 8191750]us = [-32768, 32767]*250us https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#section-3.1.5.
RunLengthChunk T=TypeTCCRunLengthChunk 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |T| S | Run Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+.
A SenderReport (SR) packet provides reception quality feedback for an RTP stream.
The SliceLossIndication packet informs the encoder about the loss of a picture slice.
SLIEntry represents a single entry to the SLI packet's list of lost slices.
A SourceDescription (SDES) packet describes the sources in an RTP stream.
A SourceDescriptionChunk contains items describing a single RTP source.
A SourceDescriptionItem is a part of a SourceDescription that describes a stream.
StatisticsSummaryReportBlock encodes a Statistics Summary Report Block as described in RFC 3611, section 4.6.
StatusVectorChunk T=typeStatusVecotrChunk 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |T|S| symbol list | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+.
TransportLayerCC for sender-BWE https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#page-5.
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.
UnknownReportBlock is used to store bytes for any report block that has an unknown Report Block Type.
VoIPMetricsReportBlock encodes a VoIP Metrics Report Block as described in RFC 3611, section 4.7.
XRHeader defines the common fields that must appear at the start of each report block.

# Interfaces

Packet represents an RTCP packet, a protocol used for out-of-band statistics and control information for an RTP session.
PacketStatusChunk has two kinds: RunLengthChunk and StatusVectorChunk.
ReportBlock represents a single report within an ExtendedReport packet.

# Type aliases

BlockTypeType specifies the type of report in a report block.
Chunk as defined in RFC 3611, section 4.1.
ChunkType enumerates the three kinds of chunks described in RFC 3611 section 4.1.
A CompoundPacket is a collection of RTCP packets transmitted as a single packet with the underlying protocol (for example UDP).
DuplicateRLEReportBlock is used to report information about packet duplication, as described in RFC 3611, section 4.1.
ECN represents the two ECN bits.
LossRLEReportBlock is used to report information about packet losses, as described in RFC 3611, section 4.1.
PacketBitmap shouldn't be used like a normal integral, so it's type is masked here.
PacketType specifies the type of an RTCP packet.
RapidResynchronisationRequest is provided as RFC 6051 spells resynchronization with an s.
RawPacket represents an unparsed RTCP packet.
SDESType is the item type used in the RTCP SDES control packet.
TTLorHopLimitType encodes values for the ToH field in a StatisticsSummaryReportBlock.
TypeSpecificField as described in RFC 3611 section 4.5.