Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
iptv: rewrite iptv_input_is_free() - use per IPTV network limits, fix…
…es #2780
  • Loading branch information
perexg committed Apr 22, 2015
1 parent 6a110d8 commit d416038
Showing 1 changed file with 9 additions and 14 deletions.
23 changes: 9 additions & 14 deletions src/input/mpegts/iptv/iptv.c
Expand Up @@ -100,28 +100,23 @@ const idclass_t iptv_input_class = {
};

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;
}
Expand All @@ -134,7 +129,7 @@ iptv_input_get_weight ( mpegts_input_t *mi, mpegts_mux_t *mm, int flags )
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 */
Expand Down Expand Up @@ -183,7 +178,7 @@ iptv_input_warm_mux ( mpegts_input_t *mi, mpegts_mux_instance_t *mmi )
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;
Expand Down

0 comments on commit d416038

Please sign in to comment.