]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Another lot of tooltip descriptions!
authorMark Clarkstone <hello@markclarkstone.co.uk>
Sun, 6 Dec 2015 14:59:21 +0000 (14:59 +0000)
committerJaroslav Kysela <perex@perex.cz>
Mon, 7 Dec 2015 08:14:37 +0000 (09:14 +0100)
src/epggrab.c
src/esfilter.c
src/input/mpegts/mpegts_mux.c
src/input/mpegts/mpegts_mux_dvb.c
src/input/mpegts/mpegts_network_dvb.c
src/input/mpegts/mpegts_service.c
src/satip/server.c

index 256e6884bbff1a8066826bb1e0d9513d8db7ab60..79510a75c019953a67e1ae6c5fbb8ce9050fc380 100644 (file)
@@ -266,6 +266,10 @@ const idclass_t epggrab_class = {
       .type   = PT_BOOL,
       .id     = "channel_rename",
       .name   = N_("Update channel name"),
+      .desc   = N_("Automatically update channel names using "
+                   "information provided by the enabled EPG providers. "
+                   "Note: this may cause unwanted changes to "
+                   "already defined channel names."),
       .off    = offsetof(epggrab_conf_t, channel_rename),
       .group  = 1,
     },
@@ -273,6 +277,10 @@ const idclass_t epggrab_class = {
       .type   = PT_BOOL,
       .id     = "channel_renumber",
       .name   = N_("Update channel number"),
+      .desc   = N_("Automatically update channel numbers using "
+                   "information provided by the enabled EPG providers. "
+                   "Note: this may cause unwanted changes to "
+                   "already defined channel numbers."),
       .off    = offsetof(epggrab_conf_t, channel_renumber),
       .group  = 1,
     },
@@ -280,6 +288,10 @@ const idclass_t epggrab_class = {
       .type   = PT_BOOL,
       .id     = "channel_reicon",
       .name   = N_("Update channel icon"),
+      .desc   = N_("Automatically update channel icons using "
+                   "information provided by the enabled EPG providers. "
+                   "Note: this may cause unwanted changes to "
+                   "already defined channel icons."),
       .off    = offsetof(epggrab_conf_t, channel_reicon),
       .group  = 1,
     },
@@ -287,6 +299,11 @@ const idclass_t epggrab_class = {
       .type   = PT_INT,
       .id     = "epgdb_periodicsave",
       .name   = N_("Periodically save EPG to disk (hours)"),
+      .desc   = N_("Writes the current in-memory EPG database to disk "
+                   "every x hours, so should a crash/unexpected "
+                   "shutdown occur EPG data is saved "
+                   "periodically to the database (re-read on next "
+                   "startup). Set to 0 to disable."),
       .off    = offsetof(epggrab_conf_t, epgdb_periodicsave),
       .group  = 1,
     },
