while((pr = TAILQ_FIRST(&tf->tf_ptsq)) != NULL) {
pkt = pr->pr_pkt;
+ TAILQ_REMOVE(&tf->tf_ptsq, pr, pr_link);
+ free(pr);
+
tfs = tfs_find(tf, pkt);
switch(tfs->tfs_type) {
try to find it */
srch = TAILQ_NEXT(pr, pr_link);
while(1) {
- if(srch == NULL)
+ if(srch == NULL) {
+ pkt_ref_dec(pkt);
return; /* not arrived yet, wait */
+ }
if(tfs_find(tf, srch->pr_pkt) == tfs &&
srch->pr_pkt->pkt_frametype <= PKT_P_FRAME) {
pkt->pkt_pts = srch->pr_pkt->pkt_dts;
break;
}
- TAILQ_REMOVE(&tf->tf_ptsq, pr, pr_link);
normalize_ts(tf, tfs, pkt);
- free(pr);
}
}
switch(sm->sm_type) {
case SMT_PACKET:
- if (tf->tf_wait_for_video)
+ if (tf->tf_wait_for_video) {
+ streaming_msg_free(sm);
return;
+ }
tsfix_input_packet(tf, sm);
return;
case SMT_START:
tsfix_start(tf, sm->sm_data);
- if (tf->tf_wait_for_video)
+ if (tf->tf_wait_for_video) {
+ streaming_msg_free(sm);
return;
+ }
break;
case SMT_STOP: