struct sockaddr_storage *peer, int port,
int fd_rtp, int fd_rtcp,
int frontend, int source, dvb_mux_conf_t *dmc,
- mpegts_apids_t *pids)
+ mpegts_apids_t *pids, int perm_lock)
{
satip_rtp_session_t *rtp = calloc(1, sizeof(*rtp));
socket_set_dscp(rtp->fd_rtcp, IPTOS_DSCP_EF, NULL, 0);
}
+ if (perm_lock) {
+ rtp->sig.signal_scale = SIGNAL_STATUS_SCALE_RELATIVE;
+ rtp->sig.signal = 0xa000;
+ rtp->sig.snr_scale = SIGNAL_STATUS_SCALE_RELATIVE;
+ rtp->sig.snr = 28000;
+ }
+
pthread_mutex_lock(&satip_rtp_lock);
TAILQ_INSERT_TAIL(&satip_rtp_sessions, rtp, link);
tvhthread_create(&rtp->tid, NULL, satip_rtp_thread, rtp, "satip-rtp");
int src;
int state;
int shutdown_on_close;
+ int perm_lock;
uint32_t nsession;
char session[9];
dvb_mux_conf_t dmc;
MPEGTS_ONID_NONE, MPEGTS_TSID_NONE);
if (mux) {
dmc = ((dvb_mux_t *)mux)->lm_tuning;
+ rs->perm_lock = 0;
break;
}
}
break;
if (mux) {
dmc = rs->dmc;
+ rs->perm_lock = 1;
break;
}
}
mn2->mn_create_mux(mn2, (void *)(intptr_t)rs->nsession,
MPEGTS_ONID_NONE, MPEGTS_TSID_NONE,
&rs->dmc, 1);
- if (mux)
+ if (mux) {
created = 1;
+ rs->perm_lock = 1;
+ }
}
if (mux == NULL) {
dvb_mux_conf_str(&rs->dmc, buf, sizeof(buf));
hc->hc_peer, rs->rtp_peer_port,
rs->udp_rtp->fd, rs->udp_rtcp->fd,
rs->frontend, rs->findex, &rs->dmc_tuned,
- &rs->pids);
+ &rs->pids, rs->perm_lock);
if (!rs->pids.all && rs->pids.count == 0)
mpegts_pid_add(&rs->pids, 0, MPS_WEIGHT_RAW);
svc = (mpegts_service_t *)rs->subs->ths_raw_service;
int fd_rtp, int fd_rtcp,
int frontend, int source,
dvb_mux_conf_t *dmc,
- mpegts_apids_t *pids);
+ mpegts_apids_t *pids, int perm_lock);
void satip_rtp_update(void *id, th_subscription_t *subs,
streaming_queue_t *sq,
int frontend, int source,