MCPcopy Create free account
hub / github.com/Monibuca/engine / PacketizeRTP

Method PacketizeRTP

track/rtp.go:48–76  ·  view source on GitHub ↗

https://www.cnblogs.com/moonwalk/p/15903760.html Packetize packetizes the payload of an RTP packet and returns one or more RTP packets

(payloads ...[][]byte)

Source from the content-addressed store, hash-verified

46// https://www.cnblogs.com/moonwalk/p/15903760.html
47// Packetize packetizes the payload of an RTP packet and returns one or more RTP packets
48func (av *Media) PacketizeRTP(payloads ...[][]byte) {
49 var rtpItem *LIRTP
50 for _, pp := range payloads {
51 rtpItem = av.GetRTPFromPool()
52 packet := &rtpItem.Value
53 br := util.LimitBuffer{Buffer: packet.Payload}
54 if av.SampleRate != 90000 {
55 packet.Timestamp = uint32(time.Duration(av.SampleRate) * av.Value.PTS / 90000)
56 } else {
57 packet.Timestamp = uint32(av.Value.PTS)
58 }
59 packet.Marker = false
60 for _, p := range pp {
61 if _, err := br.Write(p); err != nil {
62 av.Error("rtp payload write error", zap.Error(err))
63 for i, pp := range payloads {
64 for j, p := range pp {
65 av.Error("rtp payload", zap.Int("i", i), zap.Int("j", j), zap.Int("len", len(p)))
66 }
67 }
68 return
69 }
70 }
71 packet.Payload = br.Bytes()
72 av.Value.RTP.Push(rtpItem)
73 }
74 // 最后一个rtp包标记为true
75 rtpItem.Value.Marker = true
76}
77
78type RTPDemuxer struct {
79 lastSeq uint16 //上一个rtp包的序号

Callers 6

CompleteRTPMethod · 0.80
CompleteRTPMethod · 0.80
CompleteRTPMethod · 0.80
CompleteRTPMethod · 0.80
CompleteRTPMethod · 0.80
CompleteRTPMethod · 0.80

Calls 5

GetRTPFromPoolMethod · 0.95
WriteMethod · 0.95
ErrorMethod · 0.65
BytesMethod · 0.65
PushMethod · 0.65

Tested by

no test coverage detected