@@ -294,6 +311,10 @@ const idclass_t epggrab_class = {
       .type   = PT_STR,
       .id     = "cron",
       .name   = N_("Cron multi-line"),
+      .desc   = N_("Multiple lines of the cron time specification. "
+                   "The default cron triggers the internal grabbers "
+                   "daily at 12:04 and 00:04. See Help on how to define "
+                   "your own."),
       .off    = offsetof(epggrab_conf_t, cron),
       .notify = epggrab_class_cron_notify,
       .opts   = PO_MULTILINE | PO_ADVANCED,
@@ -303,6 +324,7 @@ const idclass_t epggrab_class = {
       .type   = PT_BOOL,
       .id     = "ota_initial",
       .name   = N_("Force initial EPG scan at start-up"),
+      .desc   = N_("Force an initial EPG scan at start-up."),
       .off    = offsetof(epggrab_conf_t, ota_initial),
       .opts   = PO_ADVANCED,
       .group  = 3,
@@ -311,6 +333,10 @@ const idclass_t epggrab_class = {
       .type   = PT_STR,
       .id     = "ota_cron",
       .name   = N_("Over-the-air Cron multi-line"),
+      .desc   = N_("Multiple lines of the cron time specification. "
+                   "The default cron triggers the Over-the-air "
+                   "grabber daily at 02:04 and 14:04. See Help on how "
+                   "to define your own."),
       .off    = offsetof(epggrab_conf_t, ota_cron),
       .notify = epggrab_class_ota_cron_notify,
       .opts   = PO_MULTILINE | PO_ADVANCED,
@@ -320,6 +346,9 @@ const idclass_t epggrab_class = {
       .type   = PT_U32,
       .id     = "ota_timeout",
       .name   = N_("EPG scan timeout in seconds (30-7200)"),
+      .desc   = N_("The multiplex (mux) is tuned for this amount of "
+                   "time at most. If the EPG data is complete before "
+                   "this limit, the mux is released sooner."),
       .off    = offsetof(epggrab_conf_t, ota_timeout),
       .opts   = PO_ADVANCED,
       .group  = 3,
index b31542ba53ea29f71a08dc591d31dec8cdad559e..8932b3996d041f624de9a5d76e7e9bbaa52bd9ae 100644 (file)
@@ -635,6 +635,8 @@ const idclass_t esfilter_class_video = {
       .islist   = 1,
       .id       = "type",
       .name     = N_("Stream type"),
+      .desc     = N_("The video stream types the filter should apply "
+                     "to."),
       .get      = esfilter_class_type_get,
       .set      = esfilter_class_type_set_video,
       .list     = esfilter_class_type_enum_video,
@@ -644,6 +646,7 @@ const idclass_t esfilter_class_video = {
       .type     = PT_STR,
       .id       = "language",
       .name     = N_("Language"),
+      .desc     = N_("The language the filter should apply to."),
       .get      = esfilter_class_language_get,
       .set      = esfilter_class_language_set,
       .list     = esfilter_class_language_enum,
@@ -652,6 +655,9 @@ const idclass_t esfilter_class_video = {
       .type     = PT_STR,
       .id       = "service",
       .name     = N_("Service"),
+      .desc     = N_("The service the filter should apply to. "
+                     "Leave blank to apply the filter to all "
+                     "services."),
       .get      = esfilter_class_service_get,
       .set      = esfilter_class_service_set,
       .list     = esfilter_class_service_enum,
@@ -660,18 +666,32 @@ const idclass_t esfilter_class_video = {
       .type     = PT_INT,
       .id       = "sindex",
       .name     = N_("Stream index"),
+      .desc     = N_("The logical stream index to compare. Note that "
+                     "this index is computed using all filters."
+                     "Example: If filter is set to AC3 audio type and "
+                     "the language to ‘eng’ and there are two AC3 "
+                     "‘eng’ streams in the service, the first stream "
+                     "could be identified using number 1 and the "
+                     "second using number 2."),
       .off      = offsetof(esfilter_t, esf_sindex),
     },
     {
       .type     = PT_INT,
       .id       = "pid",
       .name     = N_("PID"),
+      .desc     = N_("Program identification (PID) number to compare. "
+                     "Zero means any. This comparison is processed "
+                     "only when service comparison is active and for "
+                     "the Conditional Access filter."),
       .off      = offsetof(esfilter_t, esf_pid),
     },
     {
       .type     = PT_INT,
       .id       = "action",
       .name     = N_("Action"),
+      .desc     = N_("The rule action defines the operation when all "
+                     "comparisons succeed. See Help for more "
+                     "information on what the various rules do."),
       .get      = esfilter_class_action_get,
       .set      = esfilter_class_action_set,
       .list     = esfilter_class_action_enum,
@@ -680,12 +700,17 @@ const idclass_t esfilter_class_video = {
       .type     = PT_BOOL,
       .id       = "log",
       .name     = N_("Log"),
+      .desc     = N_("Write a short message to log identifying the "
+                     "matched parameters. It is useful for debugging "
+                     "your setup or structure of incoming streams."),
       .off      = offsetof(esfilter_t, esf_log),
     },
     {
       .type     = PT_STR,
       .id       = "comment",
       .name     = N_("Comment"),
+      .desc     = N_("Free-format text field. Enter whatever you "
+                     "like here."),
       .off      = offsetof(esfilter_t, esf_comment),
     },
     {}
@@ -702,6 +727,8 @@ const idclass_t esfilter_class_audio = {
       .islist   = 1,
       .id       = "type",
       .name     = N_("Stream type"),
+      .desc     = N_("The audio stream types the filter should apply "
+                     "to."),
       .get      = esfilter_class_type_get,
       .set      = esfilter_class_type_set_audio,
       .list     = esfilter_class_type_enum_audio,
@@ -711,6 +738,7 @@ const idclass_t esfilter_class_audio = {
       .type     = PT_STR,
       .id       = "language",
       .name     = N_("Language"),
+      .desc     = N_("The language the filter should apply to."),
       .get      = esfilter_class_language_get,
       .set      = esfilter_class_language_set,
       .list     = esfilter_class_language_enum,
@@ -719,6 +747,9 @@ const idclass_t esfilter_class_audio = {
       .type     = PT_STR,
       .id       = "service",
       .name     = N_("Service"),
+      .desc     = N_("The service the filter should apply to. "
+                     "Leave blank to apply the filter to all "
+                     "services."),
       .get      = esfilter_class_service_get,
       .set      = esfilter_class_service_set,
       .list     = esfilter_class_service_enum,
@@ -727,18 +758,32 @@ const idclass_t esfilter_class_audio = {
       .type     = PT_INT,
       .id       = "sindex",
       .name     = N_("Stream index"),
+      .desc     = N_("The logical stream index to compare. Note that "
+                     "this index is computed using all filters."
+                     "Example: If filter is set to AC3 audio type and "
+                     "the language to ‘eng’ and there are two AC3 "
+                     "‘eng’ streams in the service, the first stream "
+                     "could be identified using number 1 and the "
+                     "second using number 2."),
       .off      = offsetof(esfilter_t, esf_sindex),
     },
     {
       .type     = PT_INT,
       .id       = "pid",
       .name     = N_("PID"),
+      .desc     = N_("Program identification (PID) number to compare. "
+                     "Zero means any. This comparison is processed "
+                     "only when service comparison is active and for "
+                     "the Conditional Access filter."),
       .off      = offsetof(esfilter_t, esf_pid),
     },
     {
       .type     = PT_INT,
       .id       = "action",
       .name     = N_("Action"),
+      .desc     = N_("The rule action defines the operation when all "
+                     "comparisons succeed. See Help for more "
+                     "information on what the various rules do."),
       .get      = esfilter_class_action_get,
       .set      = esfilter_class_action_set,
       .list     = esfilter_class_action_enum,
@@ -747,12 +792,17 @@ const idclass_t esfilter_class_audio = {
       .type     = PT_BOOL,
       .id       = "log",
       .name     = N_("Log"),
+      .desc     = N_("Write a short message to log identifying the "
+                     "matched parameters. It is useful for debugging "
+                     "your setup or structure of incoming streams."),
       .off      = offsetof(esfilter_t, esf_log),
     },
     {
       .type     = PT_STR,
       .id       = "comment",
       .name     = N_("Comment"),
+      .desc     = N_("Free-format text field. Enter whatever you "
+                     "like here."),
       .off      = offsetof(esfilter_t, esf_comment),
     },
     {}
@@ -769,6 +819,8 @@ const idclass_t esfilter_class_teletext = {
       .islist   = 1,
       .id       = "type",
       .name     = N_("Stream type"),
+      .desc     = N_("Teletext stream type is only available for "
+                     "this filter."),
       .get      = esfilter_class_type_get,
       .set      = esfilter_class_type_set_teletext,
       .list     = esfilter_class_type_enum_teletext,
@@ -778,6 +830,7 @@ const idclass_t esfilter_class_teletext = {
       .type     = PT_STR,
       .id       = "language",
       .name     = N_("Language"),
+      .desc     = N_("The language the filter should apply to."),
       .get      = esfilter_class_language_get,
       .set      = esfilter_class_language_set,
       .list     = esfilter_class_language_enum,
@@ -786,6 +839,9 @@ const idclass_t esfilter_class_teletext = {
       .type     = PT_STR,
       .id       = "service",
       .name     = N_("Service"),
+      .desc     = N_("The service the filter should apply to. "
+                     "Leave blank to apply the filter to all "
+                     "services."),
       .get      = esfilter_class_service_get,
       .set      = esfilter_class_service_set,
       .list     = esfilter_class_service_enum,
@@ -794,18 +850,32 @@ const idclass_t esfilter_class_teletext = {
       .type     = PT_INT,
       .id       = "sindex",
       .name     = N_("Stream index"),
+      .desc     = N_("The logical stream index to compare. Note that "
+                     "this index is computed using all filters."
+                     "Example: If filter is set to AC3 audio type and "
+                     "the language to ‘eng’ and there are two AC3 "
+                     "‘eng’ streams in the service, the first stream "
+                     "could be identified using number 1 and the "
+                     "second using number 2."),
       .off      = offsetof(esfilter_t, esf_sindex),
     },
     {
       .type     = PT_INT,
       .id       = "pid",
       .name     = N_("PID"),
+      .desc     = N_("Program identification (PID) number to compare. "
+                     "Zero means any. This comparison is processed "
+                     "only when service comparison is active and for "
+                     "the Conditional Access filter."),
       .off      = offsetof(esfilter_t, esf_pid),
     },
     {
       .type     = PT_INT,
       .id       = "action",
       .name     = N_("Action"),
+      .desc     = N_("The rule action defines the operation when all "
+                     "comparisons succeed. See Help for more "
+                     "information on what the various rules do."),
       .get      = esfilter_class_action_get,
       .set      = esfilter_class_action_set,
       .list     = esfilter_class_action_enum,
@@ -814,12 +884,17 @@ const idclass_t esfilter_class_teletext = {
       .type     = PT_BOOL,
       .id       = "log",
       .name     = N_("Log"),
+      .desc     = N_("Write a short message to log identifying the "
+                     "matched parameters. It is useful for debugging "
+                     "your setup or structure of incoming streams."),
       .off      = offsetof(esfilter_t, esf_log),
     },
     {
       .type     = PT_STR,
       .id       = "comment",
       .name     = N_("Comment"),
+      .desc     = N_("Free-format text field. Enter whatever you "
+                     "like here."),
       .off      = offsetof(esfilter_t, esf_comment),
     },
     {}
@@ -836,6 +911,8 @@ const idclass_t esfilter_class_subtit = {
       .islist   = 1,
       .id       = "type",
       .name     = N_("Stream type"),
+      .desc     = N_("The subtitle stream types the filter should "
+                     "apply to."),
       .get      = esfilter_class_type_get,
       .set      = esfilter_class_type_set_subtit,
       .list     = esfilter_class_type_enum_subtit,
@@ -845,6 +922,7 @@ const idclass_t esfilter_class_subtit = {
       .type     = PT_STR,
       .id       = "language",
       .name     = N_("Language"),
+      .desc     = N_("The language the filter should apply to."),
       .get      = esfilter_class_language_get,
       .set      = esfilter_class_language_set,
       .list     = esfilter_class_language_enum,
@@ -853,6 +931,9 @@ const idclass_t esfilter_class_subtit = {
       .type     = PT_STR,
       .id       = "service",
       .name     = N_("Service"),
+      .desc     = N_("The service the filter should apply to. "
+                     "Leave blank to apply the filter to all "
+                     "services."),
       .get      = esfilter_class_service_get,
       .set      = esfilter_class_service_set,
       .list     = esfilter_class_service_enum,
@@ -861,18 +942,32 @@ const idclass_t esfilter_class_subtit = {
       .type     = PT_INT,
       .id       = "sindex",
       .name     = N_("Stream index"),
+      .desc     = N_("The logical stream index to compare. Note that "
+                     "this index is computed using all filters."
+                     "Example: If filter is set to AC3 audio type and "
+                     "the language to ‘eng’ and there are two AC3 "
+                     "‘eng’ streams in the service, the first stream "
+                     "could be identified using number 1 and the "
+                     "second using number 2."),
       .off      = offsetof(esfilter_t, esf_sindex),
     },
     {
       .type     = PT_INT,
       .id       = "pid",
       .name     = N_("PID"),
+      .desc     = N_("Program identification (PID) number to compare. "
+                     "Zero means any. This comparison is processed "
+                     "only when service comparison is active and for "
+                     "the Conditional Access filter."),
       .off      = offsetof(esfilter_t, esf_pid),
     },
     {
       .type     = PT_INT,
       .id       = "action",
       .name     = N_("Action"),
+      .desc     = N_("The rule action defines the operation when all "
+                     "comparisons succeed. See Help for more "
+                     "information on what the various rules do."),
       .get      = esfilter_class_action_get,
       .set      = esfilter_class_action_set,
       .list     = esfilter_class_action_enum,
@@ -881,12 +976,17 @@ const idclass_t esfilter_class_subtit = {
       .type     = PT_BOOL,
       .id       = "log",
       .name     = N_("Log"),
+      .desc     = N_("Write a short message to log identifying the "
+                     "matched parameters. It is useful for debugging "
+                     "your setup or structure of incoming streams."),
       .off      = offsetof(esfilter_t, esf_log),
     },
     {
       .type     = PT_STR,
       .id       = "comment",
       .name     = N_("Comment"),
+      .desc     = N_("Free-format text field. Enter whatever you "
+                     "like here."),
       .off      = offsetof(esfilter_t, esf_comment),
     },
     {}
@@ -903,6 +1003,8 @@ const idclass_t esfilter_class_ca = {
       .islist   = 1,
       .id       = "type",
       .name     = N_("Stream type"),
+      .desc     = N_("The CA stream type is only available for this "
+                     "filter."),
       .get      = esfilter_class_type_get,
       .set      = esfilter_class_type_set_ca,
       .list     = esfilter_class_type_enum_ca,
@@ -912,6 +1014,8 @@ const idclass_t esfilter_class_ca = {
       .type     = PT_STR,
       .id       = "CAid",
       .name     = N_("CA identification"),
+      .desc     = N_("The CAID to compare. Leave blank to apply to "
+                     "all IDs."),
       .get      = esfilter_class_caid_get,
       .set      = esfilter_class_caid_set,
       .list     = esfilter_class_caid_enum,
@@ -920,6 +1024,8 @@ const idclass_t esfilter_class_ca = {
       .type     = PT_STR,
       .id       = "CAprovider",
       .name     = N_("CA provider"),
+      .desc     = N_("The CA provider to compare. Leave blank to apply "
+                     "to all providers."),
       .get      = esfilter_class_caprovider_get,
       .set      = esfilter_class_caprovider_set,
       .list     = esfilter_class_caprovider_enum,
@@ -928,6 +1034,9 @@ const idclass_t esfilter_class_ca = {
       .type     = PT_STR,
       .id       = "service",
       .name     = N_("Service"),
+      .desc     = N_("The service the filter should apply to. "
+                     "Leave blank to apply the filter to all "
+                     "services."),
       .get      = esfilter_class_service_get,
       .set      = esfilter_class_service_set,
       .list     = esfilter_class_service_enum,
@@ -936,18 +1045,32 @@ const idclass_t esfilter_class_ca = {
       .type     = PT_INT,
       .id       = "sindex",
       .name     = N_("Stream index"),
+      .desc     = N_("The logical stream index to compare. Note that "
+                     "this index is computed using all filters."
+                     "Example: If filter is set to AC3 audio type and "
+                     "the language to ‘eng’ and there are two AC3 "
+                     "‘eng’ streams in the service, the first stream "
+                     "could be identified using number 1 and the "
+                     "second using number 2."),
       .off      = offsetof(esfilter_t, esf_sindex),
     },
     {
       .type     = PT_INT,
       .id       = "pid",
       .name     = N_("PID"),
+      .desc     = N_("Program identification (PID) number to compare. "
+                     "Zero means any. This comparison is processed "
+                     "only when service comparison is active and for "
+                     "the Conditional Access filter."),
       .off      = offsetof(esfilter_t, esf_pid),
     },
     {
       .type     = PT_INT,
       .id       = "action",
       .name     = N_("Action"),
+      .desc     = N_("The rule action defines the operation when all "
+                     "comparisons succeed. See Help for more "
+                     "information on what the various rules do."),
       .get      = esfilter_class_action_get,
       .set      = esfilter_class_action_set,
       .list     = esfilter_class_action_enum,
@@ -956,12 +1079,17 @@ const idclass_t esfilter_class_ca = {
       .type     = PT_BOOL,
       .id       = "log",
       .name     = N_("Log"),
+      .desc     = N_("Write a short message to log identifying the "
+                     "matched parameters. It is useful for debugging "
+                     "your setup or structure of incoming streams."),
       .off      = offsetof(esfilter_t, esf_log),
     },
     {
       .type     = PT_STR,
       .id       = "comment",
       .name     = N_("Comment"),
+      .desc     = N_("Free-format text field. Enter whatever you "
+                     "like here."),
       .off      = offsetof(esfilter_t, esf_comment),
     },
     {}
@@ -978,6 +1106,8 @@ const idclass_t esfilter_class_other = {
       .islist   = 1,
       .id       = "type",
       .name     = N_("Stream type"),
+      .desc     = N_("The MPEGTS stream type is only available for "
+                     "this filter."),
       .get      = esfilter_class_type_get,
       .set      = esfilter_class_type_set_other,
       .list     = esfilter_class_type_enum_other,
@@ -987,6 +1117,7 @@ const idclass_t esfilter_class_other = {
       .type     = PT_STR,
       .id       = "language",
       .name     = N_("Language"),
+      .desc     = N_("The language the filter should apply to."),
       .get      = esfilter_class_language_get,
       .set      = esfilter_class_language_set,
       .list     = esfilter_class_language_enum,
@@ -995,6 +1126,9 @@ const idclass_t esfilter_class_other = {
       .type     = PT_STR,
       .id       = "service",
       .name     = N_("Service"),
+      .desc     = N_("The service the filter should apply to. "
+                     "Leave blank to apply the filter to all "
+                     "services."),
       .get      = esfilter_class_service_get,
       .set      = esfilter_class_service_set,
       .list     = esfilter_class_service_enum,
@@ -1003,12 +1137,19 @@ const idclass_t esfilter_class_other = {
       .type     = PT_INT,
       .id       = "pid",
       .name     = N_("PID"),
+      .desc     = N_("Program identification (PID) number to compare. "
+                     "Zero means any. This comparison is processed "
+                     "only when service comparison is active and for "
+                     "the Conditional Access filter."),
       .off      = offsetof(esfilter_t, esf_pid),
     },
     {
       .type     = PT_INT,
       .id       = "action",
       .name     = N_("Action"),
+      .desc     = N_("The rule action defines the operation when all "
+                     "comparisons succeed. See Help for more "
+                     "information on what the various rules do."),
       .get      = esfilter_class_action_get,
       .set      = esfilter_class_action_set,
       .list     = esfilter_class_action_enum,
@@ -1017,12 +1158,17 @@ const idclass_t esfilter_class_other = {
       .type     = PT_BOOL,
       .id       = "log",
       .name     = N_("Log"),
+      .desc     = N_("Write a short message to log identifying the "
+                     "matched parameters. It is useful for debugging "
+                     "your setup or structure of incoming streams."),
       .off      = offsetof(esfilter_t, esf_log),
     },
     {
       .type     = PT_STR,
       .id       = "comment",
       .name     = N_("Comment"),
+      .desc     = N_("Free-format text field. Enter whatever you "
+                     "like here."),
       .off      = offsetof(esfilter_t, esf_comment),
     },
     {}
index 8a07611a705ca0facfe86760e310511b8ecdd3df..c4cd21c59eb3bc663c2963d792f7936db7f527f6 100644 (file)
@@ -496,6 +496,7 @@ const idclass_t mpegts_mux_class =
       .type     = PT_BOOL,
       .id       = "enabled",
       .name     = N_("Enabled"),
+      .desc     = N_("Enable or disable this mux."),
       .off      = offsetof(mpegts_mux_t, mm_enabled),
       .def.i    = 1,
       .notify   = mpegts_mux_class_enabled_notify,
@@ -504,6 +505,8 @@ const idclass_t mpegts_mux_class =
       .type     = PT_INT,
       .id       = "epg",
       .name     = N_("EPG scan"),
+      .desc     = N_("Select the EPG grabber to use on this mux. "
+                     "Enable (auto) is the recommended value."),
       .off      = offsetof(mpegts_mux_t, mm_epg),
       .def.i    = MM_EPG_ENABLE,
       .list     = mpegts_mux_epg_list,
@@ -512,6 +515,7 @@ const idclass_t mpegts_mux_class =
       .type     = PT_STR,
       .id       = "network",
       .name     = N_("Network"),
+      .desc     = N_("The network this mux is on."),
       .opts     = PO_RDONLY | PO_NOSAVE,
       .get      = mpegts_mux_class_get_network,
     },
@@ -519,6 +523,7 @@ const idclass_t mpegts_mux_class =
       .type     = PT_STR,
       .id       = "network_uuid",
       .name     = N_("Network UUID"),
+      .desc     = N_("The networks universally unique identifier (UUID)."),
       .opts     = PO_RDONLY | PO_NOSAVE | PO_HIDDEN | PO_EXPERT,
       .get      = mpegts_mux_class_get_network_uuid,
     },
@@ -526,6 +531,7 @@ const idclass_t mpegts_mux_class =
       .type     = PT_STR,
       .id       = "name",
       .name     = N_("Name"),
+      .desc     = N_("The name (or freq) this mux is on."),
       .opts     = PO_RDONLY | PO_NOSAVE,
       .get      = mpegts_mux_class_get_name,
     },
@@ -533,6 +539,7 @@ const idclass_t mpegts_mux_class =
       .type     = PT_STR,
       .id       = "pnetwork_name",
       .name     = N_("Provider network name"),
+      .desc     = N_("The providers network name."),
       .off      = offsetof(mpegts_mux_t, mm_provider_network_name),
       .opts     = PO_RDONLY | PO_HIDDEN | PO_EXPERT,
     },
@@ -540,6 +547,7 @@ const idclass_t mpegts_mux_class =
       .type     = PT_U16,
       .id       = "onid",
       .name     = N_("Original network ID"),
+      .desc     = N_("The providers network ID."),
       .opts     = PO_RDONLY | PO_ADVANCED,
       .off      = offsetof(mpegts_mux_t, mm_onid),
     },
@@ -547,6 +555,8 @@ const idclass_t mpegts_mux_class =
       .type     = PT_U16,
       .id       = "tsid",
       .name     = N_("Transport stream ID"),
+      .desc     = N_("The transport stream ID of the mux within the "
+                     "network."),
       .opts     = PO_RDONLY | PO_ADVANCED,
       .off      = offsetof(mpegts_mux_t, mm_tsid),
     },
@@ -554,6 +564,7 @@ const idclass_t mpegts_mux_class =
       .type     = PT_STR,
       .id       = "cridauth",
       .name     = N_("CRID authority"),
+      .desc     = N_("The Content reference identifier (CRID) authority."),
       .opts     = PO_RDONLY | PO_HIDDEN | PO_EXPERT,
       .off      = offsetof(mpegts_mux_t, mm_crid_authority),
     },
@@ -561,6 +572,9 @@ const idclass_t mpegts_mux_class =
       .type     = PT_INT,
       .id       = "scan_state",
       .name     = N_("Scan status"),
+      .desc     = N_("The scan state. New muxes will automatically be "
+                     "changed to the PEND state. You can change this to "
+                     "ACTIVE to queue a scan of this mux."),
       .off      = offsetof(mpegts_mux_t, mm_scan_state),
       .set      = mpegts_mux_class_scan_state_set,
       .list     = mpegts_mux_class_scan_state_enum,
@@ -570,6 +584,7 @@ const idclass_t mpegts_mux_class =
       .type     = PT_INT,
       .id       = "scan_result",
       .name     = N_("Scan result"),
+      .desc     = N_("The outcome of the last scan performed on this mux."),
       .off      = offsetof(mpegts_mux_t, mm_scan_result),
       .opts     = PO_RDONLY | PO_SORTKEY,
       .list     = mpegts_mux_class_scan_result_enum,
@@ -578,6 +593,9 @@ const idclass_t mpegts_mux_class =
       .type     = PT_STR,
       .id       = "charset",
       .name     = N_("Character set"),
+      .desc     = N_("The character set used on this mux. You should "
+                     "not have to change this unless channel names, etc "
+                     " appear garbled."),
       .off      = offsetof(mpegts_mux_t, mm_charset),
       .list     = dvb_charset_enum,
       .opts     = PO_ADVANCED,
@@ -586,6 +604,7 @@ const idclass_t mpegts_mux_class =
       .type     = PT_INT,
       .id       = "num_svc",
       .name     = N_("# Services"),
+      .desc     = N_("The total number of services found on this mux."),
       .opts     = PO_RDONLY | PO_NOSAVE,
       .get      = mpegts_mux_class_get_num_svc,
     },
@@ -593,6 +612,8 @@ const idclass_t mpegts_mux_class =
       .type     = PT_INT,
       .id       = "num_chn",
       .name     = N_("# Channels"),
+      .desc     = N_("The number of services on this mux that are "
+                     "mapped to channels."),
       .opts     = PO_RDONLY | PO_NOSAVE,
       .get      = mpegts_mux_class_get_num_chn,
     },
@@ -600,6 +621,7 @@ const idclass_t mpegts_mux_class =
       .type     = PT_INT,
       .id       = "pmt_06_ac3",
       .name     = N_("AC-3 detection"),
+      .desc     = N_("Use AC-3 detection on this mux."),
       .off      = offsetof(mpegts_mux_t, mm_pmt_ac3),
       .def.i    = MM_AC3_STANDARD,
       .list     = mpegts_mux_ac3_list,
@@ -609,6 +631,8 @@ const idclass_t mpegts_mux_class =
       .type     = PT_BOOL,
       .id       = "eit_tsid_nocheck",
       .name     = N_("EIT - skip TSID check"),
+      .desc     = N_("Skip TSID checking. For when providers use invalid "
+                     "Transport Stream IDs."),
       .off      = offsetof(mpegts_mux_t, mm_eit_tsid_nocheck),
       .opts     = PO_HIDDEN | PO_EXPERT
     },
index 5c2db8c7bb5e4f0d0e4bb50d8baecc193e09795e..039fff78e0737fb5a018289d206c1279ecd771d4 100644 (file)
@@ -213,6 +213,7 @@ const idclass_t dvb_mux_dvbt_class =
       .type     = PT_U32,
       .id       = "frequency",
       .name     = N_("Frequency (Hz)"),
+      .desc     = N_("The frequency of the mux (in Hertz)."),
       .off      = offsetof(dvb_mux_t, lm_tuning.dmc_fe_freq),
       .set      = dvb_mux_dvbt_class_frequency_set,
     },
@@ -285,6 +286,7 @@ const idclass_t dvb_mux_dvbc_class =
       .type     = PT_U32,
       .id       = "frequency",
       .name     = N_("Frequency (Hz)"),
+      .desc     = N_("The frequency of the mux (in Hertz)."),
       .off      = offsetof(dvb_mux_t, lm_tuning.dmc_fe_freq),
       .set      = dvb_mux_dvbt_class_frequency_set,
     },
@@ -292,6 +294,7 @@ const idclass_t dvb_mux_dvbc_class =
       .type     = PT_U32,
       .id       = "symbolrate",
       .name     = N_("Symbol rate (Sym/s)"),
+      .desc     = N_("The symbol rate."),
       .off      = offsetof(dvb_mux_t, lm_tuning.u.dmc_fe_qam.symbol_rate),
     },
     {
@@ -539,6 +542,7 @@ const idclass_t dvb_mux_dvbs_class =
       .type     = PT_U32,
       .id       = "frequency",
       .name     = N_("Frequency (kHz)"),
+      .desc     = N_("The frequency of the mux (in Hertz)."),
       .off      = offsetof(dvb_mux_t, lm_tuning.dmc_fe_freq),
       .set      = dvb_mux_dvbs_class_frequency_set,
     },
@@ -546,6 +550,7 @@ const idclass_t dvb_mux_dvbs_class =
       .type     = PT_U32,
       .id       = "symbolrate",
       .name     = N_("Symbol rate (Sym/s)"),
+      .desc     = N_("The symbol rate."),
       .off      = offsetof(dvb_mux_t, lm_tuning.u.dmc_fe_qpsk.symbol_rate),
       .set      = dvb_mux_dvbs_class_symbol_rate_set,
     },
@@ -556,6 +561,7 @@ const idclass_t dvb_mux_dvbs_class =
       .type     = PT_STR,
       .id       = "modulation",
       .name     = N_("Modulation"),
+      .desc     = N_("The modulation used on the mux."),
       .set      = dvb_mux_dvbs_class_modulation_set,
       .get      = dvb_mux_dvbs_class_modulation_get,
       .list     = dvb_mux_dvbs_class_modulation_list,
@@ -568,6 +574,8 @@ const idclass_t dvb_mux_dvbs_class =
       .type     = PT_STR,
       .id       = "rolloff",
       .name     = N_("Rolloff"),
+      .desc     = N_("The mux rolloff. Leave as AUTO unless you know the "
+                     "exact rolloff for this mux."),
       .set      = dvb_mux_dvbs_class_rolloff_set,
       .get      = dvb_mux_dvbs_class_rolloff_get,
       .list     = dvb_mux_dvbs_class_rolloff_list,
@@ -577,6 +585,8 @@ const idclass_t dvb_mux_dvbs_class =
       .type     = PT_STR,
       .id       = "pilot",
       .name     = N_("Pilot"),
+      .desc     = N_("Use pilot on this mux. AUTO is the recommended "
+                     "value."),
       .opts     = PO_ADVANCED,
       .set      = dvb_mux_dvbs_class_pilot_set,
       .get      = dvb_mux_dvbs_class_pilot_get,
@@ -586,6 +596,7 @@ const idclass_t dvb_mux_dvbs_class =
       .type     = PT_INT,
       .id       = "stream_id",
       .name     = N_("ISI (Stream ID)"),
+      .desc     = N_("The stream ID used for this mux."),
       .off      = offsetof(dvb_mux_t, lm_tuning.dmc_fe_stream_id),
       .def.i   = DVB_NO_STREAM_ID_FILTER,
       .opts     = PO_ADVANCED
@@ -604,6 +615,8 @@ const idclass_t dvb_mux_dvbs_class =
       .type     = PT_U32,
       .id       = "pls_code",
       .name     = N_("PLS code"),
+      .desc     = N_("Enter the Physical Layer Scrambling (PLS) code "
+                     "used on this mux."),
       .off      = offsetof(dvb_mux_t, lm_tuning.dmc_fe_pls_code),
       .def.u32 = 1,
       .opts     = PO_ADVANCED
@@ -612,6 +625,7 @@ const idclass_t dvb_mux_dvbs_class =
       .type     = PT_STR,
       .id       = "orbital",
       .name     = N_("Orbital position"),
+      .desc     = N_("The orbital position of the satellite this mux is on."),
       .set      = dvb_mux_dvbs_class_orbital_set,
       .get      = dvb_mux_dvbs_class_orbital_get,
       .opts     = PO_ADVANCED | PO_RDONLY
@@ -648,6 +662,7 @@ const idclass_t dvb_mux_atsc_class =
       .type     = PT_U32,
       .id       = "frequency",
       .name     = N_("Frequency (Hz)"),
+      .desc     = N_("The frequency of the mux (in Hertz)."),
       .off      = offsetof(dvb_mux_t, lm_tuning.dmc_fe_freq),
       .set      = dvb_mux_dvbt_class_frequency_set,
     },
index 79bd97406c6ea5f779432f593d046e21702ab6d7..8c0a8151b81ebecf71463c22875c44ee58e4cd92 100644 (file)
@@ -204,6 +204,9 @@ const idclass_t dvb_network_dvbt_class =
       .type     = PT_STR,
       .id       = "scanfile",
       .name     = N_("Pre-defined muxes"),
+      .desc     = N_("Use a pre-defined list of DVB-T muxes. "
+                     "Note: these lists can sometimes be outdated and "
+                     "may cause scanning to take longer than usual."),
       .set      = dvb_network_class_scanfile_set,
       .get      = dvb_network_class_scanfile_get,
       .list     = dvb_network_dvbt_class_scanfile_list,
@@ -223,6 +226,9 @@ const idclass_t dvb_network_dvbc_class =
       .type     = PT_STR,
       .id       = "scanfile",
       .name     = N_("Pre-defined muxes"),
+      .desc     = N_("Use a pre-defined list of DVB-C muxes. "
+                     "Note: these lists can sometimes be outdated and "
+                     "may cause scanning to take longer than usual."),
       .set      = dvb_network_class_scanfile_set,
       .get      = dvb_network_class_scanfile_get,
       .list     = dvb_network_dvbc_class_scanfile_list,
@@ -242,6 +248,9 @@ const idclass_t dvb_network_dvbs_class =
       .type     = PT_STR,
       .id       = "scanfile",
       .name     = N_("Pre-defined muxes"),
+      .desc     = N_("Use a pre-defined list of DVB-S/S2 muxes. "
+                     "Note: these lists can sometimes be outdated and "
+                     "may cause scanning to take longer than usual."),
       .set      = dvb_network_class_scanfile_set,
       .get      = dvb_network_class_scanfile_get,
       .list     = dvb_network_dvbs_class_scanfile_list,
@@ -251,6 +260,8 @@ const idclass_t dvb_network_dvbs_class =
       .type     = PT_STR,
       .id       = "orbital_pos",
       .name     = N_("Orbital position"),
+      .desc     = N_("Select the orbital position of the satellite "
+                     "your dish is pointing at."),
       .set      = dvb_network_class_orbital_pos_set,
       .get      = dvb_network_class_orbital_pos_get,
       .list     = dvb_network_class_orbital_pos_list,
@@ -269,6 +280,9 @@ const idclass_t dvb_network_atsc_class =
       .type     = PT_STR,
       .id       = "scanfile",
       .name     = N_("Pre-defined muxes"),
+      .desc     = N_("Use a pre-defined list of ATSC muxes. "
+                     "Note: these lists can sometimes be outdated and "
+                     "may cause scanning to take longer than usual."),
       .set      = dvb_network_class_scanfile_set,
       .get      = dvb_network_class_scanfile_get,
       .list     = dvb_network_atsc_class_scanfile_list,
index 6b848f50aeec8c141173e47f0e327e42ee232c96..ba40980bfb2c90a80dc109d72e5455e54ae6d085 100644 (file)
@@ -92,6 +92,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_STR,
       .id       = "network",
       .name     = N_("Network"),
+      .desc     = N_("The network the service is on."),
       .opts     = PO_RDONLY | PO_NOSAVE,
       .get      = mpegts_service_class_get_network,
     },
@@ -99,6 +100,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_STR,
       .id       = "multiplex",
       .name     = N_("Mux"),
+      .desc     = N_("The mux the service is on."),
       .opts     = PO_RDONLY | PO_NOSAVE,
       .get      = mpegts_service_class_get_mux,
     },
@@ -106,6 +108,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_STR,
       .id       = "multiplex_uuid",
       .name     = N_("Mux UUID"),
+      .desc     = N_("The mux's universally unique identifier."),
       .opts     = PO_RDONLY | PO_NOSAVE | PO_HIDDEN | PO_EXPERT,
       .get      = mpegts_service_class_get_mux_uuid,
     },
@@ -113,6 +116,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_U16,
       .id       = "sid",
       .name     = N_("Service ID"),
+      .desc     = N_("The service ID as set by the provider."),
       .opts     = PO_RDONLY | PO_ADVANCED,
       .off      = offsetof(mpegts_service_t, s_dvb_service_id),
     },
@@ -120,6 +124,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_U16,
       .id       = "lcn",
       .name     = N_("Local channel number"),
+      .desc     = N_("The service's channel number as set by the provider."),
       .opts     = PO_RDONLY | PO_ADVANCED,
       .off      = offsetof(mpegts_service_t, s_dvb_channel_num),
     },
@@ -127,6 +132,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_U16,
       .id       = "lcn_minor",
       .name     = N_("Local channel minor"),
+      .desc     = N_("The service's channel minor as set by the provider."),
       .opts     = PO_RDONLY | PO_EXPERT,
       .off      = offsetof(mpegts_service_t, s_dvb_channel_minor),
     },
@@ -134,6 +140,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_U16,
       .id       = "lcn2",
       .name     = N_("OpenTV channel number"),
+      .desc     = N_("The OpenTV channel number as set by the provider."),
       .opts     = PO_RDONLY | PO_EXPERT,
       .off      = offsetof(mpegts_service_t, s_dvb_opentv_chnum),
     },
@@ -141,6 +148,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_U16,
       .id       = "srcid",
       .name     = N_("ATSC source ID"),
+      .desc     = N_("The ATSC source ID as set by the provider."),
       .opts     = PO_RDONLY | PO_EXPERT,
       .off      = offsetof(mpegts_service_t, s_atsc_source_id),
     },
@@ -148,6 +156,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_STR,
       .id       = "svcname",
       .name     = N_("Service name"),
+      .desc     = N_("The service name as set by the provider."),
       .opts     = PO_RDONLY,
       .off      = offsetof(mpegts_service_t, s_dvb_svcname),
     },
@@ -155,6 +164,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_STR,
       .id       = "provider",
       .name     = N_("Provider"),
+      .desc     = N_("The provider's name."),
       .opts     = PO_RDONLY | PO_HIDDEN,
       .off      = offsetof(mpegts_service_t, s_dvb_provider),
     },
@@ -162,6 +172,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_STR,
       .id       = "cridauth",
       .name     = N_("CRID authority"),
+      .desc     = N_("Content reference identifier authority."),
       .opts     = PO_RDONLY | PO_HIDDEN | PO_EXPERT,
       .off      = offsetof(mpegts_service_t, s_dvb_cridauth),
     },
@@ -169,6 +180,9 @@ const idclass_t mpegts_service_class =
       .type     = PT_U16,
       .id       = "dvb_servicetype",
       .name     = N_("Service type"),
+      .desc     = N_("The service type flag as defined by the DVB "
+                     "specifications (e.g. 0x02 = radio, 0x11 = MPEG2 "
+                     "HD TV, 0x19 = H.264 HD TV)"),
       .opts     = PO_RDONLY | PO_HIDDEN | PO_EXPERT,
       .off      = offsetof(mpegts_service_t, s_dvb_servicetype),
     },
@@ -176,6 +190,8 @@ const idclass_t mpegts_service_class =
       .type     = PT_BOOL,
       .id       = "dvb_ignore_eit",
       .name     = N_("Ignore EPG (EIT)"),
+      .desc     = N_("Enable or disable ignoring of Event Information "
+                     "Table (EIT) data on this mux."),
       .off      = offsetof(mpegts_service_t, s_dvb_ignore_eit),
       .opts     = PO_EXPERT,
     },
@@ -183,6 +199,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_STR,
       .id       = "charset",
       .name     = N_("Character set"),
+      .desc     = N_("The character encoding for this service (e.g. UTF-8)."),
       .off      = offsetof(mpegts_service_t, s_dvb_charset),
       .list     = dvb_charset_enum,
       .opts     = PO_EXPERT,
@@ -191,6 +208,8 @@ const idclass_t mpegts_service_class =
       .type     = PT_U16,
       .id       = "prefcapid",
       .name     = N_("Preferred CA PID"),
+      .desc     = N_("The Preferred Conditional Access Packet "
+                     "Identifier. Used for decrypting scrambled streams."),
       .off      = offsetof(mpegts_service_t, s_dvb_prefcapid),
       .opts     = PO_EXPERT,
     },
@@ -198,6 +217,9 @@ const idclass_t mpegts_service_class =
       .type     = PT_INT,
       .id       = "prefcapid_lock",
       .name     = N_("Lock preferred CA PID"),
+      .desc     = N_("The locking mechanism selection for The Preferred "
+                     "Conditional Access Packet Identifier. See Help "
+                     "for more information."),
       .off      = offsetof(mpegts_service_t, s_dvb_prefcapid_lock),
       .opts     = PO_EXPERT,
       .list     = mpegts_service_pref_capid_lock_list,
@@ -206,6 +228,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_U16,
       .id       = "force_caid",
       .name     = N_("Force CA ID (e.g. 0x2600)"),
+      .desc     = N_("Force usage of entered CA ID on this service."),
       .off      = offsetof(mpegts_service_t, s_dvb_forcecaid),
       .opts     = PO_EXPERT | PO_HEXA,
     },
@@ -213,6 +236,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_TIME,
       .id       = "created",
       .name     = N_("Created"),
+      .desc     = N_("When the service was first identified and recorded."),
       .off      = offsetof(mpegts_service_t, s_dvb_created),
       .opts     = PO_ADVANCED | PO_RDONLY,
     },
@@ -220,6 +244,7 @@ const idclass_t mpegts_service_class =
       .type     = PT_TIME,
       .id       = "last_seen",
       .name     = N_("Last seen"),
