Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
mpegts: pass weight to mi_open_service callback, too
  • Loading branch information
perexg committed Nov 30, 2015
1 parent 7408e9c commit 7934c2a
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 8 deletions.
5 changes: 3 additions & 2 deletions src/input/mpegts.h
Expand Up @@ -528,6 +528,7 @@ struct mpegts_service
int (*s_unlink)(mpegts_service_t *master, mpegts_service_t *slave);

int s_dvb_subscription_flags;
int s_dvb_subscription_weight;

mpegts_apids_t *s_pids;
LIST_HEAD(, mpegts_service) s_masters;
Expand Down Expand Up @@ -712,7 +713,7 @@ struct mpegts_input
int (*mi_warm_mux) (mpegts_input_t*,mpegts_mux_instance_t*);
int (*mi_start_mux) (mpegts_input_t*,mpegts_mux_instance_t*, int weight);
void (*mi_stop_mux) (mpegts_input_t*,mpegts_mux_instance_t*);
void (*mi_open_service) (mpegts_input_t*,mpegts_service_t*,int flags, int first);
void (*mi_open_service) (mpegts_input_t*,mpegts_service_t*, int flags, int first, int weight);
void (*mi_close_service) (mpegts_input_t*,mpegts_service_t*);
void (*mi_update_pids) (mpegts_input_t*,mpegts_mux_t*);
void (*mi_create_mux_instance) (mpegts_input_t*,mpegts_mux_t*);
Expand Down Expand Up @@ -769,7 +770,7 @@ int mpegts_input_set_networks ( mpegts_input_t *mi, htsmsg_t *msg );

int mpegts_input_add_network ( mpegts_input_t *mi, mpegts_network_t *mn );

void mpegts_input_open_service ( mpegts_input_t *mi, mpegts_service_t *s, int flags, int init );
void mpegts_input_open_service ( mpegts_input_t *mi, mpegts_service_t *s, int flags, int init, int weight );
void mpegts_input_close_service ( mpegts_input_t *mi, mpegts_service_t *s );

void mpegts_input_status_timer ( void *p );
Expand Down
3 changes: 2 additions & 1 deletion src/input/mpegts/mpegts_input.c
Expand Up @@ -630,7 +630,8 @@ mpegts_input_cat_pass_callback
}

void
mpegts_input_open_service ( mpegts_input_t *mi, mpegts_service_t *s, int flags, int init )
mpegts_input_open_service
( mpegts_input_t *mi, mpegts_service_t *s, int flags, int init, int weight )
{
mpegts_mux_t *mm = s->s_dvb_mux;
elementary_stream_t *st;
Expand Down
5 changes: 3 additions & 2 deletions src/input/mpegts/mpegts_service.c
Expand Up @@ -338,7 +338,8 @@ mpegts_service_start(service_t *t, int instance, int weight, int flags)

/* Open service */
s->s_dvb_subscription_flags = flags;
mmi->mmi_input->mi_open_service(mmi->mmi_input, s, flags, 1);
s->s_dvb_subscription_weight = weight;
mmi->mmi_input->mi_open_service(mmi->mmi_input, s, flags, 1, weight);
}

return r;
Expand Down Expand Up @@ -380,7 +381,7 @@ mpegts_service_refresh(service_t *t)
lock_assert(&global_lock);

/* Re-open */
i->mi_open_service(i, s, s->s_dvb_subscription_flags, 0);
i->mi_open_service(i, s, s->s_dvb_subscription_flags, 0, s->s_dvb_subscription_weight);
}

/*
Expand Down
9 changes: 6 additions & 3 deletions src/input/mpegts/satip/satip_frontend.c
Expand Up @@ -580,20 +580,23 @@ satip_frontend_update_pids
}

static void
satip_frontend_open_service ( mpegts_input_t *mi, mpegts_service_t *s, int flags, int init )
satip_frontend_open_service
( mpegts_input_t *mi, mpegts_service_t *s, int flags, int init, int weight )
{
satip_frontend_t *lfe = (satip_frontend_t*)mi;
satip_tune_req_t *tr;
int w;

mpegts_input_open_service(mi, s, flags, init);
mpegts_input_open_service(mi, s, flags, init, weight);

if (!lfe->sf_device->sd_can_weight)
return;

pthread_mutex_lock(&lfe->sf_dvr_lock);
if ((tr = lfe->sf_req) != NULL && tr->sf_mmi != NULL) {
pthread_mutex_lock(&mi->mi_output_lock);
tr->sf_weight = mpegts_mux_instance_weight(tr->sf_mmi);
w = mpegts_mux_instance_weight(tr->sf_mmi);
tr->sf_weight = MAX(w, weight);
pthread_mutex_unlock(&mi->mi_output_lock);
}
pthread_mutex_unlock(&lfe->sf_dvr_lock);
Expand Down

0 comments on commit 7934c2a

Please sign in to comment.