@@ -37,9 +37,9 @@ func TestBasic(t *testing.T) { // nolint:maintidx,cyclop
3737 Timestamp : 3653407706 ,
3838 SSRC : 476325762 ,
3939 CSRC : []uint32 {},
40+ PaddingSize : 0 ,
4041 },
41- Payload : rawPkt [20 :],
42- PaddingSize : 0 ,
42+ Payload : rawPkt [20 :],
4343 }
4444
4545 // Unmarshal to the used Packet should work as well.
@@ -79,6 +79,7 @@ func TestBasic(t *testing.T) { // nolint:maintidx,cyclop
7979 Timestamp : 3653407706 ,
8080 SSRC : 476325762 ,
8181 CSRC : []uint32 {},
82+ PaddingSize : 4 ,
8283 },
8384 Payload : rawPkt [20 :21 ],
8485 PaddingSize : 4 ,
@@ -108,9 +109,9 @@ func TestBasic(t *testing.T) { // nolint:maintidx,cyclop
108109 Timestamp : 3653407706 ,
109110 SSRC : 476325762 ,
110111 CSRC : []uint32 {},
112+ PaddingSize : 0 ,
111113 },
112- Payload : rawPkt [20 :],
113- PaddingSize : 0 ,
114+ Payload : rawPkt [20 :],
114115 }
115116 assert .NoError (t , packet .Unmarshal (rawPkt ))
116117 assert .Equal (t , packet , parsedPacket )
@@ -137,6 +138,7 @@ func TestBasic(t *testing.T) { // nolint:maintidx,cyclop
137138 Timestamp : 3653407706 ,
138139 SSRC : 476325762 ,
139140 CSRC : []uint32 {},
141+ PaddingSize : 5 ,
140142 },
141143 Payload : []byte {},
142144 PaddingSize : 5 ,
@@ -167,9 +169,9 @@ func TestBasic(t *testing.T) { // nolint:maintidx,cyclop
167169 Timestamp : 3653407706 ,
168170 SSRC : 476325762 ,
169171 CSRC : []uint32 {},
172+ PaddingSize : 0 ,
170173 },
171- Payload : []byte {},
172- PaddingSize : 0 ,
174+ Payload : []byte {},
173175 }
174176 err := packet .Unmarshal (rawPkt )
175177 assert .Error (t , err , "Unmarshal did not error on packet with excessive padding" )
@@ -197,9 +199,9 @@ func TestBasic(t *testing.T) { // nolint:maintidx,cyclop
197199 Timestamp : 3653407706 ,
198200 SSRC : 476325762 ,
199201 CSRC : []uint32 {},
202+ PaddingSize : 4 ,
200203 },
201- Payload : rawPkt [20 :21 ],
202- PaddingSize : 4 ,
204+ Payload : rawPkt [20 :21 ],
203205 }
204206 buf , err := parsedPacket .Marshal ()
205207 assert .NoError (t , err )
@@ -227,9 +229,9 @@ func TestBasic(t *testing.T) { // nolint:maintidx,cyclop
227229 Timestamp : 3653407706 ,
228230 SSRC : 476325762 ,
229231 CSRC : []uint32 {},
232+ PaddingSize : 5 ,
230233 },
231- Payload : []byte {},
232- PaddingSize : 5 ,
234+ Payload : []byte {},
233235 }
234236 buf , err = parsedPacket .Marshal ()
235237 assert .NoError (t , err )
@@ -257,9 +259,9 @@ func TestBasic(t *testing.T) { // nolint:maintidx,cyclop
257259 Timestamp : 3653407706 ,
258260 SSRC : 476325762 ,
259261 CSRC : []uint32 {},
262+ PaddingSize : 5 ,
260263 },
261- Payload : []byte {},
262- PaddingSize : 5 ,
264+ Payload : []byte {},
263265 }
264266 buf , err = parsedPacket .Marshal ()
265267 assert .NoError (t , err )
@@ -1255,6 +1257,83 @@ func TestClonePacket(t *testing.T) {
12551257 assert .NotEqual (t , clone .Payload [0 ], 0x1F , "Expected payload to be unchanged" )
12561258}
12571259
1260+ func TestMarshalRTPPacketFuncs (t * testing.T ) {
1261+ // packet with only padding
1262+ rawPkt := []byte {
1263+ 0xb0 , 0xe0 , 0x69 , 0x8f , 0xd9 , 0xc2 , 0x93 , 0xda , 0x1c , 0x64 ,
1264+ 0x27 , 0x82 , 0x00 , 0x01 , 0x00 , 0x01 , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0x00 , 0x00 , 0x05 ,
1265+ }
1266+ parsedPacket := & Packet {
1267+ Header : Header {
1268+ Padding : true ,
1269+ Marker : true ,
1270+ Extension : true ,
1271+ ExtensionProfile : 1 ,
1272+ Extensions : []Extension {
1273+ {0 , []byte {
1274+ 0xFF , 0xFF , 0xFF , 0xFF ,
1275+ }},
1276+ },
1277+ Version : 2 ,
1278+ PayloadType : 96 ,
1279+ SequenceNumber : 27023 ,
1280+ Timestamp : 3653407706 ,
1281+ SSRC : 476325762 ,
1282+ CSRC : []uint32 {},
1283+ PaddingSize : 5 ,
1284+ },
1285+ Payload : []byte {},
1286+ }
1287+
1288+ buf := make ([]byte , 100 )
1289+ n , err := MarshalPacketTo (buf , & parsedPacket .Header , parsedPacket .Payload )
1290+ assert .NoError (t , err )
1291+ assert .Equal (t , len (rawPkt ), n )
1292+ assert .Equal (t , rawPkt , buf [:n ])
1293+ assert .Equal (t , n , PacketMarshalSize (& parsedPacket .Header , parsedPacket .Payload ))
1294+ }
1295+
1296+ func TestDeprecatedPaddingSizeField (t * testing.T ) {
1297+ // packet with only padding
1298+ rawPkt := []byte {
1299+ 0xb0 , 0xe0 , 0x69 , 0x8f , 0xd9 , 0xc2 , 0x93 , 0xda , 0x1c , 0x64 ,
1300+ 0x27 , 0x82 , 0x00 , 0x01 , 0x00 , 0x01 , 0xFF , 0xFF , 0xFF , 0xFF , 0x00 , 0x00 , 0x00 , 0x00 , 0x05 ,
1301+ }
1302+ parsedPacket := & Packet {
1303+ Header : Header {
1304+ Padding : true ,
1305+ Marker : true ,
1306+ Extension : true ,
1307+ ExtensionProfile : 1 ,
1308+ Extensions : []Extension {
1309+ {0 , []byte {
1310+ 0xFF , 0xFF , 0xFF , 0xFF ,
1311+ }},
1312+ },
1313+ Version : 2 ,
1314+ PayloadType : 96 ,
1315+ SequenceNumber : 27023 ,
1316+ Timestamp : 3653407706 ,
1317+ SSRC : 476325762 ,
1318+ CSRC : []uint32 {},
1319+ },
1320+ Payload : []byte {},
1321+ PaddingSize : 5 ,
1322+ }
1323+
1324+ buf , err := parsedPacket .Marshal ()
1325+ assert .NoError (t , err )
1326+ assert .Equal (t , rawPkt , buf )
1327+ assert .EqualValues (t , 0 , parsedPacket .Header .PaddingSize )
1328+
1329+ assert .Equal (t , len (rawPkt ), parsedPacket .MarshalSize ())
1330+ assert .EqualValues (t , 0 , parsedPacket .Header .PaddingSize )
1331+
1332+ parsedPacket2 := parsedPacket .Clone ()
1333+ assert .EqualValues (t , 5 , parsedPacket2 .PaddingSize )
1334+ assert .EqualValues (t , 0 , parsedPacket2 .Header .PaddingSize )
1335+ }
1336+
12581337func BenchmarkMarshal (b * testing.B ) {
12591338 rawPkt := []byte {
12601339 0x90 , 0x60 , 0x69 , 0x8f , 0xd9 , 0xc2 , 0x93 , 0xda , 0x1c , 0x64 ,
0 commit comments