mirror of
				https://github.com/ossrs/srs.git
				synced 2025-03-09 15:49:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			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()
 | 
						|
	// ...
 | 
						|
 | 
						|
*/
 | 
						|
package rtcp
 |