@@ -123,7 +123,7 @@ ngx_rtmp_mpegts_write_frame(ngx_file_t *file, ngx_rtmp_mpegts_frame_t *f,
123
123
ngx_buf_t * b )
124
124
{
125
125
ngx_uint_t pes_size , header_size , body_size , in_size , stuff_size , flags ;
126
- u_char packet [188 ], * p ;
126
+ u_char packet [188 ], * p , * base ;
127
127
ngx_int_t first , rc ;
128
128
129
129
ngx_log_debug6 (NGX_LOG_DEBUG_HTTP , file -> log , 0 ,
@@ -208,19 +208,24 @@ ngx_rtmp_mpegts_write_frame(ngx_file_t *file, ngx_rtmp_mpegts_frame_t *f,
208
208
stuff_size = (body_size - in_size );
209
209
210
210
if (packet [3 ] & 0x20 ) {
211
+
212
+ /* has adaptation */
213
+
214
+ base = & packet [5 ] + packet [4 ];
215
+ p = ngx_movemem (base + stuff_size , base , p - base );
216
+ ngx_memset (base , 0xff , stuff_size );
211
217
packet [4 ] += stuff_size ;
212
- p = ngx_movemem (& packet [6 ] + stuff_size , & packet [6 ], p - & packet [4 ]);
213
- ngx_memset (& packet [6 ], 0xff , stuff_size );
214
218
215
219
} else {
220
+
221
+ /* no adaptation */
222
+
216
223
packet [3 ] |= 0x20 ;
217
- if (stuff_size == 1 ) {
218
- p = ngx_movemem (& packet [5 ], & packet [4 ], p - & packet [4 ]);
219
- packet [4 ] = 0 ;
220
- } else {
221
- p = ngx_movemem (& packet [4 ] + stuff_size , & packet [4 ],
222
- p - & packet [4 ]);
223
- packet [4 ] = stuff_size - 1 ;
224
+ p = ngx_movemem (& packet [4 ] + stuff_size , & packet [4 ],
225
+ p - & packet [4 ]);
226
+
227
+ packet [4 ] = stuff_size - 1 ;
228
+ if (stuff_size >= 2 ) {
224
229
packet [5 ] = 0 ;
225
230
ngx_memset (& packet [6 ], 0xff , stuff_size - 2 );
226
231
}
0 commit comments