dvr_autorec_save(dae);
}
}
+
+static inline int extra_valid(time_t extra)
+{
+ return extra != 0 && extra != (time_t)-1;
+}
+
+/**
+ *
+ */
+int
+dvr_autorec_get_extra_time_pre( dvr_autorec_entry_t *dae )
+{
+ time_t extra = dae->dae_start_extra;
+
+ if (!extra_valid(extra)) {
+ if (dae->dae_channel)
+ extra = dae->dae_channel->ch_dvr_extra_time_pre;
+ if (!extra_valid(extra))
+ extra = dae->dae_config->dvr_extra_time_pre;
+ }
+ return extra;
+}
+
+/**
+ *
+ */
+int
+dvr_autorec_get_extra_time_post( dvr_autorec_entry_t *dae )
+{
+ time_t extra = dae->dae_stop_extra;
+
+ if (!extra_valid(extra)) {
+ if (dae->dae_channel)
+ extra = dae->dae_channel->ch_dvr_extra_time_post;
+ if (!extra_valid(extra))
+ extra = dae->dae_config->dvr_extra_time_post;
+ }
+ return extra;
+}
+
+/**
+ *
+ */
+int
+dvr_autorec_get_retention( dvr_autorec_entry_t *dae )
+{
+ if (dae->dae_retention > 0)
+ return dae->dae_retention;
+ return dae->dae_config->dvr_retention_days;
+}
htsmsg_add_u32(out, "enabled", dae->dae_enabled);
htsmsg_add_u32(out, "maxDuration", dae->dae_maxduration);
htsmsg_add_u32(out, "minDuration", dae->dae_minduration);
- htsmsg_add_u32(out, "retention", dae->dae_retention);
+ htsmsg_add_u32(out, "retention", dvr_autorec_get_retention(dae));
htsmsg_add_u32(out, "daysOfWeek", dae->dae_weekdays);
if (dae->dae_start >= 0 && dae->dae_start_window >= 0) {
if (dae->dae_start > dae->dae_start_window)
htsmsg_add_s32(out, "start", dae->dae_start >= 0 ? dae->dae_start : -1);
htsmsg_add_s32(out, "startWindow", dae->dae_start_window >= 0 ? dae->dae_start_window : -1);
htsmsg_add_u32(out, "priority", dae->dae_pri);
- htsmsg_add_s64(out, "startExtra", dae->dae_start_extra);
- htsmsg_add_s64(out, "stopExtra", dae->dae_stop_extra);
+ htsmsg_add_s64(out, "startExtra", dvr_autorec_get_extra_time_pre(dae));
+ htsmsg_add_s64(out, "stopExtra", dvr_autorec_get_extra_time_post(dae));
htsmsg_add_u32(out, "dupDetect", dae->dae_record);
if(dae->dae_title) {
htsmsg_add_str(out, "id", idnode_uuid_as_str(&dte->dte_id));
htsmsg_add_u32(out, "enabled", dte->dte_enabled);
htsmsg_add_u32(out, "daysOfWeek", dte->dte_weekdays);
- htsmsg_add_u32(out, "retention", dte->dte_retention);
+ htsmsg_add_u32(out, "retention", dvr_timerec_get_retention(dte));
htsmsg_add_u32(out, "priority", dte->dte_pri);
htsmsg_add_s32(out, "start", dte->dte_start);
htsmsg_add_s32(out, "stop", dte->dte_stop);