From d7b7f72845235a9653989cc5291b2961aba3cf2d Mon Sep 17 00:00:00 2001 From: Glenn-1990 Date: Sun, 14 Sep 2014 22:58:58 +0200 Subject: [PATCH] [fix] use correct start/stop times --- src/dvr/dvr.h | 4 ++++ src/dvr/dvr_db.c | 4 ++-- src/dvr/dvr_rec.c | 6 +++--- src/webui/simpleui.c | 6 +++--- src/webui/webui.c | 6 ++---- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/dvr/dvr.h b/src/dvr/dvr.h index 89d8cd39..f4dba1a7 100644 --- a/src/dvr/dvr.h +++ b/src/dvr/dvr.h @@ -315,6 +315,10 @@ int dvr_entry_get_mc(dvr_entry_t *de); int dvr_entry_get_retention( dvr_entry_t *de ); +int dvr_entry_get_start_time( dvr_entry_t *de ); + +int dvr_entry_get_stop_time( dvr_entry_t *de ); + int dvr_entry_get_extra_time_post( dvr_entry_t *de ); int dvr_entry_get_extra_time_pre( dvr_entry_t *de ); diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index a7f1fa05..17ec5b31 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -56,14 +56,14 @@ static inline int extra_valid(time_t extra) return extra != 0 && extra != (time_t)-1; } -static int +int dvr_entry_get_start_time( dvr_entry_t *de ) { /* Note 30 seconds might not be enough (rotors) */ return de->de_start - (60 * dvr_entry_get_extra_time_pre(de)) - 30; } -static int +int dvr_entry_get_stop_time( dvr_entry_t *de ) { return de->de_stop + (60 * dvr_entry_get_extra_time_post(de)); diff --git a/src/dvr/dvr_rec.c b/src/dvr/dvr_rec.c index b381a40c..9ba65fbf 100644 --- a/src/dvr/dvr_rec.c +++ b/src/dvr/dvr_rec.c @@ -85,7 +85,7 @@ dvr_rec_subscribe(dvr_entry_t *de) streaming_queue_init(&de->de_sq, 0); de->de_gh = globalheaders_create(&de->de_sq.sq_st); st = de->de_tsfix = tsfix_create(de->de_gh); - tsfix_set_start_time(de->de_tsfix, de->de_start - (60 * de->de_start_extra)); + tsfix_set_start_time(de->de_tsfix, dvr_entry_get_start_time(de)); flags = 0; } @@ -634,8 +634,8 @@ dvr_spawn_postproc(dvr_entry_t *de, const char *dvr_postproc) } fbasename = tvh_strdupa(de->de_filename); - snprintf(start, sizeof(start), "%"PRItime_t, de->de_start - (60 * de->de_start_extra)); - snprintf(stop, sizeof(stop), "%"PRItime_t, de->de_stop + (60 * de->de_stop_extra)); + snprintf(start, sizeof(start), "%"PRItime_t, (time_t)dvr_entry_get_start_time(de)); + snprintf(stop, sizeof(stop), "%"PRItime_t, (time_t)dvr_entry_get_stop_time(de)); memset(fmap, 0, sizeof(fmap)); fmap['f'] = de->de_filename; /* full path to recoding */ diff --git a/src/webui/simpleui.c b/src/webui/simpleui.c index 403eff91..1f23708b 100644 --- a/src/webui/simpleui.c +++ b/src/webui/simpleui.c @@ -412,7 +412,7 @@ page_status(http_connection_t *hc, if (DVR_SCHEDULED == de->de_sched_state) { - timelefttemp = (int) ((de->de_start - now) / 60) - de->de_start_extra; // output minutes + timelefttemp = (int) ((dvr_entry_get_start_time(de) - now) / 60); // output minutes if (timelefttemp < timeleft) timeleft = timelefttemp; } @@ -440,11 +440,11 @@ page_status(http_connection_t *hc, a.tm_year + 1900, a.tm_mon + 1, a.tm_mday, a.tm_hour, a.tm_min, de->de_start, - de->de_start_extra, + (time_t)dvr_entry_get_extra_time_pre(de), b.tm_year+1900, b.tm_mon + 1, b.tm_mday, b.tm_hour, b.tm_min, de->de_stop, - de->de_stop_extra, + (time_t)dvr_entry_get_extra_time_post(de), buf); rstatus = val2str(de->de_sched_state, recstatustxt); diff --git a/src/webui/webui.c b/src/webui/webui.c index e6c2c0b5..743076b2 100644 --- a/src/webui/webui.c +++ b/src/webui/webui.c @@ -612,8 +612,7 @@ http_dvr_list_playlist(http_connection_t *hc) continue; - durration = de->de_stop - de->de_start; - durration += (de->de_stop_extra + de->de_start_extra)*60; + durration = dvr_entry_get_stop_time(de) - dvr_entry_get_start_time(de); bandwidth = ((8*fsize) / (durration*1024.0)); strftime(buf, sizeof(buf), "%FT%T%z", localtime_r(&(de->de_start), &tm)); @@ -649,8 +648,7 @@ http_dvr_playlist(http_connection_t *hc, dvr_entry_t *de) struct tm tm; const char *host = http_arg_get(&hc->hc_args, "Host"); - durration = de->de_stop - de->de_start; - durration += (de->de_stop_extra + de->de_start_extra)*60; + durration = dvr_entry_get_stop_time(de) - dvr_entry_get_start_time(de); fsize = dvr_get_filesize(de);