From: Jaroslav Kysela Date: Tue, 8 Aug 2017 14:43:02 +0000 (+0200) Subject: mpegts mux: add 'created', 'scan_first', 'scan_last' info X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b0cb887fc9e2526a02b2d6649fdbb8a860ec8087;p=thirdparty%2Ftvheadend.git mpegts mux: add 'created', 'scan_first', 'scan_last' info --- diff --git a/src/input/mpegts.h b/src/input/mpegts.h index ba4e7b5c3..13f9e08a2 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -439,6 +439,7 @@ struct mpegts_mux int mm_tsid_accept_zero_value; tvhlog_limit_t mm_tsid_loglimit; int64_t mm_start_monoclock; + time_t mm_created; int mm_update_pids_flag; mtimer_t mm_update_pids_timer; @@ -453,6 +454,9 @@ struct mpegts_mux * Scanning */ + time_t mm_scan_first; ///< Time for the first successful scan + time_t mm_scan_last_seen; ///< Time for the last successful scan + mpegts_mux_scan_result_t mm_scan_result; ///< Result of last scan int mm_scan_weight; ///< Scan priority int mm_scan_flags; ///< Subscription flags @@ -461,13 +465,6 @@ struct mpegts_mux TAILQ_ENTRY(mpegts_mux) mm_scan_link; ///< Link to Queue mpegts_mux_scan_state_t mm_scan_state; ///< Scanning state -#if 0 - enum { - MM_ORIG_USER, ///< Manually added - MM_ORIG_FILE, ///< Added from scan file - MM_ORIG_AUTO ///< From NIT - } mm_dmc_origin2; -#endif void *mm_dmc_origin; int64_t mm_dmc_origin_expire; diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index 5b2b06d16..b085c94b6 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -682,6 +682,30 @@ const idclass_t mpegts_mux_class = .off = offsetof(mpegts_mux_t, mm_sid_filter), .opts = PO_HIDDEN | PO_EXPERT }, + { + .type = PT_TIME, + .id = "created", + .name = N_("Created"), + .desc = N_("When the mux was created."), + .off = offsetof(mpegts_mux_t, mm_created), + .opts = PO_ADVANCED | PO_RDONLY, + }, + { + .type = PT_TIME, + .id = "scan_first", + .name = N_("First scan"), + .desc = N_("When the mux was successfully scanned for the first time."), + .off = offsetof(mpegts_mux_t, mm_scan_first), + .opts = PO_ADVANCED | PO_RDONLY, + }, + { + .type = PT_TIME, + .id = "scan_last", + .name = N_("Last scan"), + .desc = N_("When the mux was successfully scanned."), + .off = offsetof(mpegts_mux_t, mm_scan_last_seen), + .opts = PO_ADVANCED | PO_RDONLY, + }, {} } }; @@ -1218,6 +1242,7 @@ mpegts_mux_create0 pthread_mutex_init(&mm->mm_descrambler_lock, NULL); mm->mm_last_pid = -1; + mm->mm_created = gclk(); #if ENABLE_TSDEBUG pthread_mutex_init(&mm->mm_tsdebug_lock, NULL); diff --git a/src/input/mpegts/mpegts_network_scan.c b/src/input/mpegts/mpegts_network_scan.c index bfc718bea..70adf5047 100644 --- a/src/input/mpegts/mpegts_network_scan.c +++ b/src/input/mpegts/mpegts_network_scan.c @@ -111,6 +111,13 @@ mpegts_network_scan_mux_done0 mpegts_network_t *mn = mm->mm_network; mpegts_mux_scan_state_t state = mm->mm_scan_state; + if (result == MM_SCAN_OK || result == MM_SCAN_PARTIAL) { + mm->mm_scan_last_seen = gclk(); + if (mm->mm_scan_first == 0) + mm->mm_scan_first = mm->mm_scan_last_seen; + idnode_changed(&mm->mm_id); + } + /* prevent double del: */ /* mpegts_mux_stop -> mpegts_network_scan_mux_cancel */ mm->mm_scan_state = MM_SCAN_STATE_IDLE;