.type = PT_BOOL,
.id = "enabled",
.name = N_("Enabled"),
+ .desc = N_("Enable/disable profile."),
.set = dvr_config_class_enabled_set,
.off = offsetof(dvr_config_t, dvr_enabled),
.def.i = 1,
.type = PT_STR,
.id = "name",
.name = N_("Configuration name"),
+ .desc = N_("Name of the profile."),
.set = dvr_config_class_name_set,
.off = offsetof(dvr_config_t, dvr_config_name),
.def.s = "! New config",
.type = PT_STR,
.id = "comment",
.name = N_("Comment"),
+ .desc = N_("Free-form field, enter whatever you like here."),
.off = offsetof(dvr_config_t, dvr_comment),
.group = 1,
},
.type = PT_STR,
.id = "profile",
.name = N_("Stream profile"),
+ .desc = N_("The stream profile the DVR profile will use for "
+ "recordings."),
.set = dvr_config_class_profile_set,
.get = dvr_config_class_profile_get,
.rend = dvr_config_class_profile_rend,
.type = PT_INT,
.id = "cache",
.name = N_("Cache scheme"),
+ .desc = N_("Select the cache scheme used to store recordings. "
+ "Leave as “system” unless you have a special use "
+ "case for one of the others. See Help for details."),
.off = offsetof(dvr_config_t, dvr_muxcnf.m_cache),
.def.i = MC_CACHE_DONTKEEP,
.list = dvr_config_class_cache_list,
.type = PT_U32,
.id = "retention-days",
.name = N_("DVR log retention period"),
+ .desc = N_("Number of days to retain infomation about recordings."),
.off = offsetof(dvr_config_t, dvr_retention_days),
.def.u32 = DVR_RET_ONREMOVE,
.list = dvr_config_class_retention_list,
.type = PT_U32,
.id = "removal-days",
.name = N_("DVR file retention period"),
+ .desc = N_("Number of days to keep the recorded files."),
.off = offsetof(dvr_config_t, dvr_removal_days),
.def.u32 = DVR_RET_FOREVER,
.list = dvr_config_class_removal_list,
.type = PT_BOOL,
.id = "clone",
.name = N_("Clone scheduled entry on error"),
+ .desc = N_("If an error occurs clone the scheduled entry and "
+ "try to record again if possible."),
.off = offsetof(dvr_config_t, dvr_clone),
.opts = PO_ADVANCED,
.def.u32 = 1,
.type = PT_U32,
.id = "rerecord-errors",
.name = N_("Schedule a re-recording if more errors than (0=off)"),
+ .desc = N_("If more than x errors occur during a recording "
+ "schedule a re-record if possible."),
.off = offsetof(dvr_config_t, dvr_rerecord_errors),
.opts = PO_ADVANCED,
.group = 1,
.type = PT_U32,
.id = "warm-time",
.name = N_("Extra warming up time (seconds)"),
+ .desc = N_("Additional time (in seconds) in which to get "
+ "the tuner ready for recording. This is useful for "
+ "those with tuners that take some time to tune "
+ "and/or send garbage data at the beginning. "),
.off = offsetof(dvr_config_t, dvr_warm_time),
.opts = PO_ADVANCED,
.group = 1,
{
.type = PT_U32,
.id = "pre-extra-time",
- .name = N_("Extra padding before recordings (minutes)"),
+ .name = N_("Pre-recording padding"),
+ .desc = N_("Start recording earlier than the defined "
+ "start time by x minutes, for example if a program "
+ "is to start at 13:00 and you set a padding of 5 "
+ "minutes it will start recording at 12:54:30 "
+ "(including a warming-up time of 30 seconds). If this "
+ "isn't set the pre-recording padding if set in the "
+ "channel or DVR entry will be used."),
.off = offsetof(dvr_config_t, dvr_extra_time_pre),
.list = dvr_config_class_extra_list,
.opts = PO_ADVANCED,
{
.type = PT_U32,
.id = "post-extra-time",
- .name = N_("Extra padding after recordings (minutes)"),
+ .name = N_("Post-recording padding"),
+ .desc = N_("Continue recording for x minutes after scheduled "
+ "stop time."),
.off = offsetof(dvr_config_t, dvr_extra_time_post),
.list = dvr_config_class_extra_list,
.opts = PO_ADVANCED,
.type = PT_U32,
.id = "epg-update-window",
.name = N_("EPG update window"),
+ .desc = N_("Maximum allowed difference between event start time when "
+ "the EPG event is changed."),
.off = offsetof(dvr_config_t, dvr_update_window),
.list = dvr_config_entry_class_update_window_list,
.def.u32 = 24*3600,
.type = PT_BOOL,
.id = "epg-running",
.name = N_("Use EPG running state"),
- .desc = N_("Use EITp/f to decide event start / stop"),
+ .desc = N_("Use EITp/f to decide event start/stop. This is "
+ "also known as accurate recording. Note that this "
+ "can have unexpected results if the broadcaster "
+ "isn`t very good at time keeping."),
.off = offsetof(dvr_config_t, dvr_running),
.opts = PO_ADVANCED,
.def.u32 = 1,
.type = PT_U32,
.id = "autorec-maxcount",
.name = N_("Autorec maximum count (0=unlimited)"),
+ .desc = N_("The maximum number of entries that can be matched."),
.off = offsetof(dvr_config_t, dvr_autorec_max_count),
.opts = PO_ADVANCED,
.group = 1,
.type = PT_U32,
.id = "autorec-maxsched",
.name = N_("Autorec maximum schedules limit (0=unlimited)"),
+ .desc = N_("The maximum number of recordings that can be scheduled."),
.off = offsetof(dvr_config_t, dvr_autorec_max_sched_count),
.opts = PO_ADVANCED,
.group = 1,
.type = PT_STR,
.id = "postproc",
.name = N_("Post-processor command"),
+ .desc = N_("Script/program to be run when a recording completes."),
.off = offsetof(dvr_config_t, dvr_postproc),
.opts = PO_ADVANCED,
.group = 1,
.type = PT_STR,
.id = "postremove",
.name = N_("Post-remove command"),
+ .desc = N_("Script/program to be run when a recording gets removed."),
.off = offsetof(dvr_config_t, dvr_postremove),
.opts = PO_EXPERT,
.group = 1,
.type = PT_STR,
.id = "storage",
.name = N_("Recording system path"),
+ .desc = N_("Path where the recordings are stored. If "
+ "components of the path do not exist, "
+ "Tvheadend will try to create them."),
.off = offsetof(dvr_config_t, dvr_storage),
.group = 2,
},
.type = PT_U32,
.id = "storage-mfree",
.name = N_("Maintain free storage space in MiB"),
+ .desc = N_("Keep x amount of storage space free."),
.off = offsetof(dvr_config_t, dvr_cleanup_threshold_free),
.def.i = 1000,
.opts = PO_ADVANCED,
.type = PT_U32,
.id = "storage-mused",
.name = N_("Maintain used storage space in MiB (0=disabled)"),
+ .desc = N_("Use x amount of storage space."),
.off = offsetof(dvr_config_t, dvr_cleanup_threshold_used),
.def.i = 0,
.opts = PO_EXPERT,
.type = PT_PERM,
.id = "file-permissions",
.name = N_("File permissions (octal, e.g. 0664)"),
+ .desc = N_("Create files using these permissions."),
.off = offsetof(dvr_config_t, dvr_muxcnf.m_file_permissions),
.opts = PO_EXPERT,
.def.u32 = 0664,
.type = PT_STR,
.id = "charset",
.name = N_("Filename character set"),
+ .desc = N_("Use this character set when setting filenames."),
.off = offsetof(dvr_config_t, dvr_charset),
.set = dvr_config_class_charset_set,
.list = dvr_config_class_charset_list,
.type = PT_BOOL,
.id = "tag-files",
.name = N_("Tag files with metadata"),
+ .desc = N_("Create tags in recordings using media containers "
+ "that support metadata (if possible)."),
.off = offsetof(dvr_config_t, dvr_tag_files),
.opts = PO_ADVANCED,
.def.i = 1,
.type = PT_BOOL,
.id = "skip-commercials",
.name = N_("Skip commercials"),
+ .desc = N_("Commercials will be dropped from the "
+ "recordings. At the moment, commercial detection "
+ "only works for the Swedish channel TV4."),
.off = offsetof(dvr_config_t, dvr_skip_commercials),
.opts = PO_ADVANCED,
.def.i = 1,
.type = PT_STR,
.id = "pathname",
.name = N_("Format string"),
+ .desc = N_("The string allows you to manually specify the "
+ "full path generation using predefined "
+ "modifiers. See Help for full details."),
.set = dvr_config_class_pathname_set,
.off = offsetof(dvr_config_t, dvr_pathname),
.opts = PO_EXPERT,
.type = PT_PERM,
.id = "directory-permissions",
.name = N_("Directory permissions (octal, e.g. 0775)"),
+ .desc = N_("Create directories using these permissions."),
.off = offsetof(dvr_config_t, dvr_muxcnf.m_directory_permissions),
.opts = PO_EXPERT,
.def.u32 = 0775,
.type = PT_BOOL,
.id = "day-dir",
.name = N_("Make subdirectories per day"),
+ .desc = N_("Create a new directory per day in the "
+ "recording system path. Only days when anything is "
+ "recorded will the folder be created. The format of the "
+ "directory will be ISO standard YYYY-MM-DD."),
.off = offsetof(dvr_config_t, dvr_dir_per_day),
.opts = PO_EXPERT,
.group = 4,
.type = PT_BOOL,
.id = "channel-dir",
.name = N_("Make subdirectories per channel"),
+ .desc = N_("Create a directory per channel when "
+ "storing recordings. If both this and the ‘directory "
+ "per day’ checkbox is enabled, the date-directory "
+ "will be parent to the per-channel directory."),
.off = offsetof(dvr_config_t, dvr_channel_dir),
.opts = PO_EXPERT,
.group = 4,
.type = PT_BOOL,
.id = "title-dir",
.name = N_("Make subdirectories per title"),
+ .desc = N_("Create a directory per title when "
+ "storing recordings. If the day/channel directory "
+ "checkboxes are also enabled, those directories "
+ "will be parents of this directory."),
.off = offsetof(dvr_config_t, dvr_title_dir),
.opts = PO_EXPERT,
.group = 4,
.type = PT_BOOL,
.id = "channel-in-title",
.name = N_("Include channel name in filename"),
+ .desc = N_("Include the name of the channel in "
+ "the event title. This applies to both the title "
+ "stored in the file and to the filename itself."),
.off = offsetof(dvr_config_t, dvr_channel_in_title),
.opts = PO_EXPERT,
.group = 5,
.type = PT_BOOL,
.id = "date-in-title",
.name = N_("Include date in filename"),
+ .desc = N_("Include the date for the recording in "
+ "the event title. This applies to both the title "
+ "stored in the file and to the filename itself."),
.off = offsetof(dvr_config_t, dvr_date_in_title),
.opts = PO_EXPERT,
.group = 5,
.type = PT_BOOL,
.id = "time-in-title",
.name = N_("Include time in filename"),
+ .desc = N_("Include the time for the recording in "
+ "the event title. This applies to both the title "
+ "stored in the file and to the filename itself."),
.off = offsetof(dvr_config_t, dvr_time_in_title),
.opts = PO_EXPERT,
.group = 5,
.type = PT_BOOL,
.id = "episode-in-title",
.name = N_("Include episode in filename"),
+ .desc = N_("Include the season and episode in the "
+ "title (if available)."),
.off = offsetof(dvr_config_t, dvr_episode_in_title),
.opts = PO_EXPERT,
.group = 5,
.type = PT_BOOL,
.id = "subtitle-in-title",
.name = N_("Include subtitle in filename"),
+ .desc = N_("Include the episode subtitle in the "
+ "title (if available)."),
.off = offsetof(dvr_config_t, dvr_subtitle_in_title),
.opts = PO_EXPERT,
.group = 6,
.type = PT_BOOL,
.id = "omit-title",
.name = N_("Don't include title in filename"),
+ .desc = N_("Don`t include the title in the filename."),
.off = offsetof(dvr_config_t, dvr_omit_title),
.opts = PO_EXPERT,
.group = 6,
.type = PT_BOOL,
.id = "clean-title",
.name = N_("Remove all unsafe characters from filename"),
+ .desc = N_("All characters that could possibly "
+ "cause problems for filenaming will be replaced "
+ "with an underscore. See Help for details."),
.off = offsetof(dvr_config_t, dvr_clean_title),
.opts = PO_EXPERT,
.group = 6,
.type = PT_BOOL,
.id = "whitespace-in-title",
.name = N_("Replace whitespace in title with '-'"),
+ .desc = N_("Replaces all whitespace in the title with '-'."),
.off = offsetof(dvr_config_t, dvr_whitespace_in_title),
.opts = PO_EXPERT,
.group = 6,
.type = PT_BOOL,
.id = "windows-compatible-filenames",
.name = N_("Use Windows-compatible filenames"),
+ .desc = N_("Characters not supported in Windows filenames "
+ "(e.g. for an SMB/CIFS share) will be stripped out "
+ "or converted."),
.off = offsetof(dvr_config_t, dvr_windows_compatible_filenames),
.opts = PO_EXPERT,
.group = 6,
.type = PT_BOOL,
.id = "enabled",
.name = N_("Enabled"),
+ .desc = N_("Enable/disable the entry."),
.off = offsetof(dvr_timerec_entry_t, dte_enabled),
},
{
.type = PT_STR,
.id = "name",
.name = N_("Name"),
+ .desc = N_("Name of the entry."),
.off = offsetof(dvr_timerec_entry_t, dte_name),
},
{
.type = PT_STR,
.id = "title",
.name = N_("Title"),
+ .desc = N_("Title of the recording."),
.off = offsetof(dvr_timerec_entry_t, dte_title),
.def.s = "Time-%F_%R",
},
.type = PT_STR,
.id = "directory",
.name = N_("Directory"),
+ .desc = N_("Override the subdirectory rules specified by the "
+ "DVR configuration and put all recordings done by "
+ "this entry into the specified subdirectory"),
.off = offsetof(dvr_timerec_entry_t, dte_directory),
.opts = PO_EXPERT
},
.type = PT_STR,
.id = "channel",
.name = N_("Channel"),
+ .desc = N_("Channel to use/used for the recording."),
.set = dvr_timerec_entry_class_channel_set,
.get = dvr_timerec_entry_class_channel_get,
.rend = dvr_timerec_entry_class_channel_rend,
.type = PT_STR,
.id = "start",
.name = N_("Start"),
+ .desc = N_("Time to start the recording/Time the recording started."),
.set = dvr_timerec_entry_class_start_set,
.get = dvr_timerec_entry_class_start_get,
.list = dvr_timerec_entry_class_time_list,
.type = PT_STR,
.id = "stop",
.name = N_("Stop"),
+ .desc = N_("Time to stop recording/Time the recording stopped."),
.set = dvr_timerec_entry_class_stop_set,
.get = dvr_timerec_entry_class_stop_get,
.list = dvr_timerec_entry_class_time_list,
.islist = 1,
.id = "weekdays",
.name = N_("Days of Week"),
+ .desc = N_("Record on these days only."),
.set = dvr_timerec_entry_class_weekdays_set,
.get = dvr_timerec_entry_class_weekdays_get,
.list = dvr_autorec_entry_class_weekdays_list,
.type = PT_U32,
.id = "pri",
.name = N_("Priority"),
+ .desc = N_("Priority of the entry."),
.list = dvr_entry_class_pri_list,
.def.i = DVR_PRIO_NORMAL,
.off = offsetof(dvr_timerec_entry_t, dte_pri),
.type = PT_U32,
.id = "retention",
.name = N_("DVR log retention"),
+ .desc = N_("Number of days to retain entry information."),
.def.i = DVR_RET_DVRCONFIG,
.off = offsetof(dvr_timerec_entry_t, dte_retention),
.list = dvr_entry_class_retention_list,
.type = PT_U32,
.id = "removal",
.name = N_("DVR file retention period"),
+ .desc = N_("Number of days to keep the file."),
.def.i = DVR_RET_DVRCONFIG,
.off = offsetof(dvr_timerec_entry_t, dte_removal),
.list = dvr_entry_class_removal_list,
.type = PT_STR,
.id = "config_name",
.name = N_("DVR configuration"),
+ .desc = N_("DVR profile to use/used for the recording."),
.set = dvr_timerec_entry_class_config_name_set,
.get = dvr_timerec_entry_class_config_name_get,
.rend = dvr_timerec_entry_class_config_name_rend,
.type = PT_STR,
.id = "owner",
.name = N_("Owner"),
+ .desc = N_("Owner of the entry."),
.off = offsetof(dvr_timerec_entry_t, dte_owner),
.get_opts = dvr_timerec_entry_class_owner_opts,
},
.type = PT_STR,
.id = "creator",
.name = N_("Creator"),
+ .desc = N_("The user who created the recording or the "
+ "auto-recording source and IP address if scheduled "
+ "by a matching rule."),
.off = offsetof(dvr_timerec_entry_t, dte_creator),
.get_opts = dvr_timerec_entry_class_owner_opts,
},
.type = PT_STR,
.id = "comment",
.name = N_("Comment"),
+ .desc = N_("Free-form text field, enter whatever you like here."),
.off = offsetof(dvr_timerec_entry_t, dte_comment),
},
{}