protocol/rtp: removed Len field from ExtensionHeader struct as we can gather from len(ExtensionHeader.Header)

This commit is contained in:
Saxon 2019-04-02 21:49:11 +10:30
parent 95a9e4a2ef
commit efa0d38aad
2 changed files with 5 additions and 10 deletions

View File

@ -64,7 +64,6 @@ type Pkt struct {
// ExtensionHeader header provides fields for an RTP packet extension header.
type ExtensionHeader struct {
ID uint16
Len uint16
Header [][4]byte
}
@ -73,10 +72,7 @@ func (p *Pkt) Bytes(buf []byte) []byte {
// Calculate the required length for the RTP packet.
headerExtensionLen := 0
if p.X {
if p.Extension.Len != uint16(len(p.Extension.Header)) {
panic("bad rtp packet extension length field")
}
headerExtensionLen = int(4 + 4*p.Extension.Len)
headerExtensionLen = int(4 + 4*len(p.Extension.Header))
}
requiredPktLen := defaultHeadSize + uint8(4*p.CC) + uint8(headerExtensionLen) + uint8(len(p.Payload)) + uint8(len(p.Padding))
@ -110,12 +106,12 @@ func (p *Pkt) Bytes(buf []byte) []byte {
if p.X {
binary.BigEndian.PutUint16(buf[idx:idx+2], p.Extension.ID)
idx += 2
binary.BigEndian.PutUint16(buf[idx:idx+2], p.Extension.Len)
binary.BigEndian.PutUint16(buf[idx:idx+2], uint16(len(p.Extension.Header)))
idx += 2
for i := 0; i < int(p.Extension.Len); i++ {
for i := 0; i < len(p.Extension.Header); i++ {
copy(buf[idx+i*4:], p.Extension.Header[i][:])
}
idx += int(p.Extension.Len * 4)
idx += len(p.Extension.Header) * 4
}
// If there is payload, add to the buffer.

View File

@ -156,8 +156,7 @@ var rtpTests = []struct {
{0x05, 0x06, 0x07, 0x08},
},
Extension: ExtensionHeader{
ID: 15,
Len: 2,
ID: 15,
Header: [][4]byte{
{0x01, 0x02, 0x03, 0x04},
{0x05, 0x06, 0x07, 0x08},