};
static int
-iptv_input_is_free ( mpegts_input_t *mi )
+iptv_input_is_free ( mpegts_input_t *mi, mpegts_mux_t *mm )
{
int c = 0;
mpegts_mux_instance_t *mmi;
- mpegts_network_link_t *mnl;
+ iptv_network_t *in = (iptv_network_t *)mm->mm_network;
LIST_FOREACH(mmi, &mi->mi_mux_active, mmi_active_link)
- c++;
+ if (mmi->mmi_mux->mm_network == (mpegts_network_t *)in)
+ c++;
/* Limit reached */
- LIST_FOREACH(mnl, &mi->mi_networks, mnl_mi_link) {
- iptv_network_t *in = (iptv_network_t*)mnl->mnl_network;
- if (in->in_max_streams && c >= in->in_max_streams)
- return 0;
- }
+ if (in->in_max_streams && c >= in->in_max_streams)
+ return 0;
/* Bandwidth reached */
- LIST_FOREACH(mnl, &mi->mi_networks, mnl_mi_link) {
- iptv_network_t *in = (iptv_network_t*)mnl->mnl_network;
- if (in->in_bw_limited)
+ if (in->in_bw_limited)
return 0;
- }
return 1;
}
const service_t *s;
/* Find the "min" weight */
- if (!iptv_input_is_free(mi)) {
+ if (!iptv_input_is_free(mi, mm)) {
w = 1000000;
/* Service subs */
return 0;
/* Do we need to stop something? */
- if (!iptv_input_is_free(mi)) {
+ if (!iptv_input_is_free(mi, mmi->mmi_mux)) {
pthread_mutex_lock(&mi->mi_output_lock);
mpegts_mux_instance_t *m, *s = NULL;
int w = 1000000;