package rtcp
Import Path
github.com/pion/rtcp (on go.dev)
Dependency Relation
imports 8 packages, and imported by 7 packages
Involved Source Files
application_defined.go
compound_packet.go
Package rtcp implements encoding and decoding of RTCP packets according to RFCs 3550 and 5506.
RTCP is a sister protocol of the Real-time Transport Protocol (RTP). Its basic functionality
and packet structure is defined in RFC 3550. RTCP provides out-of-band statistics and control
information for an RTP session. It partners with RTP in the delivery and packaging of multimedia data,
but does not transport any media data itself.
The primary function of RTCP is to provide feedback on the quality of service (QoS)
in media distribution by periodically sending statistics information such as transmitted octet
and packet counts, packet loss, packet delay variation, and round-trip delay time to participants
in a streaming multimedia session. An application may use this information to control quality of
service parameters, perhaps by limiting flow, or using a different codec.
Decoding RTCP packets:
pkts, err := rtcp.Unmarshal(rtcpData)
// ...
for _, pkt := range pkts {
switch p := pkt.(type) {
case *rtcp.CompoundPacket:
...
case *rtcp.PictureLossIndication:
...
default:
...
}
}
Encoding RTCP packets:
pkt := &rtcp.PictureLossIndication{
SenderSSRC: senderSSRC,
MediaSSRC: mediaSSRC
}
pliData, err := pkt.Marshal()
// ...
errors.go
extended_report.go
full_intra_request.go
goodbye.go
header.go
packet.go
packet_buffer.go
packet_stringifier.go
picture_loss_indication.go
rapid_resynchronization_request.go
raw_packet.go
receiver_estimated_maximum_bitrate.go
receiver_report.go
reception_report.go
rfc8888.go
sender_report.go
slice_loss_indication.go
source_description.go
transport_layer_cc.go
transport_layer_nack.go
util.go
Package-Level Type Names (total 51)
ApplicationDefined represents an RTCP application-defined packet.
Data []byte
Name string
SSRC uint32
SubType uint8
DestinationSSRC returns the SSRC value for this packet.
Marshal serializes the application-defined struct into a byte slice with padding.
MarshalSize returns the size of the packet once marshaled
Unmarshal parses the given raw packet into an application-defined struct, handling padding.
*ApplicationDefined : Packet
*ApplicationDefined : PacketStatusChunk
ApplicationDefined : github.com/gogo/protobuf/proto.Marshaler
*ApplicationDefined : github.com/gogo/protobuf/proto.Unmarshaler
ApplicationDefined : github.com/golang/protobuf/proto.Marshaler
*ApplicationDefined : github.com/golang/protobuf/proto.Unmarshaler
BlockTypeType specifies the type of report in a report block
String converts the Extended report block types into readable strings
BlockTypeType : expvar.Var
BlockTypeType : fmt.Stringer
CCFeedbackMetricBlock is a Feedback Metric Block
Offset in 1/1024 seconds before Report Timestamp
ECN ECN
Received bool
CCFeedbackReport is a Congestion Control Feedback Report as defined in
https://www.rfc-editor.org/rfc/rfc8888.html#name-rtcp-congestion-control-fee
Report Blocks
Basetime
SSRC of sender
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Len returns the length of the report in bytes
Marshal encodes the Congestion Control Feedback Report in binary
MarshalSize returns the size of the packet once marshaled
( CCFeedbackReport) String() string
Unmarshal decodes the Congestion Control Feedback Report from binary
*CCFeedbackReport : Packet
*CCFeedbackReport : PacketStatusChunk
CCFeedbackReport : github.com/gogo/protobuf/proto.Marshaler
*CCFeedbackReport : github.com/gogo/protobuf/proto.Unmarshaler
CCFeedbackReport : github.com/golang/protobuf/proto.Marshaler
*CCFeedbackReport : github.com/golang/protobuf/proto.Unmarshaler
CCFeedbackReport : expvar.Var
CCFeedbackReport : fmt.Stringer
func github.com/pion/interceptor/pkg/rfc8888.(*Recorder).BuildReport(now time.Time, maxSize int) *CCFeedbackReport
CCFeedbackReportBlock is a Feedback Report Block
BeginSequence uint16
SSRC of the RTP stream on which this block is reporting
MetricBlocks []CCFeedbackMetricBlock
( CCFeedbackReportBlock) String() string
CCFeedbackReportBlock : expvar.Var
CCFeedbackReportBlock : fmt.Stringer
Chunk as defined in RFC 3611, section 4.1. These represent information
about packet losses and packet duplication. They have three representations:
Run Length Chunk:
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|R| run length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Bit Vector Chunk:
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C| bit vector |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Terminating Null Chunk:
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
RunType returns the RunType that this Chunk represents. It is
only valid if ChunkType is RunLengthChunkType.
( Chunk) String() string
Type returns the ChunkType that this Chunk represents
Value returns the value represented in this Chunk
Chunk : expvar.Var
Chunk : fmt.Stringer
ChunkType enumerates the three kinds of chunks described in RFC 3611 section 4.1.
func Chunk.Type() ChunkType
A CompoundPacket is a collection of RTCP packets transmitted as a single packet with
the underlying protocol (for example UDP).
To maximize the resolution of receiption statistics, the first Packet in a CompoundPacket
must always be either a SenderReport or a ReceiverReport. This is true even if no data
has been sent or received, in which case an empty ReceiverReport must be sent, and even
if the only other RTCP packet in the compound packet is a Goodbye.
Next, a SourceDescription containing a CNAME item must be included in each CompoundPacket
to identify the source and to begin associating media for purposes such as lip-sync.
Other RTCP packet types may follow in any order. Packet types may appear more than once.
CNAME returns the CNAME that *must* be present in every CompoundPacket
DestinationSSRC returns the synchronization sources associated with this
CompoundPacket's reception report.
Marshal encodes the CompoundPacket as binary.
MarshalSize returns the size of the packet once marshaled
( CompoundPacket) String() string
Unmarshal decodes a CompoundPacket from binary.
Validate returns an error if this is not an RFC-compliant CompoundPacket.
*CompoundPacket : Packet
*CompoundPacket : PacketStatusChunk
CompoundPacket : github.com/gogo/protobuf/proto.Marshaler
*CompoundPacket : github.com/gogo/protobuf/proto.Unmarshaler
CompoundPacket : github.com/golang/protobuf/proto.Marshaler
*CompoundPacket : github.com/golang/protobuf/proto.Unmarshaler
CompoundPacket : expvar.Var
CompoundPacket : fmt.Stringer
DLRRReportBlock encodes a DLRR Report Block as described in
RFC 3611 section 4.5.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BT=5 | reserved | block length |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| SSRC_1 (SSRC of first receiver) | sub-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block
| last RR (LRR) | 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| delay since last RR (DLRR) |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| SSRC_2 (SSRC of second receiver) | sub-
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ block
: ... : 2
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Reports []DLRRReport
XRHeader XRHeader
XRHeader.BlockLength uint16
XRHeader.BlockType BlockTypeType
XRHeader.TypeSpecific TypeSpecificField
DestinationSSRC returns an array of SSRC values that this report block refers to.
*DLRRReportBlock : ReportBlock
DuplicateRLEReportBlock is used to report information about packet
duplication, as described in RFC 3611, section 4.1
BeginSeq uint16
Chunks []Chunk
EndSeq uint16
SSRC uint32
T uint8
XRHeader XRHeader
XRHeader.BlockLength uint16
XRHeader.BlockType BlockTypeType
XRHeader.TypeSpecific TypeSpecificField
DestinationSSRC returns an array of SSRC values that this report block refers to.
*DuplicateRLEReportBlock : ReportBlock
The ExtendedReport packet is an Implementation of RTCP Extended
Reports defined in RFC 3611. It is used to convey detailed
information about an RTP stream. Each packet contains one or
more report blocks, each of which conveys a different kind of
information.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|reserved | PT=XR=207 | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
: report blocks :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Reports []ReportBlock
SenderSSRC uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
Marshal encodes the ExtendedReport in binary
MarshalSize returns the size of the packet once marshaled
(*ExtendedReport) String() string
Unmarshal decodes the ExtendedReport from binary
*ExtendedReport : Packet
*ExtendedReport : PacketStatusChunk
ExtendedReport : github.com/gogo/protobuf/proto.Marshaler
*ExtendedReport : github.com/gogo/protobuf/proto.Unmarshaler
ExtendedReport : github.com/golang/protobuf/proto.Marshaler
*ExtendedReport : github.com/golang/protobuf/proto.Unmarshaler
*ExtendedReport : expvar.Var
*ExtendedReport : fmt.Stringer
A FIREntry is a (SSRC, seqno) pair, as carried by FullIntraRequest.
SSRC uint32
SequenceNumber uint8
The FullIntraRequest packet is used to reliably request an Intra frame
in a video stream. See RFC 5104 Section 3.5.1. This is not for loss
recovery, which should use PictureLossIndication (PLI) instead.
FIR []FIREntry
MediaSSRC uint32
SenderSSRC uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal encodes the FullIntraRequest
MarshalSize returns the size of the packet once marshaled
(*FullIntraRequest) String() string
Unmarshal decodes the TransportLayerNack
*FullIntraRequest : Packet
*FullIntraRequest : PacketStatusChunk
FullIntraRequest : github.com/gogo/protobuf/proto.Marshaler
*FullIntraRequest : github.com/gogo/protobuf/proto.Unmarshaler
FullIntraRequest : github.com/golang/protobuf/proto.Marshaler
*FullIntraRequest : github.com/golang/protobuf/proto.Unmarshaler
*FullIntraRequest : expvar.Var
*FullIntraRequest : fmt.Stringer
The Goodbye packet indicates that one or more sources are no longer active.
Optional text indicating the reason for leaving, e.g., "camera malfunction" or "RTP loop detected"
The SSRC/CSRC identifiers that are no longer active
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal encodes the Goodbye packet in binary
MarshalSize returns the size of the packet once marshaled
( Goodbye) String() string
Unmarshal decodes the Goodbye packet from binary
*Goodbye : Packet
*Goodbye : PacketStatusChunk
Goodbye : github.com/gogo/protobuf/proto.Marshaler
*Goodbye : github.com/gogo/protobuf/proto.Unmarshaler
Goodbye : github.com/golang/protobuf/proto.Marshaler
*Goodbye : github.com/golang/protobuf/proto.Unmarshaler
Goodbye : expvar.Var
Goodbye : fmt.Stringer
A Header is the common header shared by all RTCP packets
The number of reception reports, sources contained or FMT in this packet (depending on the Type)
The length of this RTCP packet in 32-bit words minus one,
including the header and any padding.
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.
The RTCP packet type for this packet
Marshal encodes the Header in binary
Unmarshal decodes the Header from binary
*Header : PacketStatusChunk
Header : github.com/gogo/protobuf/proto.Marshaler
*Header : github.com/gogo/protobuf/proto.Unmarshaler
Header : github.com/golang/protobuf/proto.Marshaler
*Header : github.com/golang/protobuf/proto.Unmarshaler
func (*CCFeedbackReport).Header() Header
func (*FullIntraRequest).Header() Header
func (*Goodbye).Header() Header
func (*PictureLossIndication).Header() Header
func (*RapidResynchronizationRequest).Header() Header
func RawPacket.Header() Header
func (*ReceiverEstimatedMaximumBitrate).Header() Header
func (*ReceiverReport).Header() Header
func (*SenderReport).Header() Header
func (*SliceLossIndication).Header() Header
func (*SourceDescription).Header() Header
func (*TransportLayerNack).Header() Header
func github.com/pion/srtp/v3.(*ReadStreamSRTCP).ReadRTCP(buf []byte) (int, *Header, error)
func github.com/pion/srtp/v3.(*Context).DecryptRTCP(dst, encrypted []byte, header *Header) ([]byte, error)
func github.com/pion/srtp/v3.(*Context).EncryptRTCP(dst, decrypted []byte, header *Header) ([]byte, error)
func github.com/pion/srtp/v3.(*WriteStreamSRTCP).WriteRTCP(header *Header, payload []byte) (int, error)
LossRLEReportBlock is used to report information about packet
losses, as described in RFC 3611, section 4.1
BeginSeq uint16
Chunks []Chunk
EndSeq uint16
SSRC uint32
T uint8
XRHeader XRHeader
XRHeader.BlockLength uint16
XRHeader.BlockType BlockTypeType
XRHeader.TypeSpecific TypeSpecificField
DestinationSSRC returns an array of SSRC values that this report block refers to.
*LossRLEReportBlock : ReportBlock
NackPair is a wire-representation of a collection of
Lost RTP packets
Bitmask of following lost packets
ID of lost packets
PacketList returns a list of Nack'd packets that's referenced by a NackPair
Range calls f sequentially for each sequence number covered by n.
If f returns false, Range stops the iteration.
func NackPairsFromSequenceNumbers(sequenceNumbers []uint16) (pairs []NackPair)
Packet represents an RTCP packet, a protocol used for out-of-band statistics and control information for an RTP session
DestinationSSRC returns an array of SSRC values that this packet refers to.
( Packet) Marshal() ([]byte, error)
( Packet) MarshalSize() int
( Packet) Unmarshal(rawPacket []byte) error
*ApplicationDefined
*CCFeedbackReport
*CompoundPacket
*ExtendedReport
*FullIntraRequest
*Goodbye
*PictureLossIndication
*RapidResynchronizationRequest
*RawPacket
*ReceiverEstimatedMaximumBitrate
*ReceiverReport
*SenderReport
*SliceLossIndication
*SourceDescription
*TransportLayerCC
*TransportLayerNack
Packet : PacketStatusChunk
Packet : github.com/gogo/protobuf/proto.Marshaler
Packet : github.com/gogo/protobuf/proto.Unmarshaler
Packet : github.com/golang/protobuf/proto.Marshaler
Packet : github.com/golang/protobuf/proto.Unmarshaler
func Unmarshal(rawData []byte) ([]Packet, error)
func github.com/pion/interceptor.Attributes.GetRTCPPackets(raw []byte) ([]Packet, error)
func github.com/pion/interceptor/pkg/twcc.(*Recorder).BuildFeedbackPacket() []Packet
func github.com/pion/webrtc/v4.(*RTPReceiver).ReadRTCP() ([]Packet, interceptor.Attributes, error)
func github.com/pion/webrtc/v4.(*RTPReceiver).ReadSimulcastRTCP(rid string) ([]Packet, interceptor.Attributes, error)
func github.com/pion/webrtc/v4.(*RTPSender).ReadRTCP() ([]Packet, interceptor.Attributes, error)
func github.com/pion/webrtc/v4.(*RTPSender).ReadSimulcastRTCP(rid string) ([]Packet, interceptor.Attributes, error)
func Marshal(packets []Packet) ([]byte, error)
func github.com/pion/interceptor.RTCPWriter.Write(pkts []Packet, attributes interceptor.Attributes) (int, error)
func github.com/pion/interceptor.RTCPWriterFunc.Write(pkts []Packet, attributes interceptor.Attributes) (int, error)
func github.com/pion/webrtc/v4.(*DTLSTransport).WriteRTCP(pkts []Packet) (int, error)
func github.com/pion/webrtc/v4.(*PeerConnection).WriteRTCP(pkts []Packet) error
PacketBitmap shouldn't be used like a normal integral,
so it's type is masked here. Access it with PacketList().
PacketReceiptTimesReportBlock represents a Packet Receipt Times
report block, as described in RFC 3611 section 4.3.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BT=3 | rsvd. | T | block length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of source |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| begin_seq | end_seq |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Receipt time of packet begin_seq |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Receipt time of packet (begin_seq + 1) mod 65536 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
: ... :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Receipt time of packet (end_seq - 1) mod 65536 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
BeginSeq uint16
EndSeq uint16
ReceiptTime []uint32
SSRC uint32
T uint8
XRHeader XRHeader
XRHeader.BlockLength uint16
XRHeader.BlockType BlockTypeType
XRHeader.TypeSpecific TypeSpecificField
DestinationSSRC returns an array of SSRC values that this report block refers to.
*PacketReceiptTimesReportBlock : ReportBlock
PacketStatusChunk has two kinds:
RunLengthChunk and StatusVectorChunk
( PacketStatusChunk) Marshal() ([]byte, error)
( PacketStatusChunk) Unmarshal(rawPacket []byte) error
*ApplicationDefined
*CCFeedbackReport
*CompoundPacket
*ExtendedReport
*FullIntraRequest
*Goodbye
*Header
Packet (interface)
*PictureLossIndication
*RapidResynchronizationRequest
*RawPacket
*ReceiverEstimatedMaximumBitrate
*ReceiverReport
*ReceptionReport
*RecvDelta
*RunLengthChunk
*SenderReport
*SliceLossIndication
*SourceDescription
*SourceDescriptionChunk
*SourceDescriptionItem
*StatusVectorChunk
*TransportLayerCC
*TransportLayerNack
*github.com/pion/dtls/v2/pkg/protocol.ApplicationData
*github.com/pion/dtls/v2/pkg/protocol.ChangeCipherSpec
github.com/pion/dtls/v2/pkg/protocol.Content (interface)
*github.com/pion/dtls/v2/pkg/protocol/alert.Alert
*github.com/pion/dtls/v2/pkg/protocol/extension.ALPN
github.com/pion/dtls/v2/pkg/protocol/extension.Extension (interface)
*github.com/pion/dtls/v2/pkg/protocol/extension.RenegotiationInfo
*github.com/pion/dtls/v2/pkg/protocol/extension.ServerName
*github.com/pion/dtls/v2/pkg/protocol/extension.SupportedEllipticCurves
*github.com/pion/dtls/v2/pkg/protocol/extension.SupportedPointFormats
*github.com/pion/dtls/v2/pkg/protocol/extension.SupportedSignatureAlgorithms
*github.com/pion/dtls/v2/pkg/protocol/extension.UseExtendedMasterSecret
*github.com/pion/dtls/v2/pkg/protocol/extension.UseSRTP
*github.com/pion/dtls/v2/pkg/protocol/handshake.Handshake
*github.com/pion/dtls/v2/pkg/protocol/handshake.Header
github.com/pion/dtls/v2/pkg/protocol/handshake.Message (interface)
*github.com/pion/dtls/v2/pkg/protocol/handshake.MessageCertificate
*github.com/pion/dtls/v2/pkg/protocol/handshake.MessageCertificateRequest
*github.com/pion/dtls/v2/pkg/protocol/handshake.MessageCertificateVerify
*github.com/pion/dtls/v2/pkg/protocol/handshake.MessageClientHello
*github.com/pion/dtls/v2/pkg/protocol/handshake.MessageClientKeyExchange
*github.com/pion/dtls/v2/pkg/protocol/handshake.MessageFinished
*github.com/pion/dtls/v2/pkg/protocol/handshake.MessageHelloVerifyRequest
*github.com/pion/dtls/v2/pkg/protocol/handshake.MessageServerHello
*github.com/pion/dtls/v2/pkg/protocol/handshake.MessageServerHelloDone
*github.com/pion/dtls/v2/pkg/protocol/handshake.MessageServerKeyExchange
*github.com/pion/dtls/v2/pkg/protocol/recordlayer.Header
*github.com/pion/dtls/v2/pkg/protocol/recordlayer.RecordLayer
*github.com/pion/dtls/v3/pkg/protocol.ApplicationData
*github.com/pion/dtls/v3/pkg/protocol.ChangeCipherSpec
github.com/pion/dtls/v3/pkg/protocol.Content (interface)
*github.com/pion/dtls/v3/pkg/protocol/alert.Alert
*github.com/pion/dtls/v3/pkg/protocol/extension.ALPN
*github.com/pion/dtls/v3/pkg/protocol/extension.ConnectionID
github.com/pion/dtls/v3/pkg/protocol/extension.Extension (interface)
*github.com/pion/dtls/v3/pkg/protocol/extension.RenegotiationInfo
*github.com/pion/dtls/v3/pkg/protocol/extension.ServerName
*github.com/pion/dtls/v3/pkg/protocol/extension.SupportedEllipticCurves
*github.com/pion/dtls/v3/pkg/protocol/extension.SupportedPointFormats
*github.com/pion/dtls/v3/pkg/protocol/extension.SupportedSignatureAlgorithms
*github.com/pion/dtls/v3/pkg/protocol/extension.UseExtendedMasterSecret
*github.com/pion/dtls/v3/pkg/protocol/extension.UseSRTP
*github.com/pion/dtls/v3/pkg/protocol/handshake.Handshake
*github.com/pion/dtls/v3/pkg/protocol/handshake.Header
github.com/pion/dtls/v3/pkg/protocol/handshake.Message (interface)
*github.com/pion/dtls/v3/pkg/protocol/handshake.MessageCertificate
*github.com/pion/dtls/v3/pkg/protocol/handshake.MessageCertificateRequest
*github.com/pion/dtls/v3/pkg/protocol/handshake.MessageCertificateVerify
*github.com/pion/dtls/v3/pkg/protocol/handshake.MessageClientHello
*github.com/pion/dtls/v3/pkg/protocol/handshake.MessageClientKeyExchange
*github.com/pion/dtls/v3/pkg/protocol/handshake.MessageFinished
*github.com/pion/dtls/v3/pkg/protocol/handshake.MessageHelloVerifyRequest
*github.com/pion/dtls/v3/pkg/protocol/handshake.MessageServerHello
*github.com/pion/dtls/v3/pkg/protocol/handshake.MessageServerHelloDone
*github.com/pion/dtls/v3/pkg/protocol/handshake.MessageServerKeyExchange
*github.com/pion/dtls/v3/pkg/protocol/recordlayer.Header
*github.com/pion/dtls/v3/pkg/protocol/recordlayer.InnerPlaintext
*github.com/pion/dtls/v3/pkg/protocol/recordlayer.RecordLayer
*github.com/pion/rtp.AbsCaptureTimeExtension
*github.com/pion/rtp.AbsSendTimeExtension
*github.com/pion/rtp.AudioLevelExtension
*github.com/pion/rtp.Packet
*github.com/pion/rtp.PlayoutDelayExtension
*github.com/pion/rtp.TransportCCExtension
*github.com/pion/sdp/v3.SessionDescription
*github.com/libp2p/go-libp2p/core/peer.ID
github.com/libp2p/go-libp2p-pubsub.Message
*github.com/libp2p/go-libp2p-pubsub.RPC
*github.com/libp2p/go-libp2p-pubsub/pb.ControlGraft
*github.com/libp2p/go-libp2p-pubsub/pb.ControlIDontWant
*github.com/libp2p/go-libp2p-pubsub/pb.ControlIHave
*github.com/libp2p/go-libp2p-pubsub/pb.ControlIWant
*github.com/libp2p/go-libp2p-pubsub/pb.ControlMessage
*github.com/libp2p/go-libp2p-pubsub/pb.ControlPrune
*github.com/libp2p/go-libp2p-pubsub/pb.Message
*github.com/libp2p/go-libp2p-pubsub/pb.PeerInfo
*github.com/libp2p/go-libp2p-pubsub/pb.RPC
*github.com/libp2p/go-libp2p-pubsub/pb.RPC_SubOpts
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_AddPeer
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_ControlGraftMeta
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_ControlIDontWantMeta
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_ControlIHaveMeta
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_ControlIWantMeta
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_ControlMeta
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_ControlPruneMeta
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_DeliverMessage
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_DropRPC
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_DuplicateMessage
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_Graft
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_Join
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_Leave
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_MessageMeta
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_Prune
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_PublishMessage
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_RecvRPC
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_RejectMessage
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_RemovePeer
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_RPCMeta
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_SendRPC
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEvent_SubMeta
*github.com/libp2p/go-libp2p-pubsub/pb.TraceEventBatch
PacketStatusChunk : github.com/gogo/protobuf/proto.Marshaler
PacketStatusChunk : github.com/gogo/protobuf/proto.Unmarshaler
PacketStatusChunk : github.com/golang/protobuf/proto.Marshaler
PacketStatusChunk : github.com/golang/protobuf/proto.Unmarshaler
PacketType specifies the type of an RTCP packet
( PacketType) String() string
PacketType : expvar.Var
PacketType : fmt.Stringer
const TypeApplicationDefined
const TypeExtendedReport
const TypeGoodbye
const TypePayloadSpecificFeedback
const TypeReceiverReport
const TypeSenderReport
const TypeSourceDescription
const TypeTransportSpecificFeedback
The PictureLossIndication packet informs the encoder about the loss of an undefined amount of coded video data belonging to one or more pictures
SSRC where the loss was experienced
SSRC of sender
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal encodes the PictureLossIndication in binary
MarshalSize returns the size of the packet once marshaled
(*PictureLossIndication) String() string
Unmarshal decodes the PictureLossIndication from binary
*PictureLossIndication : Packet
*PictureLossIndication : PacketStatusChunk
PictureLossIndication : github.com/gogo/protobuf/proto.Marshaler
*PictureLossIndication : github.com/gogo/protobuf/proto.Unmarshaler
PictureLossIndication : github.com/golang/protobuf/proto.Marshaler
*PictureLossIndication : github.com/golang/protobuf/proto.Unmarshaler
*PictureLossIndication : expvar.Var
*PictureLossIndication : fmt.Stringer
RapidResynchronisationRequest is provided as RFC 6051 spells resynchronization with an s.
We provide both names to be consistent with other RFCs which spell resynchronization with a z.
The RapidResynchronizationRequest packet informs the encoder about the loss of an undefined amount of coded video data belonging to one or more pictures
SSRC where the loss was experienced
SSRC of sender
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal encodes the RapidResynchronizationRequest in binary
MarshalSize returns the size of the packet once marshaled
(*RapidResynchronizationRequest) String() string
Unmarshal decodes the RapidResynchronizationRequest from binary
*RapidResynchronizationRequest : Packet
*RapidResynchronizationRequest : PacketStatusChunk
RapidResynchronizationRequest : github.com/gogo/protobuf/proto.Marshaler
*RapidResynchronizationRequest : github.com/gogo/protobuf/proto.Unmarshaler
RapidResynchronizationRequest : github.com/golang/protobuf/proto.Marshaler
*RapidResynchronizationRequest : github.com/golang/protobuf/proto.Unmarshaler
*RapidResynchronizationRequest : expvar.Var
*RapidResynchronizationRequest : fmt.Stringer
RawPacket represents an unparsed RTCP packet. It's returned by Unmarshal when
a packet with an unknown type is encountered.
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal encodes the packet in binary.
MarshalSize returns the size of the packet once marshaled
( RawPacket) String() string
Unmarshal decodes the packet from binary.
*RawPacket : Packet
*RawPacket : PacketStatusChunk
RawPacket : github.com/gogo/protobuf/proto.Marshaler
*RawPacket : github.com/gogo/protobuf/proto.Unmarshaler
RawPacket : github.com/golang/protobuf/proto.Marshaler
*RawPacket : github.com/golang/protobuf/proto.Unmarshaler
RawPacket : expvar.Var
RawPacket : fmt.Stringer
ReceiverEstimatedMaximumBitrate contains the receiver's estimated maximum bitrate.
see: https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03
Estimated maximum bitrate
SSRC entries which this packet applies to
SSRC of sender
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal serializes the packet and returns a byte slice.
MarshalSize returns the size of the packet once marshaled
MarshalTo serializes the packet to the given byte slice.
String prints the REMB packet in a human-readable format.
Unmarshal reads a REMB packet from the given byte slice.
*ReceiverEstimatedMaximumBitrate : Packet
*ReceiverEstimatedMaximumBitrate : PacketStatusChunk
ReceiverEstimatedMaximumBitrate : github.com/gogo/protobuf/proto.Marshaler
*ReceiverEstimatedMaximumBitrate : github.com/gogo/protobuf/proto.Unmarshaler
ReceiverEstimatedMaximumBitrate : github.com/golang/protobuf/proto.Marshaler
*ReceiverEstimatedMaximumBitrate : github.com/golang/protobuf/proto.Unmarshaler
*ReceiverEstimatedMaximumBitrate : expvar.Var
*ReceiverEstimatedMaximumBitrate : fmt.Stringer
ReceiverReferenceTimeReportBlock encodes a Receiver Reference Time
report block as described in RFC 3611 section 4.4.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BT=4 | reserved | block length = 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NTP timestamp, most significant word |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NTP timestamp, least significant word |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
NTPTimestamp uint64
XRHeader XRHeader
XRHeader.BlockLength uint16
XRHeader.BlockType BlockTypeType
XRHeader.TypeSpecific TypeSpecificField
DestinationSSRC returns an array of SSRC values that this report block refers to.
*ReceiverReferenceTimeReportBlock : ReportBlock
A ReceiverReport (RR) packet provides reception quality feedback for an RTP stream
Extension contains additional, payload-specific information that needs to
be reported regularly about the receiver.
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.
The synchronization source identifier for the originator of this RR packet.
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal encodes the ReceiverReport in binary
MarshalSize returns the size of the packet once marshaled
( ReceiverReport) String() string
Unmarshal decodes the ReceiverReport from binary
*ReceiverReport : Packet
*ReceiverReport : PacketStatusChunk
ReceiverReport : github.com/gogo/protobuf/proto.Marshaler
*ReceiverReport : github.com/gogo/protobuf/proto.Unmarshaler
ReceiverReport : github.com/golang/protobuf/proto.Marshaler
*ReceiverReport : github.com/golang/protobuf/proto.Unmarshaler
ReceiverReport : expvar.Var
ReceiverReport : fmt.Stringer
A ReceptionReport block conveys statistics on the reception of RTP packets
from a single synchronization source.
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.
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.
An estimate of the statistical variance of the RTP data packet
interarrival time, measured in timestamp units and expressed as an
unsigned integer.
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.
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.
The SSRC identifier of the source to which the information in this
reception report block pertains.
The total number of RTP data packets from source SSRC that have
been lost since the beginning of reception.
Marshal encodes the ReceptionReport in binary
Unmarshal decodes the ReceptionReport from binary
*ReceptionReport : PacketStatusChunk
ReceptionReport : github.com/gogo/protobuf/proto.Marshaler
*ReceptionReport : github.com/gogo/protobuf/proto.Unmarshaler
ReceptionReport : github.com/golang/protobuf/proto.Marshaler
*ReceptionReport : github.com/golang/protobuf/proto.Unmarshaler
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
us
Type uint16
Marshal ..
Unmarshal ..
*RecvDelta : PacketStatusChunk
RecvDelta : github.com/gogo/protobuf/proto.Marshaler
*RecvDelta : github.com/gogo/protobuf/proto.Unmarshaler
RecvDelta : github.com/golang/protobuf/proto.Marshaler
*RecvDelta : github.com/golang/protobuf/proto.Unmarshaler
ReportBlock represents a single report within an ExtendedReport
packet
( ReportBlock) DestinationSSRC() []uint32
*DLRRReportBlock
*DuplicateRLEReportBlock
*LossRLEReportBlock
*PacketReceiptTimesReportBlock
*ReceiverReferenceTimeReportBlock
*StatisticsSummaryReportBlock
*UnknownReportBlock
*VoIPMetricsReportBlock
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
PacketStatusChunk PacketStatusChunk
S: type of packet status
kind: TypeTCCPacketNotReceived or...
RunLength: count of S
T = TypeTCCRunLengthChunk
Marshal ..
Unmarshal ..
*RunLengthChunk : PacketStatusChunk
RunLengthChunk : github.com/gogo/protobuf/proto.Marshaler
*RunLengthChunk : github.com/gogo/protobuf/proto.Unmarshaler
RunLengthChunk : github.com/golang/protobuf/proto.Marshaler
*RunLengthChunk : github.com/golang/protobuf/proto.Unmarshaler
SDESType is the item type used in the RTCP SDES control packet.
( SDESType) String() string
SDESType : expvar.Var
SDESType : fmt.Stringer
const SDESCNAME
const SDESEmail
const SDESEnd
const SDESLocation
const SDESName
const SDESNote
const SDESPhone
const SDESPrivate
const SDESTool
A SenderReport (SR) packet provides reception quality feedback for an RTP stream
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.
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.
The total number of RTP data packets transmitted by the sender
since starting transmission up until the time this SR packet was
generated.
ProfileExtensions contains additional, payload-specific information that needs to
be reported regularly about the sender.
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.
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.
The synchronization source identifier for the originator of this SR packet.
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal encodes the SenderReport in binary
MarshalSize returns the size of the packet once marshaled
( SenderReport) String() string
Unmarshal decodes the SenderReport from binary
*SenderReport : Packet
*SenderReport : PacketStatusChunk
SenderReport : github.com/gogo/protobuf/proto.Marshaler
*SenderReport : github.com/gogo/protobuf/proto.Unmarshaler
SenderReport : github.com/golang/protobuf/proto.Marshaler
*SenderReport : github.com/golang/protobuf/proto.Unmarshaler
SenderReport : expvar.Var
SenderReport : fmt.Stringer
The SliceLossIndication packet informs the encoder about the loss of a picture slice
SSRC of the media source
SLI []SLIEntry
SSRC of sender
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal encodes the SliceLossIndication in binary
MarshalSize returns the size of the packet once marshaled
(*SliceLossIndication) String() string
Unmarshal decodes the SliceLossIndication from binary
*SliceLossIndication : Packet
*SliceLossIndication : PacketStatusChunk
SliceLossIndication : github.com/gogo/protobuf/proto.Marshaler
*SliceLossIndication : github.com/gogo/protobuf/proto.Unmarshaler
SliceLossIndication : github.com/golang/protobuf/proto.Marshaler
*SliceLossIndication : github.com/golang/protobuf/proto.Unmarshaler
*SliceLossIndication : expvar.Var
*SliceLossIndication : fmt.Stringer
SLIEntry represents a single entry to the SLI packet's
list of lost slices.
ID of first lost slice
Number of lost slices
ID of related picture
A SourceDescription (SDES) packet describes the sources in an RTP stream.
Chunks []SourceDescriptionChunk
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal encodes the SourceDescription in binary
MarshalSize returns the size of the packet once marshaled
(*SourceDescription) String() string
Unmarshal decodes the SourceDescription from binary
*SourceDescription : Packet
*SourceDescription : PacketStatusChunk
SourceDescription : github.com/gogo/protobuf/proto.Marshaler
*SourceDescription : github.com/gogo/protobuf/proto.Unmarshaler
SourceDescription : github.com/golang/protobuf/proto.Marshaler
*SourceDescription : github.com/golang/protobuf/proto.Unmarshaler
*SourceDescription : expvar.Var
*SourceDescription : fmt.Stringer
func NewCNAMESourceDescription(ssrc uint32, cname string) *SourceDescription
A SourceDescriptionChunk contains items describing a single RTP source
Items []SourceDescriptionItem
The source (ssrc) or contributing source (csrc) identifier this packet describes
Marshal encodes the SourceDescriptionChunk in binary
Unmarshal decodes the SourceDescriptionChunk from binary
*SourceDescriptionChunk : PacketStatusChunk
SourceDescriptionChunk : github.com/gogo/protobuf/proto.Marshaler
*SourceDescriptionChunk : github.com/gogo/protobuf/proto.Unmarshaler
SourceDescriptionChunk : github.com/golang/protobuf/proto.Marshaler
*SourceDescriptionChunk : github.com/golang/protobuf/proto.Unmarshaler
A SourceDescriptionItem is a part of a SourceDescription that describes a stream.
Text is a unicode text blob associated with the item. Its meaning varies based on the item's Type.
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.
Len returns the length of the SourceDescriptionItem when encoded as binary.
Marshal encodes the SourceDescriptionItem in binary
Unmarshal decodes the SourceDescriptionItem from binary
*SourceDescriptionItem : PacketStatusChunk
SourceDescriptionItem : github.com/gogo/protobuf/proto.Marshaler
*SourceDescriptionItem : github.com/gogo/protobuf/proto.Unmarshaler
SourceDescriptionItem : github.com/golang/protobuf/proto.Marshaler
*SourceDescriptionItem : github.com/golang/protobuf/proto.Unmarshaler
StatisticsSummaryReportBlock encodes a Statistics Summary Report
Block as described in RFC 3611, section 4.6.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BT=6 |L|D|J|ToH|rsvd.| block length = 9 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of source |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| begin_seq | end_seq |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| lost_packets |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| dup_packets |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| min_jitter |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| max_jitter |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| mean_jitter |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| dev_jitter |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| min_ttl_or_hl | max_ttl_or_hl |mean_ttl_or_hl | dev_ttl_or_hl |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
BeginSeq uint16
DevJitter uint32
DevTTLOrHL uint8
DupPackets uint32
DuplicateReports bool
EndSeq uint16
JitterReports bool
LossReports bool
LostPackets uint32
MaxJitter uint32
MaxTTLOrHL uint8
MeanJitter uint32
MeanTTLOrHL uint8
MinJitter uint32
MinTTLOrHL uint8
SSRC uint32
TTLorHopLimit TTLorHopLimitType
XRHeader XRHeader
XRHeader.BlockLength uint16
XRHeader.BlockType BlockTypeType
XRHeader.TypeSpecific TypeSpecificField
DestinationSSRC returns an array of SSRC values that this report block refers to.
*StatisticsSummaryReportBlock : ReportBlock
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
PacketStatusChunk PacketStatusChunk
when SymbolSize = TypeTCCSymbolSizeOneBit, SymbolList is 14*1bit:
TypeTCCSymbolListPacketReceived or TypeTCCSymbolListPacketNotReceived
when SymbolSize = TypeTCCSymbolSizeTwoBit, SymbolList is 7*2bit:
TypeTCCPacketNotReceived TypeTCCPacketReceivedSmallDelta TypeTCCPacketReceivedLargeDelta or typePacketReserved
TypeTCCSymbolSizeOneBit or TypeTCCSymbolSizeTwoBit
T = TypeTCCRunLengthChunk
Marshal ..
Unmarshal ..
*StatusVectorChunk : PacketStatusChunk
StatusVectorChunk : github.com/gogo/protobuf/proto.Marshaler
*StatusVectorChunk : github.com/gogo/protobuf/proto.Unmarshaler
StatusVectorChunk : github.com/golang/protobuf/proto.Marshaler
*StatusVectorChunk : github.com/golang/protobuf/proto.Unmarshaler
TransportLayerCC for sender-BWE
https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#page-5
Transport wide sequence of rtp extension
FbPktCount
header
SSRC of the media source
PacketChunks
PacketStatusCount
RecvDeltas
ReferenceTime
SSRC of sender
DestinationSSRC returns an array of SSRC values that this packet refers to.
Len return total bytes with padding
Marshal encodes the TransportLayerCC in binary
MarshalSize returns the size of the packet once marshaled
( TransportLayerCC) String() string
Unmarshal ..
*TransportLayerCC : Packet
*TransportLayerCC : PacketStatusChunk
TransportLayerCC : github.com/gogo/protobuf/proto.Marshaler
*TransportLayerCC : github.com/gogo/protobuf/proto.Unmarshaler
TransportLayerCC : github.com/golang/protobuf/proto.Marshaler
*TransportLayerCC : github.com/golang/protobuf/proto.Unmarshaler
TransportLayerCC : expvar.Var
TransportLayerCC : fmt.Stringer
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
SSRC of the media source
Nacks []NackPair
SSRC of sender
DestinationSSRC returns an array of SSRC values that this packet refers to.
Header returns the Header associated with this packet.
Marshal encodes the TransportLayerNack in binary
MarshalSize returns the size of the packet once marshaled
( TransportLayerNack) String() string
Unmarshal decodes the TransportLayerNack from binary
*TransportLayerNack : Packet
*TransportLayerNack : PacketStatusChunk
TransportLayerNack : github.com/gogo/protobuf/proto.Marshaler
*TransportLayerNack : github.com/gogo/protobuf/proto.Unmarshaler
TransportLayerNack : github.com/golang/protobuf/proto.Marshaler
*TransportLayerNack : github.com/golang/protobuf/proto.Unmarshaler
TransportLayerNack : expvar.Var
TransportLayerNack : fmt.Stringer
TTLorHopLimitType encodes values for the ToH field in
a StatisticsSummaryReportBlock
( TTLorHopLimitType) String() string
TTLorHopLimitType : expvar.Var
TTLorHopLimitType : fmt.Stringer
TypeSpecificField as described in RFC 3611 section 4.5. In typical
cases, users of ExtendedReports shouldn't need to access this,
and should instead use the corresponding fields in the actual
report blocks themselves.
UnknownReportBlock is used to store bytes for any report block
that has an unknown Report Block Type.
Bytes []byte
XRHeader XRHeader
XRHeader.BlockLength uint16
XRHeader.BlockType BlockTypeType
XRHeader.TypeSpecific TypeSpecificField
DestinationSSRC returns an array of SSRC values that this report block refers to.
*UnknownReportBlock : ReportBlock
VoIPMetricsReportBlock encodes a VoIP Metrics Report Block as described
in RFC 3611, section 4.7.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BT=7 | reserved | block length = 8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of source |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| loss rate | discard rate | burst density | gap density |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| burst duration | gap duration |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| round trip delay | end system delay |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| signal level | noise level | RERL | Gmin |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| R factor | ext. R factor | MOS-LQ | MOS-CQ |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RX config | reserved | JB nominal |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| JB maximum | JB abs max |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
BurstDensity uint8
BurstDuration uint16
DiscardRate uint8
EndSystemDelay uint16
ExtRFactor uint8
GapDensity uint8
GapDuration uint16
Gmin uint8
JBAbsMax uint16
JBMaximum uint16
JBNominal uint16
LossRate uint8
MOSCQ uint8
MOSLQ uint8
NoiseLevel uint8
RERL uint8
RFactor uint8
RXConfig uint8
RoundTripDelay uint16
SSRC uint32
SignalLevel uint8
XRHeader XRHeader
XRHeader.BlockLength uint16
XRHeader.BlockType BlockTypeType
XRHeader.TypeSpecific TypeSpecificField
DestinationSSRC returns an array of SSRC values that this report block refers to.
*VoIPMetricsReportBlock : ReportBlock
XRHeader defines the common fields that must appear at the start
of each report block. In typical cases, users of ExtendedReports
shouldn't need to access this. For locally-constructed report
blocks, these values will not be accurate until the corresponding
packet is marshaled.
BlockLength uint16
BlockType BlockTypeType
TypeSpecific TypeSpecificField
Package-Level Functions (total 4)
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.
If this is a reduced-size RTCP packet a feedback packet (Goodbye, SliceLossIndication, etc)
will be returned. Otherwise, the underlying type of the returned packet will be
CompoundPacket.
Package-Level Constants (total 51)
These are the valid values that ChunkType can assume
Extended Report block types from RFC 3611.
Extended Report block types from RFC 3611.
ECNCE signals ECN Congestion Encountered, CE
ECNECT0 signals ECN Capable Transport, ECT(1)
ECNECT1 signals ECN Capable Transport, ECT(0)
ECNNonECT signals Non ECN-Capable Transport, Non-ECT
Transport and Payload specific feedback messages overload the count field to act as a message type. those are listed here
Transport and Payload specific feedback messages overload the count field to act as a message type. those are listed here
Transport and Payload specific feedback messages overload the count field to act as a message type. those are listed here
Transport and Payload specific feedback messages overload the count field to act as a message type. those are listed here
Transport and Payload specific feedback messages overload the count field to act as a message type. those are listed here
Transport and Payload specific feedback messages overload the count field to act as a message type. those are listed here
Transport and Payload specific feedback messages overload the count field to act as a message type. those are listed here
Extended Report block types from RFC 3611.
Extended Report block types from RFC 3611.
Extended Report block types from RFC 3611.
These are the valid values that ChunkType can assume
RTP SDES item types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5
RTP SDES item types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5
RTP SDES item types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5
RTP SDES item types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5
RTP SDES item types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5
RTP SDES item types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5
RTP SDES item types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5
RTP SDES item types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5
RTP SDES item types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-5
Extended Report block types from RFC 3611.
These are the valid values that ChunkType can assume
Values for TTLorHopLimitType
Values for TTLorHopLimitType
Values for TTLorHopLimitType
RTCP packet types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-4
RTCP packet types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-4
RTCP packet types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-4
RTCP packet types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-4
RTCP packet types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-4
RTCP packet types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-4
RTCP packet types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-4
TypeTCCDeltaScaleFactor https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#section-3.1.5
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
for status vector chunk
RTCP packet types registered with IANA. See: https://www.iana.org/assignments/rtp-parameters/rtp-parameters.xhtml#rtp-parameters-4
Extended Report block types from RFC 3611.
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |