.type = PT_BOOL,
.id = "enabled",
.name = N_("Enabled"),
+ .desc = N_("Enable/disable the channel."),
.off = offsetof(channel_t, ch_enabled),
},
{
.type = PT_BOOL,
.id = "autoname",
.name = N_("Automatically name from network"),
+ .desc = N_("Automatically name from network. "
+ "Always use the name defined by the network."),
.off = offsetof(channel_t, ch_autoname),
.set = channel_class_autoname_set,
.opts = PO_ADVANCED,
.type = PT_STR,
.id = "name",
.name = N_("Name"),
+ .desc = N_("Name. The name given to/of the channel (This is "
+ "how it`ll appear in your EPG.)"),
.off = offsetof(channel_t, ch_name),
.set = channel_class_set_name,
.get = channel_class_get_name,
.intsplit = CHANNEL_SPLIT,
.id = "number",
.name = N_("Number"),
+ .desc = N_("Number. The position the channel will appear on "
+ "your EPG. This is not used by Tvheadend "
+ "internally, but rather intended to be used by "
+ "HTSP clients for mapping to remote control "
+ "buttons, presentation order, etc."),
.off = offsetof(channel_t, ch_number),
.get = channel_class_get_number,
},
.type = PT_STR,
.id = "icon",
.name = N_("User icon"),
+ .desc = N_("User icon. The URL (or path) to the icon to use/used "
+ "for the channel."),
.off = offsetof(channel_t, ch_icon),
.notify = channel_class_icon_notify,
.opts = PO_ADVANCED,
.type = PT_STR,
.id = "icon_public_url",
.name = N_("Icon URL"),
+ .desc = N_("Icon URL. The imagecache path to the icon to use/used "
+ "for the channel."),
.get = channel_class_get_icon,
.opts = PO_RDONLY | PO_NOSAVE | PO_HIDDEN | PO_EXPERT,
},
.type = PT_BOOL,
.id = "epgauto",
.name = N_("Automatically map EPG source"),
+ .desc = N_("Automatically map EPG source. Automatically link "
+ "EPG data to the channel (using the channel name "
+ "for matching). If you turn this option off, only "
+ "the OTA EPG grabber will be used for this channel "
+ "unless the EPG Source option is not set manually."),
.off = offsetof(channel_t, ch_epgauto),
.opts = PO_ADVANCED,
},
.islist = 1,
.id = "epggrab",
.name = N_("EPG source"),
+ .desc = N_("EPG source. Name of the module, grabber or channel "
+ "that should be used to update this channels "
+ "EPG info."),
.set = channel_class_epggrab_set,
.get = channel_class_epggrab_get,
.list = channel_class_epggrab_list,
.type = PT_INT,
.id = "dvr_pre_time",
.name = N_("Pre-recording padding"), // TODO: better text?
+ .desc = N_("Pre-recording padding. Start recording earlier "
+ "than the EPG/timer 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 "
+ "DVR entry or DVR profile will be used."),
.off = offsetof(channel_t, ch_dvr_extra_time_pre),
.opts = PO_ADVANCED
},
.type = PT_INT,
.id = "dvr_pst_time",
.name = N_("Post-recording padding"), // TODO: better text?
+ .desc = N_("Post-recording padding. Continue recording for x "
+ "minutes after scheduled stop time."),
.off = offsetof(channel_t, ch_dvr_extra_time_post),
.opts = PO_ADVANCED
},
.type = PT_INT,
.id = "epg_running",
.name = N_("Use EPG running state"),
+ .desc = N_("Use EPG running state. 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(channel_t, ch_epg_running),
.list = channel_class_epg_running_list,
.opts = PO_ADVANCED
.islist = 1,
.id = "services",
.name = N_("Services"),
+ .desc = N_("Services. Services associated with the channel."),
.get = channel_class_services_get,
.set = channel_class_services_set,
.list = channel_class_services_enum,
.islist = 1,
.id = "tags",
.name = N_("Tags"),
+ .desc = N_("Tags. Tags linked/to link to the channel."),
.get = channel_class_tags_get,
.set = channel_class_tags_set,
.list = channel_tag_class_get_list,
.type = PT_STR,
.id = "bouquet",
.name = N_("Bouquet (auto)"),
+ .desc = N_("Bouquet (auto). The bouquet the channel is "
+ "associated with."),
.get = channel_class_bouquet_get,
.set = channel_class_bouquet_set,
.list = bouquet_class_get_list,
.type = PT_STR,
.id = "epg_parent",
.name = N_("Reuse EPG from"),
+ .name = N_("Reuse EPG from. Reuse the EPG from another "
+ "channel."),
.set = channel_class_epg_parent_set,
.list = channel_class_get_list,
.off = offsetof(channel_t, ch_epg_parent),
.type = PT_TIME,
.id = "start_real",
.name = N_("Scheduled start time"),
- .desc = N_("The scheduled start time, including any pre-recording padding "
- "and a warm-up time of 30 seconds."),
+ .desc = N_("The scheduled start time, including any "
+ "pre-recording padding and a warm-up time of 30 "
+ "seconds."),
.get = dvr_entry_class_start_real_get,
.opts = PO_RDONLY | PO_NOSAVE,
},
.type = PT_STR,
.id = "rootpath",
.name = N_("Device path"),
+ .desc = N_("Path used by device."),
.opts = PO_RDONLY,
.off = offsetof(linuxdvb_adapter_t, la_rootpath),
},
.type = PT_BOOL,
.id = "enabled",
.name = N_("Enabled"),
- .desc = N_("Enable/disable this device."),
+ .desc = N_("Enable/disable the device."),
.off = offsetof(linuxdvb_ca_t, lca_enabled),
.notify = linuxdvb_ca_class_enabled_notify,
},
.type = PT_BOOL,
.id = "early_tune",
.name = N_("Tune before DiseqC"),
+ .desc = N_("One tune request (setup) is sent before the "
+ "DiseqC sequence (voltage, tone settings). "
+ "Some linux drivers require this procedure."),
.off = offsetof(linuxdvb_satconf_t, ls_early_tune),
.opts = PO_ADVANCED,
.def.i = 1
.type = PT_INT,
.id = "diseqc_repeats",
.name = N_("DiseqC repeats"),
+ .desc = N_("Number of repeats for the DiseqC commands "
+ "(default is zero - no DiseqC repeats). "
+ "Note: this represents the number of repeats, not "
+ "the number of requests - so 0 means 'send once: "
+ "don't repeat', 1 means 'send twice: send once, "
+ "then send one repeat', etc."),
.off = offsetof(linuxdvb_satconf_t, ls_diseqc_repeats),
.opts = PO_ADVANCED,
.def.i = 0
.type = PT_BOOL,
.id = "diseqc_full",
.name = N_("Full DiseqC"),
+ .desc = N_("Always send the whole DiseqC sequence including "
+ "LNB setup (voltage, tone). If this is not "
+ "checked, only changed settings are sent, which "
+ "may cause issues with some drivers. If the tuning "
+ "is not reliable, try activating this option."),
.off = offsetof(linuxdvb_satconf_t, ls_diseqc_full),
.opts = PO_ADVANCED,
.def.i = 1
.type = PT_BOOL,
.id = "lnb_poweroff",
.name = N_("Turn off LNB when idle"),
+ .desc = N_("Switch off the power to the LNB when idle. Note: "
+ "this may cause interference with other devices "
+ "when the LNB is powered back up."),
.off = offsetof(linuxdvb_satconf_t, ls_lnb_poweroff),
.opts = PO_ADVANCED,
.def.i = 1
.type = PT_STR,
.id = "network_a",
.name = N_("A"),
+ .desc = N_("Network for port A."),
.islist = 1,
.get = linuxdvb_satconf_class_network_get0,
.set = linuxdvb_satconf_class_network_set0,
.type = PT_STR,
.id = "network_b",
.name = N_("B"),
+ .desc = N_("Network for port B."),
.islist = 1,
.get = linuxdvb_satconf_class_network_get1,
.set = linuxdvb_satconf_class_network_set1,
.type = PT_STR,
.id = "network_aa",
.name = N_("AA"),
+ .desc = N_("Network for port AA."),
.islist = 1,
.get = linuxdvb_satconf_class_network_get0,
.set = linuxdvb_satconf_class_network_set0,
.type = PT_STR,
.id = "network_ab",
.name = N_("AB"),
+ .desc = N_("Network for port AB."),
.islist = 1,
.get = linuxdvb_satconf_class_network_get1,
.set = linuxdvb_satconf_class_network_set1,
.type = PT_STR,
.id = "network_ba",
.name = N_("BA"),
+ .desc = N_("Network for port BA."),
.islist = 1,
.get = linuxdvb_satconf_class_network_get2,
.set = linuxdvb_satconf_class_network_set2,
.type = PT_STR,
.id = "network_bb",
.name = N_("BB"),
+ .desc = N_("Network for port BB."),
.islist = 1,
.get = linuxdvb_satconf_class_network_get3,
.set = linuxdvb_satconf_class_network_set3,
.type = PT_U16,
.id = "id",
.name = N_("SCR (ID)"),
+ .desc = N_("SCR (Satellite Channel Router) ID."),
.get = linuxdvb_satconf_class_en50494_id_get,
.set = linuxdvb_satconf_class_en50494_id_set,
.list = linuxdvb_en50494_id_list,
.type = PT_U16,
.id = "pin",
.name = N_("PIN"),
+ .desc = N_("PIN."),
.get = linuxdvb_satconf_class_en50494_pin_get,
.set = linuxdvb_satconf_class_en50494_pin_set,
.list = linuxdvb_en50494_pin_list,
.type = PT_U16,
.id = "frequency",
.name = N_("Frequency (MHz)"),
+ .desc = N_("Frequency (in MHz)."),
.get = linuxdvb_satconf_class_en50494_freq_get,
.set = linuxdvb_satconf_class_en50494_freq_set,
.opts = PO_NOSAVE,
.type = PT_STR,
.id = "network_a",
.name = N_("Network A"),
+ .desc = N_("Network for port A."),
.islist = 1,
.get = linuxdvb_satconf_class_network_get0,
.set = linuxdvb_satconf_class_network_set0,
.type = PT_STR,
.id = "network_b",
.name = N_("Network B"),
+ .desc = N_("Network for port B."),
.islist = 1,
.get = linuxdvb_satconf_class_network_get1,
.set = linuxdvb_satconf_class_network_set1,
{
MUX_PROP_STR("delsys", N_("Delivery system"), dvbt, delsys, "DVBT"),
.desc = N_("The delivery system the mux uses. "
- "Make sure that your tuner supports the delivery system"
- ""),
+ "Make sure that your tuner supports the delivery "
+ "system selected here."),
},
{
.type = PT_U32,
},
{
MUX_PROP_STR("hierarchy", N_("Hierarchy"), dvbt, hier, N_("AUTO")),
- .desc = N_("The hierarchical modulation used by this mux. "
+ .desc = N_("The hierarchical modulation used by the mux. "
"Most people will not need to change this setting."),
},
{
.ic_properties = (const property_t[]){
{
MUX_PROP_STR("delsys", N_("Delivery system"), dvbc, delsys, "DVB-C"),
- .desc = N_("Select the delivery system used by your cable provider."),
+ .desc = N_("The delivery system used by your cable provider."),
},
{
.type = PT_U32,
.ic_properties = (const property_t[]){
{
MUX_PROP_STR("delsys", N_("Delivery system"), dvbs, delsys, "DVBS"),
+ .desc = N_("The delivery system used by your provider."),
},
{
.type = PT_U32,
.type = PT_INT,
.id = "stream_id",
.name = N_("ISI (Stream ID)"),
- .desc = N_("The stream ID used for this mux."),
+ .desc = N_("The stream ID used for the mux."),
.off = offsetof(dvb_mux_t, lm_tuning.dmc_fe_stream_id),
.def.i = DVB_NO_STREAM_ID_FILTER,
.opts = PO_ADVANCED
{
MUX_PROP_STR("pls_mode", N_("PLS mode"), dvbs, pls_mode, "ROOT"),
.desc = N_("The Physical Layer Scrambling (PLS) mode "
- "used on this mux."),
+ "used on the mux."),
},
{
.type = PT_U32,
.id = "pls_code",
.name = N_("PLS code"),
.desc = N_("The Physical Layer Scrambling (PLS) code "
- "used on this mux."),
+ "used on the mux."),
.off = offsetof(dvb_mux_t, lm_tuning.dmc_fe_pls_code),
.def.u32 = 1,
.opts = PO_ADVANCED
.type = PT_STR,
.id = "orbital",
.name = N_("Orbital position"),
- .desc = N_("The orbital position of the satellite this mux is on."),
+ .desc = N_("The orbital position of the satellite the mux is on."),
.set = dvb_mux_dvbs_class_orbital_set,
.get = dvb_mux_dvbs_class_orbital_get,
.opts = PO_ADVANCED | PO_RDONLY
.ic_properties = (const property_t[]){
{
MUX_PROP_STR("delsys", N_("Delivery system"), atsc_t, delsys, "ATSC-T"),
+ .desc = N_("The delivery system used by your provider."),
},
{
.type = PT_U32,
.ic_properties = (const property_t[]){
{
MUX_PROP_STR("delsys", N_("Delivery system"), atsc_c, delsys, "ATSC-C"),
+ .desc = N_("The delivery system used by your provider."),
},
{
.type = PT_U32,
.ic_properties = (const property_t[]){
{
MUX_PROP_STR("delsys", N_("Delivery system"), isdb_t, delsys, "ISDB-T"),
- .desc = N_("Select the delivery system used by your provider."),
+ .desc = N_("The delivery system used by your provider."),
},
{
.type = PT_U32,
.ic_properties = (const property_t[]){
{
MUX_PROP_STR("delsys", N_("Delivery system"), isdb_s, delsys, "ISDBS"),
+ .desc = N_("The delivery system used by your provider."),
},
{
.type = PT_U32,
.type = PT_INT,
.id = "stream_id",
.name = N_("Stream ID"),
- .desc = N_("The stream ID used for this mux."),
+ .desc = N_("The stream ID used for the mux."),
.off = offsetof(dvb_mux_t, lm_tuning.dmc_fe_stream_id),
.def.i = DVB_NO_STREAM_ID_FILTER,
.opts = PO_ADVANCED
.type = PT_BOOL,
.id = "enabled",
.name = N_("Enabled"),
+ .desc = N_("Enable/disable the entry."),
.off = offsetof(mpegts_mux_sched_t, mms_enabled),
.def.i = 1,
},
.type = PT_STR,
.id = "mux",
.name = N_("Mux"),
+ .desc = N_("The mux to play when the entry is triggered."),
.off = offsetof(mpegts_mux_sched_t, mms_mux),
.list = mpegts_mux_sched_class_mux_list,
},
.type = PT_STR,
.id = "cron",
.name = N_("Cron"),
+ .desc = N_("Schedule frequency (in Cron format)."),
.off = offsetof(mpegts_mux_sched_t, mms_cronstr),
.set = mpegts_mux_sched_class_cron_set,
},
.type = PT_INT,
.id = "timeout",
.name = N_("Timout (secs)"),
+ .desc = N_("The length of time (in seconds) to play the mux "
+ "for. 1 hour = 3600."),
.off = offsetof(mpegts_mux_sched_t, mms_timeout),
},
{
.type = PT_BOOL,
.id = "enabled",
.name = N_("Enabled"),
+ .desc = N_("Enable/disable timeshift."),
.off = offsetof(timeshift_conf_t, enabled),
},
{
.type = PT_BOOL,
.id = "ondemand",
.name = N_("On-demand (no first rewind)"),
- .desc = N_("Use timeshift only on-demand. It is started when the first request "
+ /*.desc = N_("Use timeshift only on-demand. It is started when the first request "
"to move in the playback time occurs (fast-forward, rewind, goto)."),
+ */
+ .desc = N_("Only activate timeshift when the client makes the first "
+ "rewind, fast-forward or pause request. Note, "
+ "because there is no buffer on the first request, "
+ "rewinding is not possible."),
.off = offsetof(timeshift_conf_t, ondemand),
},
{
.type = PT_STR,
.id = "path",
.name = N_("Storage path"),
+ .desc = N_("Path to where the timeshift data will be stored. "
+ "If nothing is specified this will default to "
+ "CONF_DIR/timeshift/buffer."),
.off = offsetof(timeshift_conf_t, path),
},
{
.type = PT_U32,
.id = "max_period",
.name = N_("Maximum period (mins)"),
+ .desc = N_("The maximum time period that will be buffered for "
+ "any given (client) subscription."),
.off = offsetof(timeshift_conf_t, max_period),
},
{
.type = PT_BOOL,
.id = "unlimited_period",
.name = N_("Unlimited time"),
+ .desc = N_("Allow the timeshift buffer to grow unbounded until "
+ "your storage media runs out of space. Warning, "
+ "enabling this option may cause your system to slow "
+ "down or crash completely!"),
.off = offsetof(timeshift_conf_t, unlimited_period),
},
{
.type = PT_S64,
.id = "max_size",
.name = N_("Maximum size (MB)"),
+ .desc = N_("The maximum combined size of all timeshift buffers. "
+ "If you specify an unlimited period it's highly "
+ "recommended you specify a value here."),
.set = timeshift_conf_class_max_size_set,
.get = timeshift_conf_class_max_size_get,
},
.type = PT_S64,
.id = "ram_size",
.name = N_("Maximum RAM size (MB)"),
+ .desc = N_("The maximum RAM (system memory) size for timeshift "
+ "buffers. When free RAM buffers are available, they "
+ "are used instead storage to save the timeshift data."),
.set = timeshift_conf_class_ram_size_set,
.get = timeshift_conf_class_ram_size_get,
},
.type = PT_BOOL,
.id = "unlimited_size",
.name = N_("Unlimited size"),
+ .desc = N_("Allow the combined size of all timeshift buffers to "
+ "potentially grow unbounded until your storage media "
+ "runs out of space."),
.off = offsetof(timeshift_conf_t, unlimited_size),
},
{
.type = PT_BOOL,
.id = "ram_only",
.name = N_("RAM only"),
+ .desc = N_("Only use system RAM for timeshift buffers."),
.off = offsetof(timeshift_conf_t, ram_only),
},
{
.name = N_("Debug log path"),
/* Should this really be called Debug log path? Don't you need to
* enter a filename here not just a path? */
- .desc = N_("Enter a filename for debug output."),
+ .desc = N_("Enter a filename you want to save the debug log to."),
.get = tvhlog_class_path_get,
.set = tvhlog_class_path_set,
.group = 1,