.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,
},
.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,
},
.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,
},
.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,
},
.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,
.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,
.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,
.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,
.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,
.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,
.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,
.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,
.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),
},
{}
.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,
.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,
.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,
.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,
.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),
},
{}
.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,
.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,
.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,
.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,
.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),
},
{}
.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,
.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,
.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,
.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,
.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),
},
{}
.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,
.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,
.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,
.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,
.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,
.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),
},
{}
.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,
.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,
.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,
.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,
.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),
},
{}
.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,
.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,
.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,
},
.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,
},
.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,
},
.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,
},
.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),
},
.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),
},
.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),
},
.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,
.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,
.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,
.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,
},
.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,
},
.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,
.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
},
.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,
},
.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,
},
.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),
},
{
.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,
},
.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,
},
.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,
.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,
.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,
.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
.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
.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
.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,
},
.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,
.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,
.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,
.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,
.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,
.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,
},
.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,
},
.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,
},
.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),
},
.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),
},
.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),
},
.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),
},
.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),
},
.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),
},
.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),
},
.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),
},
.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),
},
.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,
},
.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,
.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,
},
.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,
.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,
},
.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,
},
.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,
},
.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,
.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,
},
.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,
.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,
.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,
.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,
.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,
.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,
.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,
},
.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,
},
.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,
},
.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,
},
.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,
},
.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,
},
.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,
},
.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,
},