+      .desc     = N_("When the service was last seen during a mux scan."),
       .off      = offsetof(mpegts_service_t, s_dvb_last_seen),
       .opts     = PO_ADVANCED | PO_RDONLY,
     },
index ec8d480b71a50c9bdae55c0194daecbf1f812640..78d775aa8eed262643c8c792f63d4ebbb49cf889 100644 (file)
@@ -587,6 +587,7 @@ const idclass_t satip_server_class = {
       .type   = PT_STR,
       .id     = "satip_uuid",
       .name   = N_("Server UUID"),
+      .desc   = N_("Universally unique identifier. Read only."),
       .off    = offsetof(struct satip_server_conf, satip_uuid),
       .opts   = PO_RDONLY | PO_EXPERT,
       .group  = 1,
@@ -595,6 +596,9 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_rtsp",
       .name   = N_("RTSP port (554 or 9983, 0 = disable)"),
+      .desc   = N_("Real Time Streaming Protocol (RTSP) port the "
+                   "server should listen on (554 or 9983, 0 = "
+                   "disable)."),
       .off    = offsetof(struct satip_server_conf, satip_rtsp),
       .group  = 1,
     },
@@ -602,6 +606,8 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_weight",
       .name   = N_("Subscription weight"),
+      .desc   = N_("The default subscription weight for each "
+                   "subscription."),
       .off    = offsetof(struct satip_server_conf, satip_weight),
       .opts   = PO_ADVANCED,
       .group  = 1,
