[feat] rtp: 解析rtp包中的padding

pull/241/head
q191201771 2 years ago
parent e5206c81e2
commit 6625cce10c

@ -64,6 +64,7 @@ type RtpHeader struct {
Csrc []uint32
payloadOffset uint32 // body部分真正数据部分的起始位置
paddingLength int // 末尾padding的长度
}
type RtpPacket struct {
@ -128,6 +129,10 @@ func ParseRtpHeader(b []byte) (h RtpHeader, err error) {
}
h.payloadOffset = uint32(offset)
if h.Padding == 1 {
h.paddingLength = int(b[len(b)-1])
}
return
}
@ -147,6 +152,10 @@ func (p *RtpPacket) Body() []byte {
Log.Warnf("CHEFNOTICEME. payloadOffset=%d", p.Header.payloadOffset)
p.Header.payloadOffset = RtpFixedHeaderLength
}
if p.Header.Padding == 1 {
return p.Raw[p.Header.payloadOffset : len(p.Raw)-p.Header.paddingLength]
}
return p.Raw[p.Header.payloadOffset:]
}
@ -170,6 +179,7 @@ func IsAvcBoundary(pkt RtpPacket) bool {
avc.NaluTypeIdrSlice: {},
}
// TODO(chef): [fix] 检查数据长度有效性 202211
b := pkt.Body()
outerNaluType := avc.ParseNaluType(b[0])
@ -211,6 +221,7 @@ func IsHevcBoundary(pkt RtpPacket) bool {
hevc.NaluTypeSliceRsvIrapVcl23: {},
}
// TODO(chef): [fix] 检查数据长度有效性 202211
b := pkt.Body()
outerNaluType := hevc.ParseNaluType(b[0])

Loading…
Cancel
Save