}
void
-iptv_input_mux_started ( iptv_input_t *mi, iptv_mux_t *im )
+iptv_input_mux_started ( iptv_input_t *mi, iptv_mux_t *im, int reset )
{
/* Allocate input buffer */
- sbuf_reset_and_alloc(&im->mm_iptv_buffer, IPTV_BUF_SIZE);
+ if (reset)
+ sbuf_reset_and_alloc(&im->mm_iptv_buffer, IPTV_BUF_SIZE);
im->im_pcr = PTS_UNSET;
im->im_pcr_pid = MPEGTS_PID_NONE;
fp->fd = fd;
tvh_cond_init(&fp->cond, 1);
im->im_data = fp;
- iptv_input_mux_started(mi, im);
+ iptv_input_mux_started(mi, im, 1);
tvh_thread_create(&fp->tid, NULL, iptv_file_thread, im, "iptvfile");
return 0;
}
hp->flush = 0;
tvh_mutex_lock(&iptv_lock);
if (!hp->started) {
- iptv_input_mux_started(hp->mi, im);
+ iptv_input_mux_started(hp->mi, im, 0);
} else {
iptv_input_recv_flush(im);
}
http_client_t *hc;
int r;
+ sbuf_reset_and_alloc(&im->mm_iptv_buffer, IPTV_BUF_SIZE);
+
hp = calloc(1, sizeof(*hp));
hp->mi = mi;
hp->im = im;
la->mux = im;
tvh_pipe(O_NONBLOCK, &la->pipe);
im->mm_iptv_fd = la->pipe.rd;
- iptv_input_fd_started(mi, im);
+ iptv_input_fd_started(mi, im, 1);
atomic_set(&la->running, 1);
atomic_set(&la->pause, 0);
sbuf_init(&la->sbuf);
im->mm_iptv_respawn_last = mclk();
if (url)
- iptv_input_mux_started(mi, im);
+ iptv_input_mux_started(mi, im, 1);
return 0;
err:
int iptv_input_fd_started ( iptv_input_t *mi, iptv_mux_t *im );
void iptv_input_close_fds ( iptv_input_t *mi, iptv_mux_t *im );
-void iptv_input_mux_started ( iptv_input_t *mi, iptv_mux_t *im );
+void iptv_input_mux_started ( iptv_input_t *mi, iptv_mux_t *im, int reset );
int iptv_input_recv_packets ( iptv_mux_t *im, ssize_t len );
void iptv_input_recv_flush ( iptv_mux_t *im );
void iptv_input_pause_handler ( iptv_input_t *mi, iptv_mux_t *im, int pause );
hc->hc_cmd = HTTP_CMD_NONE;
tvh_mutex_lock(&global_lock);
if (im->mm_active)
- iptv_input_mux_started((iptv_input_t *)im->mm_active->mmi_input, im);
+ iptv_input_mux_started((iptv_input_t *)im->mm_active->mmi_input, im, 1);
mtimer_arm_rel(&rp->alive_timer, iptv_rtsp_alive_cb, im,
sec2mono(MAX(1, (hc->hc_rtp_timeout / 2) - 1)));
tvh_mutex_unlock(&global_lock);
udp_multirecv_init(um, IPTV_PKTS, IPTV_PKT_PAYLOAD);
im->im_data = um;
- iptv_input_mux_started(mi, im);
+ iptv_input_mux_started(mi, im, 1);
return 0;
}