@@ -610,7 +616,8 @@ const idclass_t satip_server_class = {
       .type   = PT_BOOL,
       .id     = "satip_remote_weight",
       .name   = N_("Accept remote subscription weight"),
-      .desc   = N_("Accept the remote subscription weight (from the SAT>IP client)."),
+      .desc   = N_("Accept the remote subscription weight "
+                   "(from the SAT>IP client)."),
       .off    = offsetof(struct satip_server_conf, satip_allow_remote_weight),
       .opts   = PO_EXPERT,
       .group  = 1,
@@ -619,6 +626,8 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_descramble",
       .name   = N_("Descramble services (limit per mux)"),
+      .desc   = N_("The maximum number of services to decrypt per "
+                   "mux."),
       .off    = offsetof(struct satip_server_conf, satip_descramble),
       .opts   = PO_ADVANCED,
       .group  = 1,
@@ -627,6 +636,9 @@ const idclass_t satip_server_class = {
       .type   = PT_BOOL,
       .id     = "satip_rewrite_pmt",
       .name   = N_("Rewrite PMT"),
+      .desc   = N_("Rewrite Program Association Table (PMT) packets "
+                   "to only include information about the currently "
+                   "streamed service."),
       .off    = offsetof(struct satip_server_conf, satip_rewrite_pmt),
       .opts   = PO_EXPERT,
       .group  = 1,
@@ -635,6 +647,11 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_muxcnf",
       .name   = N_("Mux handling"),
+      .desc   = N_("Select how Tvheadend should handle muxes. "
+                   "Auto = accept the mux if it "
+                   "doesn't already exist. Keep = Always keep the mux"
+                   "regardless of whether it exists or not. Reject = "
+                   "Always reject."),
       .off    = offsetof(struct satip_server_conf, satip_muxcnf),
       .list   = satip_server_class_muxcfg_list,
       .opts   = PO_EXPERT,
@@ -644,6 +661,8 @@ const idclass_t satip_server_class = {
       .type   = PT_STR,
       .id     = "satip_nat_ip",
       .name   = N_("External IP (NAT)"),
+      .desc   = N_("Enter external IP if behind Network address "
+                   "translation (NAT)."),
       .off    = offsetof(struct satip_server_conf, satip_nat_ip),
       .opts   = PO_EXPERT,
       .group  = 1,
@@ -652,6 +671,7 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_dvbs",
       .name   = N_("DVB-S"),
+      .desc   = N_("The number of DVB-S tuners to export."),
       .off    = offsetof(struct satip_server_conf, satip_dvbs),
       .group  = 2,
     },
@@ -659,6 +679,7 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_dvbs2",
       .name   = N_("DVB-S2"),
+      .desc   = N_("The number of DVB-S2 tuners to export."),
       .off    = offsetof(struct satip_server_conf, satip_dvbs2),
       .group  = 2,
     },
@@ -666,6 +687,7 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_dvbt",
       .name   = N_("DVB-T"),
+      .desc   = N_("The number of DVB-T tuners to export."),
       .off    = offsetof(struct satip_server_conf, satip_dvbt),
       .group  = 2,
     },
