From 82aea16b1cdd70e8be77a488bbdd9131bed05a23 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 17 Feb 2017 14:10:53 +0100 Subject: [PATCH] IPTV: add iptv-sub log to trace subscription issues --- src/input/mpegts/iptv/iptv.c | 26 ++++++++++++++++++-------- src/tvhlog.c | 1 + src/tvhlog.h | 1 + 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/input/mpegts/iptv/iptv.c b/src/input/mpegts/iptv/iptv.c index 7bd046bea..61aabff34 100644 --- a/src/input/mpegts/iptv/iptv.c +++ b/src/input/mpegts/iptv/iptv.c @@ -169,6 +169,8 @@ iptv_input_is_free ( mpegts_input_t *mi, mpegts_mux_t *mm, } pthread_mutex_unlock(&mi->mi_output_lock); + tvhtrace(LS_IPTV_SUB, "is free[%p]: h = %d, l = %d, rw = %d", mm, h, l, rw); + if (lweight) *lweight = rw == INT_MAX ? 0 : rw; @@ -192,22 +194,29 @@ static int iptv_input_is_enabled ( mpegts_input_t *mi, mpegts_mux_t *mm, int flags, int weight ) { - if (mpegts_input_is_enabled(mi, mm, flags, weight) == MI_IS_ENABLED_NEVER) - return MI_IS_ENABLED_NEVER; - return iptv_input_is_free(mi, mm, 0, weight, NULL) == NULL ? - MI_IS_ENABLED_OK : MI_IS_ENABLED_RETRY; + int r; + mpegts_mux_instance_t *mmi; + + r = mpegts_input_is_enabled(mi, mm, flags, weight); + if (r != MI_IS_ENABLED_OK) { + tvhtrace(LS_IPTV_SUB, "enabled[%p]: generic %d", mm, r); + return r; + } + mmi = iptv_input_is_free(mi, mm, 0, weight, NULL); + tvhtrace(LS_IPTV_SUB, "enabled[%p]: free %p", mm, mmi); + return mmi == NULL ? MI_IS_ENABLED_OK : MI_IS_ENABLED_RETRY; } static int iptv_input_get_weight ( mpegts_input_t *mi, mpegts_mux_t *mm, int flags, int weight ) { int w; + mpegts_mux_instance_t *mmi; /* Find the "min" weight */ - if (iptv_input_is_free(mi, mm, 1, weight, &w) == NULL) - w = 0; - - return w; + mmi = iptv_input_is_free(mi, mm, 1, weight, &w); + tvhtrace(LS_IPTV_SUB, "get weight[%p]: %p (%d)", mm, mmi, w); + return mmi == NULL ? 0 : w; } @@ -245,6 +254,7 @@ iptv_input_warm_mux ( mpegts_input_t *mi, mpegts_mux_instance_t *mmi ) /* Do we need to stop something? */ lmmi = iptv_input_is_free(mi, mmi->mmi_mux, 1, mmi->mmi_start_weight, NULL); + tvhtrace(LS_IPTV_SUB, "warm mux[%p]: %p (%d)", im, lmmi, mmi->mmi_start_weight); if (lmmi) { /* Stop */ lmmi->mmi_mux->mm_stop(lmmi->mmi_mux, 1, SM_CODE_ABORTED); diff --git a/src/tvhlog.c b/src/tvhlog.c index bc9b68831..c06007eb7 100644 --- a/src/tvhlog.c +++ b/src/tvhlog.c @@ -150,6 +150,7 @@ tvhlog_subsys_t tvhlog_subsystems[] = { [LS_TRANSCODE] = { "transcode", N_("Transcode") }, [LS_IPTV] = { "iptv", N_("IPTV") }, [LS_IPTV_PCR] = { "iptv-pcr", N_("IPTV PCR") }, + [LS_IPTV_SUB] = { "iptv-sub", N_("IPTV Subcription") }, [LS_LINUXDVB] = { "linuxdvb", N_("LinuxDVB Input") }, [LS_DISEQC] = { "diseqc", N_("DiseqC") }, [LS_EN50221] = { "en50221", N_("CI Module") }, diff --git a/src/tvhlog.h b/src/tvhlog.h index bf67ab388..c4aff87c9 100644 --- a/src/tvhlog.h +++ b/src/tvhlog.h @@ -174,6 +174,7 @@ enum { LS_TRANSCODE, LS_IPTV, LS_IPTV_PCR, + LS_IPTV_SUB, LS_LINUXDVB, LS_DISEQC, LS_EN50221, -- 2.47.2