diff --git a/docs/html/config_networks.html b/docs/html/config_networks.html index 45a003ce..a773a9c5 100644 --- a/docs/html/config_networks.html +++ b/docs/html/config_networks.html @@ -46,8 +46,8 @@
Character Set
The character encoding for this network (e.g. UTF-8). +
Priority +
IPTV : The network priority value (higher value = higher priority to use muxes/services from this network). - - diff --git a/src/input/mpegts/iptv/iptv.c b/src/input/mpegts/iptv/iptv.c index b4de0f6d..a1b045bf 100644 --- a/src/input/mpegts/iptv/iptv.c +++ b/src/input/mpegts/iptv/iptv.c @@ -169,6 +169,14 @@ iptv_input_get_grace ( mpegts_input_t *mi, mpegts_mux_t *mm ) return in->in_max_timeout; } +static int +iptv_input_get_priority ( mpegts_input_t *mi, mpegts_mux_t *mm ) +{ + iptv_mux_t *im = (iptv_mux_t *)mm; + iptv_network_t *in = (iptv_network_t *)im->mm_network; + return in->in_priority; +} + static int iptv_input_start_mux ( mpegts_input_t *mi, mpegts_mux_instance_t *mmi ) { @@ -396,6 +404,14 @@ const idclass_t iptv_network_class = { .ic_caption = "IPTV Network", .ic_delete = iptv_network_class_delete, .ic_properties = (const property_t[]){ + { + .type = PT_INT, + .id = "priority", + .name = "Priority", + .off = offsetof(iptv_network_t, in_priority), + .def.i = 1, + .opts = PO_ADVANCED + }, { .type = PT_U32, .id = "max_streams", @@ -457,12 +473,17 @@ iptv_network_t * iptv_network_create0 ( const char *uuid, htsmsg_t *conf ) { - iptv_network_t *in; + iptv_network_t *in = calloc(1, sizeof(*in)); htsmsg_t *c; /* Init Network */ - if (!(in = mpegts_network_create(iptv_network, uuid, NULL, conf))) + in->in_priority = 1; + if (!mpegts_network_create0((mpegts_network_t *)in, + &iptv_network_class, + uuid, NULL, conf)) { + free(in); return NULL; + } in->mn_create_service = iptv_network_create_service; in->mn_mux_class = iptv_network_mux_class; in->mn_mux_create2 = iptv_network_create_mux2; @@ -541,6 +562,7 @@ void iptv_init ( void ) iptv_input->mi_is_free = iptv_input_is_free; iptv_input->mi_get_weight = iptv_input_get_weight; iptv_input->mi_get_grace = iptv_input_get_grace; + iptv_input->mi_get_priority = iptv_input_get_priority; iptv_input->mi_display_name = iptv_input_display_name; iptv_input->mi_enabled = 1; diff --git a/src/input/mpegts/iptv/iptv_private.h b/src/input/mpegts/iptv/iptv_private.h index 7ccba0ff..a71c6cc1 100644 --- a/src/input/mpegts/iptv/iptv_private.h +++ b/src/input/mpegts/iptv/iptv_private.h @@ -64,6 +64,8 @@ struct iptv_network int in_bps; int in_bw_limited; + int in_priority; + uint32_t in_max_streams; uint32_t in_max_bandwidth; uint32_t in_max_timeout;