Documentation ¶
Overview ¶
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:
pkt, err := rtcp.Unmarshal(rtcpData) // ... 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() // ...
Index ¶
- Constants
- func Marshal(packets []Packet) ([]byte, error)
- type CompoundPacket
- type FIREntry
- type FullIntraRequest
- type Goodbye
- type Header
- type NackPair
- type Packet
- type PacketBitmap
- type PacketStatusChunk
- 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 ReceiverEstimatedMaximumBitrate
- func (p *ReceiverEstimatedMaximumBitrate) DestinationSSRC() []uint32
- func (p *ReceiverEstimatedMaximumBitrate) Header() Header
- func (p ReceiverEstimatedMaximumBitrate) Marshal() (buf []byte, err error)
- func (p ReceiverEstimatedMaximumBitrate) MarshalSize() (n int)
- func (p ReceiverEstimatedMaximumBitrate) MarshalTo(buf []byte) (n int, err error)
- func (p *ReceiverEstimatedMaximumBitrate) String() string
- func (p *ReceiverEstimatedMaximumBitrate) Unmarshal(buf []byte) (err error)
- type ReceiverReport
- type ReceptionReport
- type RecvDelta
- type RunLengthChunk
- type SDESType
- type SLIEntry
- type SenderReport
- type SliceLossIndication
- type SourceDescription
- type SourceDescriptionChunk
- type SourceDescriptionItem
- type StatusVectorChunk
- type TransportLayerCC
- type TransportLayerNack
Constants ¶
const ( FormatSLI uint8 = 2 FormatPLI uint8 = 1 FormatFIR uint8 = 4 FormatTLN uint8 = 1 FormatRRR uint8 = 5 FormatREMB uint8 = 15 //https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#page-5 FormatTCC uint8 = 15 )
Transport and Payload specific feedback messages overload the count field to act as a message type. those are listed here
const ( // type of packet status chunk TypeTCCRunLengthChunk = 0 TypeTCCStatusVectorChunk = 1 )
for packet status chunk
const ( // https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#section-3.1.1 TypeTCCPacketNotReceived = uint16(iota) TypeTCCPacketReceivedSmallDelta TypeTCCPacketReceivedLargeDelta // https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#page-7 // see Example 2: "packet received, w/o recv delta" TypeTCCPacketReceivedWithoutDelta )
type of packet status symbol and recv delta
const ( // https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#section-3.1.4 TypeTCCSymbolSizeOneBit = 0 TypeTCCSymbolSizeTwoBit = 1 )
for status vector chunk
const (
//TypeTCCDeltaScaleFactor https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#section-3.1.5
TypeTCCDeltaScaleFactor = 250
)
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CompoundPacket ¶
type CompoundPacket []Packet
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.
func (CompoundPacket) CNAME ¶
func (c CompoundPacket) CNAME() (string, error)
CNAME returns the CNAME that *must* be present in every CompoundPacket
func (CompoundPacket) DestinationSSRC ¶
func (c CompoundPacket) DestinationSSRC() []uint32
DestinationSSRC returns the synchronization sources associated with this CompoundPacket's reception report.
func (CompoundPacket) Marshal ¶
func (c CompoundPacket) Marshal() ([]byte, error)
Marshal encodes the CompoundPacket as binary.
func (*CompoundPacket) Unmarshal ¶
func (c *CompoundPacket) Unmarshal(rawData []byte) error
Unmarshal decodes a CompoundPacket from binary.
func (CompoundPacket) Validate ¶
func (c CompoundPacket) Validate() error
Validate returns an error if this is not an RFC-compliant CompoundPacket.
type FullIntraRequest ¶
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.
func (*FullIntraRequest) DestinationSSRC ¶
func (p *FullIntraRequest) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*FullIntraRequest) Header ¶
func (p *FullIntraRequest) Header() Header
Header returns the Header associated with this packet.
func (FullIntraRequest) Marshal ¶
func (p FullIntraRequest) Marshal() ([]byte, error)
Marshal encodes the FullIntraRequest
func (*FullIntraRequest) String ¶
func (p *FullIntraRequest) String() string
func (*FullIntraRequest) Unmarshal ¶
func (p *FullIntraRequest) Unmarshal(rawPacket []byte) error
Unmarshal decodes the TransportLayerNack
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 ¶
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 ¶
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 ¶
PacketList returns a list of Nack'd packets that's referenced by a NackPair
type Packet ¶
type Packet interface { // 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
func Unmarshal ¶
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.
type PacketBitmap ¶
type PacketBitmap uint16
PacketBitmap shouldn't be used like a normal integral, so it's type is masked here. Access it with PacketList().
type PacketStatusChunk ¶
PacketStatusChunk has two kinds: RunLengthChunk and StatusVectorChunk
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 }
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 ¶
func (p *PictureLossIndication) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*PictureLossIndication) Header ¶
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 ¶
func (p *PictureLossIndication) String() string
func (*PictureLossIndication) Unmarshal ¶
func (p *PictureLossIndication) Unmarshal(rawPacket []byte) error
Unmarshal decodes the PictureLossIndication from binary
type RapidResynchronizationRequest ¶
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 ¶
func (p *RapidResynchronizationRequest) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*RapidResynchronizationRequest) Header ¶
func (p *RapidResynchronizationRequest) Header() Header
Header returns the Header associated with this packet.
func (RapidResynchronizationRequest) Marshal ¶
func (p RapidResynchronizationRequest) Marshal() ([]byte, error)
Marshal encodes the RapidResynchronizationRequest in binary
func (*RapidResynchronizationRequest) String ¶
func (p *RapidResynchronizationRequest) String() string
func (*RapidResynchronizationRequest) Unmarshal ¶
func (p *RapidResynchronizationRequest) Unmarshal(rawPacket []byte) error
Unmarshal decodes the RapidResynchronizationRequest from binary
type RawPacket ¶
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 ¶
DestinationSSRC returns an array of SSRC values that this packet refers to.
type ReceiverEstimatedMaximumBitrate ¶
type ReceiverEstimatedMaximumBitrate struct { // SSRC of sender SenderSSRC uint32 // Estimated maximum bitrate Bitrate uint64 // SSRC entries which this packet applies to SSRCs []uint32 }
ReceiverEstimatedMaximumBitrate contains the receiver's estimated maximum bitrate. see: https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03
func (*ReceiverEstimatedMaximumBitrate) DestinationSSRC ¶
func (p *ReceiverEstimatedMaximumBitrate) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*ReceiverEstimatedMaximumBitrate) Header ¶
func (p *ReceiverEstimatedMaximumBitrate) Header() Header
Header returns the Header associated with this packet.
func (ReceiverEstimatedMaximumBitrate) Marshal ¶
func (p ReceiverEstimatedMaximumBitrate) Marshal() (buf []byte, err error)
Marshal serializes the packet and returns a byte slice.
func (ReceiverEstimatedMaximumBitrate) MarshalSize ¶
func (p ReceiverEstimatedMaximumBitrate) MarshalSize() (n int)
MarshalSize returns the size of the packet when marshaled. This can be used in conjunction with `MarshalTo` to avoid allocations.
func (ReceiverEstimatedMaximumBitrate) MarshalTo ¶
func (p ReceiverEstimatedMaximumBitrate) MarshalTo(buf []byte) (n int, err error)
MarshalTo serializes the packet to the given byte slice.
func (*ReceiverEstimatedMaximumBitrate) String ¶
func (p *ReceiverEstimatedMaximumBitrate) String() string
String prints the REMB packet in a human-readable format.
func (*ReceiverEstimatedMaximumBitrate) Unmarshal ¶
func (p *ReceiverEstimatedMaximumBitrate) Unmarshal(buf []byte) (err error)
Unmarshal reads a REMB packet from the given byte slice.
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 // Extension contains additional, payload-specific information that needs to // be reported regularly about the receiver. ProfileExtensions []byte }
A ReceiverReport (RR) packet provides reception quality feedback for an RTP stream
func (*ReceiverReport) DestinationSSRC ¶
func (r *ReceiverReport) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*ReceiverReport) Header ¶
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 ¶
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 RecvDelta ¶
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
type RunLengthChunk ¶
type RunLengthChunk struct { PacketStatusChunk // T = TypeTCCRunLengthChunk Type uint16 // S: type of packet status // kind: TypeTCCPacketNotReceived or... PacketStatusSymbol uint16 // RunLength: count of S RunLength uint16 }
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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
func (*RunLengthChunk) Unmarshal ¶
func (r *RunLengthChunk) Unmarshal(rawPacket []byte) error
Unmarshal ..
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 ¶
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 // ProfileExtensions contains additional, payload-specific information that needs to // be reported regularly about the sender. ProfileExtensions []byte }
A SenderReport (SR) packet provides reception quality feedback for an RTP stream
func (*SenderReport) DestinationSSRC ¶
func (r *SenderReport) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*SenderReport) Header ¶
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) String ¶
func (r SenderReport) String() string
func (*SenderReport) Unmarshal ¶
func (r *SenderReport) Unmarshal(rawPacket []byte) error
Unmarshal decodes the SenderReport from binary
type SliceLossIndication ¶
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 ¶
func (p *SliceLossIndication) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*SliceLossIndication) Header ¶
func (p *SliceLossIndication) Header() Header
Header returns the Header associated with this packet.
func (SliceLossIndication) Marshal ¶
func (p SliceLossIndication) Marshal() ([]byte, error)
Marshal encodes the SliceLossIndication in binary
func (*SliceLossIndication) String ¶
func (p *SliceLossIndication) String() string
func (*SliceLossIndication) Unmarshal ¶
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 ¶
func (s *SourceDescription) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*SourceDescription) Header ¶
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) String ¶
func (s *SourceDescription) String() string
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 StatusVectorChunk ¶
type StatusVectorChunk struct { PacketStatusChunk // T = TypeTCCRunLengthChunk Type uint16 // TypeTCCSymbolSizeOneBit or TypeTCCSymbolSizeTwoBit SymbolSize uint16 // when SymbolSize = TypeTCCSymbolSizeOneBit, SymbolList is 14*1bit: // TypeTCCSymbolListPacketReceived or TypeTCCSymbolListPacketNotReceived // when SymbolSize = TypeTCCSymbolSizeTwoBit, SymbolList is 7*2bit: // TypeTCCPacketNotReceived TypeTCCPacketReceivedSmallDelta TypeTCCPacketReceivedLargeDelta or typePacketReserved SymbolList []uint16 }
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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
func (*StatusVectorChunk) Unmarshal ¶
func (r *StatusVectorChunk) Unmarshal(rawPacket []byte) error
Unmarshal ..
type TransportLayerCC ¶
type TransportLayerCC struct { // header Header Header // SSRC of sender SenderSSRC uint32 // SSRC of the media source MediaSSRC uint32 // Transport wide sequence of rtp extension BaseSequenceNumber uint16 // PacketStatusCount PacketStatusCount uint16 // ReferenceTime ReferenceTime uint32 // FbPktCount FbPktCount uint8 // PacketChunks PacketChunks []PacketStatusChunk // RecvDeltas RecvDeltas []*RecvDelta }
TransportLayerCC for sender-BWE https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#page-5
func (TransportLayerCC) DestinationSSRC ¶
func (t TransportLayerCC) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*TransportLayerCC) Len ¶
func (t *TransportLayerCC) Len() uint16
Len return total bytes with padding
func (TransportLayerCC) Marshal ¶
func (t TransportLayerCC) Marshal() ([]byte, error)
Marshal encodes the TransportLayerCC in binary
func (TransportLayerCC) String ¶
func (t TransportLayerCC) String() string
func (*TransportLayerCC) Unmarshal ¶
func (t *TransportLayerCC) Unmarshal(rawPacket []byte) error
Unmarshal ..
type TransportLayerNack ¶
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 ¶
func (p *TransportLayerNack) DestinationSSRC() []uint32
DestinationSSRC returns an array of SSRC values that this packet refers to.
func (*TransportLayerNack) Header ¶
func (p *TransportLayerNack) Header() Header
Header returns the Header associated with this packet.
func (TransportLayerNack) Marshal ¶
func (p TransportLayerNack) Marshal() ([]byte, error)
Marshal encodes the TransportLayerNack in binary
func (TransportLayerNack) String ¶
func (p TransportLayerNack) String() string
func (*TransportLayerNack) Unmarshal ¶
func (p *TransportLayerNack) Unmarshal(rawPacket []byte) error
Unmarshal decodes the TransportLayerNack from binary
Source Files ¶
- compound_packet.go
- doc.go
- errors.go
- full_intra_request.go
- goodbye.go
- header.go
- packet.go
- picture_loss_indication.go
- rapid_resynchronization_request.go
- raw_packet.go
- receiver_estimated_maximum_bitrate.go
- receiver_report.go
- reception_report.go
- sender_report.go
- slice_loss_indication.go
- source_description.go
- transport_layer_cc.go
- transport_layer_nack.go
- util.go