* Service instance list
*/
static void
-mpegts_service_enlist(service_t *t, tvh_input_t *ti,
- struct service_instance_list *sil, int flags)
+mpegts_service_enlist
+ ( service_t *t, tvh_input_t *ti, struct service_instance_list *sil,
+ int flags, int weight )
{
int p = 0, w;
mpegts_service_t *s = (mpegts_service_t*)t;
} else {
w = mi->mi_get_weight(mi, mmi->mmi_mux, flags);
p = mi->mi_get_priority(mi, mmi->mmi_mux, flags);
- if (w > 0 && mi->mi_free_weight && w < mi->mi_free_weight)
+ if (w > 0 && mi->mi_free_weight &&
+ weight >= mi->mi_free_weight && w < mi->mi_free_weight)
w = 0;
}
pro->pro_svfilter == PROFILE_SVF_NONE ||
(pro->pro_svfilter == PROFILE_SVF_SD && service_is_sdtv(s)) ||
(pro->pro_svfilter == PROFILE_SVF_HD && service_is_hdtv(s))) {
- s->s_enlist(s, ti, sil, flags);
+ s->s_enlist(s, ti, sil, flags, weight);
enlisted++;
}
}
LIST_FOREACH(ilm, &ch->ch_services, ilm_in2_link) {
s = (service_t *)ilm->ilm_in1;
if (s->s_is_enabled(s, flags))
- s->s_enlist(s, ti, sil, flags);
+ s->s_enlist(s, ti, sil, flags, weight);
}
}
} else {
- s->s_enlist(s, ti, sil, flags);
+ s->s_enlist(s, ti, sil, flags, weight);
}
/* Clean */
int (*s_is_enabled)(struct service *t, int flags);
void (*s_enlist)(struct service *s, struct tvh_input *ti,
- service_instance_list_t *sil, int flags);
+ service_instance_list_t *sil, int flags, int weight);
int (*s_start_feed)(struct service *s, int instance, int weight, int flags);