mirror of
https://github.com/Monibuca/engine.git
synced 2025-10-22 08:09:22 +08:00
修复stream序列化循环引用问题
This commit is contained in:
13
track/rtp.go
13
track/rtp.go
@@ -7,6 +7,7 @@ import (
|
|||||||
"m7s.live/engine/v4/config"
|
"m7s.live/engine/v4/config"
|
||||||
"m7s.live/engine/v4/util"
|
"m7s.live/engine/v4/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RTPWriter interface {
|
type RTPWriter interface {
|
||||||
writeRTPFrame(frame *RTPFrame)
|
writeRTPFrame(frame *RTPFrame)
|
||||||
}
|
}
|
||||||
@@ -33,7 +34,6 @@ func (av *Media[T]) UnmarshalRTP(raw []byte) (frame *RTPFrame) {
|
|||||||
return av.UnmarshalRTPPacket(&p)
|
return av.UnmarshalRTPPacket(&p)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// WriteRTPPack 写入已反序列化的RTP包
|
// WriteRTPPack 写入已反序列化的RTP包
|
||||||
func (av *Media[T]) WriteRTPPack(p *rtp.Packet) {
|
func (av *Media[T]) WriteRTPPack(p *rtp.Packet) {
|
||||||
for frame := av.UnmarshalRTPPacket(p); frame != nil; frame = av.nextRTPFrame() {
|
for frame := av.UnmarshalRTPPacket(p); frame != nil; frame = av.nextRTPFrame() {
|
||||||
@@ -48,12 +48,11 @@ func (av *Media[T]) WriteRTP(raw []byte) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
type RTPDemuxer struct {
|
type RTPDemuxer struct {
|
||||||
lastSeq uint16 //上一个收到的序号,用于乱序重排
|
lastSeq uint16 //上一个收到的序号,用于乱序重排
|
||||||
lastSeq2 uint16 //记录上上一个收到的序列号
|
lastSeq2 uint16 //记录上上一个收到的序列号
|
||||||
乱序重排 util.RTPReorder[*RTPFrame]
|
乱序重排 util.RTPReorder[*RTPFrame]
|
||||||
RTPWriter
|
RTPWriter `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取缓存中下一个rtpFrame
|
// 获取缓存中下一个rtpFrame
|
||||||
@@ -87,6 +86,4 @@ func (av *RTPDemuxer) recorderRTP(frame *RTPFrame) *RTPFrame {
|
|||||||
|
|
||||||
type RTPMuxer struct {
|
type RTPMuxer struct {
|
||||||
rtpSequence uint16 //用于生成下一个rtp包的序号
|
rtpSequence uint16 //用于生成下一个rtp包的序号
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user