mpegts: add helper function for determining the weight of a mux instance

This commit is contained in:
Adam Sutton 2013-11-24 20:18:30 +00:00
parent 31d0690da2
commit 5fede076db
2 changed files with 29 additions and 0 deletions

View file

@ -578,6 +578,8 @@ mpegts_service_t *mpegts_mux_find_service(mpegts_mux_t *ms, uint16_t sid);
int mpegts_mux_instance_start
( mpegts_mux_instance_t **mmiptr );
int mpegts_mux_instance_weight ( mpegts_mux_instance_t *mmi );
int mpegts_mux_set_tsid ( mpegts_mux_t *mm, uint16_t tsid );
int mpegts_mux_set_onid ( mpegts_mux_t *mm, uint16_t onid );
int mpegts_mux_set_crid_authority ( mpegts_mux_t *mm, const char *defauth );

View file

@ -116,6 +116,33 @@ mpegts_mux_instance_start
return 0;
}
int
mpegts_mux_instance_weight ( mpegts_mux_instance_t *mmi )
{
int w = 0;
const service_t *s;
const th_subscription_t *ths;
mpegts_input_t *mi = mmi->mmi_input;
lock_assert(&mi->mi_delivery_mutex);
/* Direct subs */
LIST_FOREACH(ths, &mmi->mmi_subs, ths_mmi_link) {
w = MAX(w, ths->ths_weight);
}
/* Service subs */
LIST_FOREACH(s, &mi->mi_transports, s_active_link) {
mpegts_service_t *ms = (mpegts_service_t*)s;
if (ms->s_dvb_mux == mmi->mmi_mux) {
LIST_FOREACH(ths, &s->s_subscriptions, ths_service_link) {
w = MAX(w, ths->ths_weight);
}
}
}
return w;
}
/* ****************************************************************************
* Class definition
* ***************************************************************************/