@@ -673,6 +695,7 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_dvbt2",
       .name   = N_("DVB-T2"),
+      .desc   = N_("The number of DVB-T2 tuners to export."),
       .off    = offsetof(struct satip_server_conf, satip_dvbt2),
       .group  = 2,
     },
@@ -680,6 +703,7 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_dvbc",
       .name   = N_("DVB-C"),
+      .desc   = N_("The number of DVB-C tuners to export."),
       .off    = offsetof(struct satip_server_conf, satip_dvbc),
       .group  = 2,
     },
@@ -687,6 +711,7 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_dvbc2",
       .name   = N_("DVB-C2"),
+      .desc   = N_("The number of DVB-C2 tuners to export."),
       .off    = offsetof(struct satip_server_conf, satip_dvbc2),
       .group  = 2,
     },
@@ -694,6 +719,7 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_atsc",
       .name   = N_("ATSC"),
+      .desc   = N_("The number of ATSC tuners to export."),
       .off    = offsetof(struct satip_server_conf, satip_atsc),
       .group  = 2,
     },
@@ -701,6 +727,7 @@ const idclass_t satip_server_class = {
       .type   = PT_INT,
       .id     = "satip_dvbc2",
       .name   = N_("DVB-Cable/AnnexB"),
+      .desc   = N_("The number of DVB-Cable/AnnexB tuners to export."),
       .off    = offsetof(struct satip_server_conf, satip_dvbcb),
       .group  = 2,
     },