@@ -59,51 +59,61 @@ func TestWriteRTP(t *testing.T) {
5959 hasKeyFrame bool
6060 wantBytes []byte
6161 wantErr error
62+ reuseWriter bool
6263 }{
6364 {
6465 "When given an empty payload; it should return nil" ,
6566 []byte {},
6667 false ,
6768 []byte {},
6869 nil ,
70+ false ,
6971 },
7072 {
7173 "When no keyframe is defined; it should discard the packet" ,
7274 []byte {0x25 , 0x90 , 0x90 },
7375 false ,
7476 []byte {},
7577 nil ,
78+ false ,
7679 },
7780 {
7881 "When a valid Single NAL Unit packet is given; it should unpack it without error" ,
7982 []byte {0x27 , 0x90 , 0x90 },
8083 true ,
8184 []byte {0x00 , 0x00 , 0x00 , 0x01 , 0x27 , 0x90 , 0x90 },
8285 nil ,
86+ false ,
8387 },
8488 {
8589 "When a valid STAP-A packet is given; it should unpack it without error" ,
8690 []byte {0x38 , 0x00 , 0x03 , 0x27 , 0x90 , 0x90 , 0x00 , 0x05 , 0x28 , 0x90 , 0x90 , 0x90 , 0x90 },
8791 true ,
8892 []byte {0x00 , 0x00 , 0x00 , 0x01 , 0x27 , 0x90 , 0x90 , 0x00 , 0x00 , 0x00 , 0x01 , 0x28 , 0x90 , 0x90 , 0x90 , 0x90 },
8993 nil ,
94+ false ,
9095 },
9196 {
9297 "When a valid FU-A start packet is given; it should unpack it without error" ,
9398 []byte {0x3C , 0x85 , 0x90 , 0x90 , 0x90 },
9499 true ,
95- []byte {0x00 , 0x00 , 0x00 , 0x01 , 0x25 , 0x90 , 0x90 , 0x90 },
100+ []byte {},
96101 nil ,
102+ true ,
97103 },
98104 {
99105 "When a valid FU-A end packet is given; it should unpack it without error" ,
100106 []byte {0x3C , 0x45 , 0x90 , 0x90 , 0x90 },
101107 true ,
102- []byte {0x90 , 0x90 , 0x90 },
108+ []byte {0x00 , 0x00 , 0x00 , 0x01 , 0x25 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 },
103109 nil ,
110+ false ,
104111 },
105112 }
106113
114+ var reuseWriter * bytes.Buffer
115+ var reuseH264Writer * H264Writer
116+
107117 for _ , tt := range tests {
108118 tt := tt
109119 t .Run (tt .name , func (t * testing.T ) {
@@ -112,6 +122,12 @@ func TestWriteRTP(t *testing.T) {
112122 hasKeyFrame : tt .hasKeyFrame ,
113123 writer : writer ,
114124 }
125+ if reuseWriter != nil {
126+ writer = reuseWriter
127+ }
128+ if reuseH264Writer != nil {
129+ h264Writer = reuseH264Writer
130+ }
115131 packet := & rtp.Packet {
116132 Payload : tt .payload ,
117133 }
@@ -120,7 +136,14 @@ func TestWriteRTP(t *testing.T) {
120136
121137 assert .Equal (t , tt .wantErr , err )
122138 assert .True (t , bytes .Equal (tt .wantBytes , writer .Bytes ()))
123- assert .Nil (t , h264Writer .Close ())
139+ if ! tt .reuseWriter {
140+ assert .Nil (t , h264Writer .Close ())
141+ reuseWriter = nil
142+ reuseH264Writer = nil
143+ } else {
144+ reuseWriter = writer
145+ reuseH264Writer = h264Writer
146+ }
124147 })
125148 }
126149}
0 commit comments