---
-###Example
+### Example
This is an example of a limited user entry.
---
-###Emergency/Backdoor Access
+### Emergency/Backdoor Access
Tvheadend includes functionality that allows you to regain access to
your Tvheadend instance in case of emergency or if you find yourself
---
-###Anonymous Access
+### Anonymous Access
If you would like to allow anonymous access to your Tvheadend server
you may set-up a wildcard account, you can do this by creating a new
---
-###Example
+### Example

---
-###Detaching Channels
+### Detaching Channels
If you're mapping another service to a channel created by a bouquet you
must first detach the channel to prevent unexpected
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Available CA types
+### Available CA types
The following configuration parameters are used, depending on the type
of CA access:
---
-###Connection Status
+### Connection Status
The icon next to each entry within the grid indicates the client's
connection status.
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Connection Status
+### Connection Status
The icon next to each entry within the grid indicates the client's
connection status.
---
-###Modes
+### Modes
#### OSCam net protocol (rev >= 10389)
---
-###Example
+### Example

---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Subsystems
+### Subsystems
The following options can be passed to tvheadend to provide detailed debugging
information while the application is running.
---
-###Example
+### Example
If you wanted to record any programs matching "BBC News" on
BBC One you would enter something like this into the add entry dialog:
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available (tab dependant):
---
-###Entry Overview
+### Entry Overview
The *Details* column gives a quick overview as to the status of each
entry:
---
-###Manual Recording Entry Example
+### Manual Recording Entry Example
This is an example of a one-time recording entry.

-###Adding an Entry Using the EPG
+### Adding an Entry Using the EPG
Using the Electronic Program Guide search functionality, find the
program/event you would like to record. Click on it, then using the broadcast
For full instructions on how to search and record using the EPG take a
look at the [EPG](epg) page.
-###Adding an Entry Using Autorec Rules
+### Adding an Entry Using Autorec Rules
Autorec rules allow you to match events using various options.
---
-###Downloading a Recording
+### Downloading a Recording
Highlight (select) the desired entry, then press the *[Download]*
button on the menu bar.
---
-###Re-recording an Entry/Re-schedule a Recording
+### Re-recording an Entry/Re-schedule a Recording
You can re-schedule an entry by pressing the *[Re-record]* button on the menu bar.
---
-###Example
+### Example
This is an example of a one-time timer-based recording entry.
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Notes
+### Notes
* Only OTA EIT and PSIP (ATSC) grabbers are enabled by default. If
you're missing EPG data, make sure to enable the correct grabber(s)
---
-###Filter Basics
+### Filter Basics
* Each rule is executed in sequence (as displayed in the grid).
* If a rule removes a stream, it will not be available to other rules
---
-###Visual Verification of Filtering
+### Visual Verification of Filtering
For visual verification of filtering, there is the service
info dialog in the [Services](class/mpegts_service) tab.
---
-###Filtering out a Stream
+### Filtering out a Stream

input (first rule). However, if Bulgarian is the only language
available add it back in as a last resort (second rule).
-###Ignoring Unknown Streams
+### Ignoring Unknown Streams
If you'd like to ignore unknown elementary streams, add a rule to the
end of grid with the *ANY* (not defined) comparison(s) and the
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Buttons
+### Buttons
The following buttons are available:
---
-###Buttons
+### Buttons
The following buttons are available:
---
-###Buttons
+### Buttons
The following buttons are available:
---
-###Buttons
+### Buttons
The following buttons are available:
---
-###Force Scanning
+### Force Scanning
Force scanning can take some time. You may continue to use Tvheadend
while a scan is in progress, but doing so will increase the time needed
---
-###IPTV Automatic Network - Don't Probe Services
+### IPTV Automatic Network - Don't Probe Services
Tvheadend will by default probe each playlist entry for service information.
Some service providers do not allow such probing & will deny (or rate
---
-###Mapping Services to Channels
+### Mapping Services to Channels
There are a number of methods to mapping available services,
mapping uses the following dialog.

-####Mapping All
+#### Mapping All
Press the *[Map services]* button and then *[Map all services]*.
then be taken to the [Service Mapper](status_service_mapper) tab which
will begin mapping the selected services to channels.
-####Mapping Selected
+#### Mapping Selected
Click on the services you would like to map as channels,
once you're done selecting press the "Map services" button and
available services - you can increase this by using the paging
selector at the bottom right of the page.
-####Mapping/Removing a Service to/from an Existing Channel
+#### Mapping/Removing a Service to/from an Existing Channel
You can map/remove a service to/from an existing channel by doing the following:
---
-###Service Information
+### Service Information
Clicking the 
information icon will display service details.
---
-###Example
+### Example
This is an example of a password entry.
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Buttons
+### Buttons
The following buttons are available:
---
-###Buttons
+### Buttons
The following buttons are available:
---
-###Buttons
+### Buttons
The following buttons are available:
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###How to Configure Tvheadend as a SAT\>IP Server (Basic Guide)
+### How to Configure Tvheadend as a SAT\>IP Server (Basic Guide)
**1. Define the RTSP Port**
now detected Tvheadend as a SAT\>IP server. If not, restart or force
it to perform a service discovery.
-###Custom M3U Playlist
+### Custom M3U Playlist
-You may put your custom m3u playlist which is advertised to the clients
-to your tvheadend's configuration directory - filename *satip.m3u*.
+You may put your custom m3u playlist which is advertised to clients
+in your tvheadend's configuration directory - filename *satip.m3u*.
---
---
-###Buttons
+### Buttons
The following functions are available:
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
-##Before You Begin
+## Before You Begin
There are some basic concepts that will make life much easier if you
understand them from the outset.
-###Hardware/Software Fundamentals
+### Hardware/Software Fundamentals
* A **tuner** is the hardware (chipset) needed to interpret a digital
television signal and extract from it the programme stream. The tuner hardware
than you'd imagine... if you find yourself in trouble, this is the first
thing to check along with kernel support for your hardware.
-###Application/Tvheadend Fundamentals
+### Application/Tvheadend Fundamentals
The Tvheadend software then sets up a series of configuration elements, and
the way in which these interact determines how a TV signal ends up in front
and your client software think in terms of: _"I'd like to watch BBC One
now, please"_.
-###Why The Complexity?
+### Why The Complexity?
Simply, because 'BBC One' might exist in many different places... it
might have regional variations on multiple frequencies (so different services
-##Command-line Options
+## Command-line Options
Usage: `tvheadend [OPTIONS]`
-###Generic options
+### Generic options
```
-h, --help Show this page
-v, --version Show version information
```
-###Service configuration
+### Service configuration
```
-c, --config Alternate configuration path
-B, --nobackup Don't backup configuration tree at upgrade
--nosatip Disable SAT>IP client
--satip_xml URL with the SAT>IP server XML location
```
-###Server connectivity
+### Server connectivity
```
-6, --ipv6 Listen on IPv6
-b, --bindaddr Specify bind address
--useragent Specify User-Agent header for the http client
--xspf Use XSPF playlist instead of M3U
```
-###Debug options
+### Debug options
```
-d, --stderr Enable debug on stderr
-n, --nostderr Disable debug on stderr
--nobat Disable DVB bouquets
-j, --join Subscribe to a service permanently
```
-###Testing options
+### Testing options
```
--tsfile_tuners Number of tsfile tuners
--tsfile tsfile input (mux file)
-##Configure Tvheadend
+## Configure Tvheadend
This section gives a high-level overview of the steps needed to get Tvheadend
up and running. For more detailed information, please consult the rest of
You can also consult the in-application help text, which mirrors this guide
to a very great extent.
-###1. Ensure Tuners are Available for Use
+### 1. Ensure Tuners are Available for Use
**Tvheadend web interface: _Configuration -> DVB Inputs -> TV Adapters_**
If anything is obviously wrong at this point, you probably have a
driver/firmware error which you'll need to resolve before going any further.
-###2. Set up Relevant Network(s)
+### 2. Set up Relevant Network(s)
**Tvheadend web interface: _Configuration -> DVB Inputs -> Networks_**
* Network discovery (enabled by default) increases the likelihood of
receiving all available muxes and services.
-###3. Associate the Network with the Respective Tuner(s)
+### 3. Associate the Network with the Respective Tuner(s)
**Tvheadend web interface: _Configuration -> DVB Inputs -> TV Adapters_**
appear on multiple tuners (many-to-one), and one tuner can have multiple
networks.
-###4. If Necessary, Manually Add Muxes
+### 4. If Necessary, Manually Add Muxes
**Tvheadend web interface: _Configuration -> DVB Inputs -> Muxes_**
You can also use [dvbscan](http://www.linuxtv.org/wiki/index.php/Dvbscan) to
force a scan and effectively ask your tuner what it can see.
-###5. Scan for Services
+### 5. Scan for Services
**Tvheadend web interface: _Configuration -> DVB Inputs -> Services_**
(For the technically-minded, these unique identifiers - the elementary streams - are referred to as 'packet identifiers' or 'PIDs').
-###6. Map Services to Channels
+### 6. Map Services to Channels
**Tvheadend web interface: _Configuration -> DVB Inputs -> Services_**
See [Services](class/mpegts_service) for a detailed look into service mapping.
-####6.1. Bouquets
+#### 6.1. Bouquets
**Tvheadend web interface: _Configuration -> Channel / EPG -> Bouquets_**
If you would like to use bouquets see [Bouquets](class/bouquet).
-###7. Watch TV
+### 7. Watch TV
That's it - you're done. You should now have a working basic Tvheadend
installation with channels mapped and ready for use!
-##About
+## About
This documentation forms part of the Tvheadend project.
television explodes, your house burns down or your kittens end up in
tears, that's nothing to do with us.
-(c) 2006 - 2016 Tvheadend Foundation CIC
+(c) 2006 - 2017 Tvheadend Foundation CIC
-##Licensing
+## Licensing
The entire project is currently licensed using [GPLv3](http://www.gnu.org/licenses/gpl-3.0.txt).
-##Further Information
+## Further Information
For more information regarding the project, licensing and contributions, please see:
-##Updating the Documentation
+## Updating the Documentation
The documentation is written in markdown, and then converted for
direct inclusion to tvheadend binary. The markdown processor in
fetches the markdown files using the build-in web server and use
them as source for mkdocs.
-###Instructions For Built-in Help
+### Instructions For Built-in Help
Change markdown files in `docs/markdown`, `docs/markdown/inc`, `docs/class`, `docs/wizard`, etc.
Images are placed in `src/webui/static/img/doc/`.
-##Electronic Program Guide
+## Electronic Program Guide
Tvheadend has a built-in Electronic Program Guide. The EPG is an
in-memory database populated with all the information about events
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
-####Filtering (or searching)
+#### Filtering (or searching)
In the EPG top tool bar you can access five input fields. These are used
to filter/search for events. The form uses implicit AND between the
filter. If you want to clear all filters, just press the *[Reset All]*
button.
-####Buttons
+#### Buttons
The following buttons are also available:
---
-###Grid Items
+### Grid Items
The main grid items have the following functions:
---
-###Event Details and Recording
+### Event Details and Recording
If you click on a single event, a popup will display detailed
information about the event. It also allows you to schedule the event
---
-###Autorecordings
+### Autorecordings
Should you wish to record all events matching a specific query (to
record your favourite show every week, for example) you can press the
---
-###Watch TV
+### Watch TV
If you want to watch live TV in the web UI, the *[Watch TV]* button will
pop up a HTML5 video player, where you can select the channel to watch and a
the stream to a format that is supported by your browser, as browsers only
support certain formats and codecs.
-####Supported formats (containers)
+#### Supported formats (containers)
Browser | MPEG-TS | MPEG-PS | Matroska | WebM
------- | :-----: | :-----: | :------: | :--:
Google Chrome |  |  |  | 
Mozilla Firefox |  |  | | 
-####Supported video codecs
+#### Supported video codecs
Browser | MPEG2 Video | H.264 | VP8
------- | :---------: | :---: | :-:
Google Chrome |  |  | 
Mozilla Firefox |  | | 
-####Supported audio codecs
+#### Supported audio codecs
Browser | MPEG2 Audio | Dolby Digital (AC3) | AAC | Vorbis
------- | :---------: | :-----------------: | :-: | :----:
Note: The above path only applies to Debian/Ubuntu systems others may differ.
-###Q: Why can't I see my tuners in Tvheadend's interface?
+### Q: Why can't I see my tuners in Tvheadend's interface?
This is normally because they're not installed properly. Check syslog/dmesg (e.g. `dmesg | grep dvb`) and see that you have startup
messages that indicate whether or not the tuners have initialized properly. Similarly, check `/dev/dvb` to
The other major cause of this issue is when you're running Tvheadend as a user who doesn't have sufficient
access to the tuners, such as not being a member of the *video* group.
-###Q: Access Tvheadend through HTTP proxy
+### Q: Access Tvheadend through HTTP proxy
Use '--http_root' directive to specify the alternative http webroot (initial
path prefix). The proxy server *MUST* pass this webroot path in the HTTP
-##Features of Tvheadend
+## Features of Tvheadend
-####SDTV and HDTV support
+#### SDTV and HDTV support
* H.265 (HEVC), H.264 (MPEG-4 AVC) and MPEG2 video supported.
* AC-3, AAC and MP2 audio supported.
* DVB subtitles supported.
* Teletext subtitles supported.
-####Input Sources
+#### Input Sources
* Satellite signals via DVB-S and DVB-S2
* Terrestrial/Over-the-Air signals via DVB-T, DVB-T2 and ATSC
* Cable signals via DVB-C
channels irrespective of the underlying carrier (for channels that broadcast
on multiple sources).
-####Output Targets
+#### Output Targets
* Local or remote disk, via the built-in digital video recorder.
* HTSP (Home TV Streaming Protocol).
* HTTP streaming.
* SAT>IP server (including on-the-fly descrambling).
-####Transcoding Support
+#### Transcoding Support
* Subject to your system's capabilities, support for on-the-fly transcoding
for both live and recorded streams in various formats.
-####Digital Video Recorder
+#### Digital Video Recorder
* Built in video recorder stores recorded programs as Transport Stream (.ts) or Matroska (.mkv) files.
* Multiple simultaneous recordings are supported.
* All original streams (multiple audio tracks, etc) are recorded.
* Create rule sets manually or based on EPG queries.
* Multiple DVR profiles that support different target directories, post-processing options, filtering options, etc.
-####Electronic Program Guide
+#### Electronic Program Guide
* Rich EPG support, with data from DVB/OTA, XMLTV (scheduled and socket).
* Searchable and filterable from the web user interface.
* Results can be scheduled for recording with a single click.
-####Rich Browser-Driven Interface
+#### Rich Browser-Driven Interface
* The entire application is loaded into the browser.
* Based on extJS, all pages are dynamic and self-refreshing.
* All sorting/filtering is then done in C by the main application for speed.
-####Easy to Configure and Administer
+#### Easy to Configure and Administer
* All setup and configuration is done from the built in web user interface.
* All settings are stored in human-readable text files.
* Initial setup can be done by choosing one of the pre-defined [linuxtv](http://git.linuxtv.org/cgit.cgi/dtv-scan-tables.git) networks
* Idle scanning for automatic detection of muxes and services.
* Support for broadcaster (primarily DVB-S) bouquets for easy channel mapping.
-####Multi-User Support
+#### Multi-User Support
* Access to system features (streaming, administration, configurations) can
be configured based on username/password and/or IP address.
-####Software-Based CSA Descrambling
+#### Software-Based CSA Descrambling
* Requires a card server (newcamd and capmt protocol is supported).
-####Fully-Integrated with Mainstream Media Players
+#### Fully-Integrated with Mainstream Media Players
* Movian and Kodi are the main targets.
* All channel data, channel groups/tags, EPG and TV streaming is carried over a single TCP connection.
-####Mobile/Remote Client Support
+#### Mobile/Remote Client Support
* As well as the web interface, which is accessible through VPN if required,
third-party clients are available for both
[Android](https://play.google.com/store/apps/details?id=org.tvheadend.tvhclient&hl=en_GB)
and [iOS](https://itunes.apple.com/gb/app/tvhclient/id638900112?mt=8) (other
clients may also be available).
-####Internationalisation
+#### Internationalisation
* All text is encoded in UTF-8 to provide full international support.
* All major character encodings in DVB are supported (e.g. for localised EPG character sets).
* [Web interface internationalization](https://tvheadend.org/projects/tvheadend/wiki/Internationalization)
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
-###Playing a Stream/File
+### Playing a Stream/File
You can play a stream/file by clicking the play icon .
This will automatically launch an appropriate player, otherwise you will
-#Tvheadend 4.2 User Guide
+# Tvheadend 4.2 User Guide

-#Purpose
+# Purpose
This document is intended to give you a high-level overview of how to set
up Tvheadend for the first time. It does not aim to provide a complete description
-##Install Your Tuners
+## Install Your Tuners
This section will give you some basic ideas on how to get your tuner working
with your operating system. However, it's clearly way beyond the scope of
There is a discussion about supported hardware on [the Tvheadend
forums](https://tvheadend.org/boards/5/topics/5102).
-###1. Install the Tuner Hardware
+### 1. Install the Tuner Hardware
This is obviously a core requirement that's outside of the scope of this guide.
setup instruction (e.g. for SAT>IP, which are effectively small, standalone
computers).
-####A Note on USB Tuners
+#### A Note on USB Tuners
USB tuners are cheap, work well and are frequently well-matched to physically-smaller
builds (e.g. HTPCs) which simply don't have the internal slots. However, please
and/or reports errors in a multi-tuner configuration, especially on
high-bandwidth (e.g. HD) streams.
-###2. Install Firmware and/or Drivers
+### 2. Install Firmware and/or Drivers
Similar to the above, Tvheadend can do nothing if your tuners aren't working
properly. A good place to check how to set up your tuners is the
-##Install Tvheadend
+## Install Tvheadend
This section tells you how to get hold of the software in the first place,
and how to get it onto your system.
-##Markdown/Formatting Crib Sheet
+## Markdown/Formatting Crib Sheet
Some notable items about how formatting is used on this particular site.
pages that get carried over into the web help. The simpler the formatting,
the cleaner the conversion, the less tidying up there is afterwards.
-###References
+### References
* Markdown basics: [GitHub mastering markdown](https://guides.github.com/features/mastering-markdown)
-###Including Documentation/Items
+### Including Documentation/Items
You can include documentation/items in other markdown
files by using the tvh_class_doc, tvh_include and tvh_class_items tags.
<tvh_include>inc/common_button_table_end</tvh_include>
```
-###Paragraphs Versus Definition Lists
+### Paragraphs Versus Definition Lists
Watch this one - indentation is key.
-##Overview of Tvheadend
+## Overview of Tvheadend
-###Welcome to Tvheadend!
+### Welcome to Tvheadend!
Tvheadend is a lightweight, easily-configured, general-purpose TV/video
streaming server and recorder (PVR/DVR) for GNU/Linux, FreeBSD and Android.
-##Basic Requirements
+## Basic Requirements
-###Physical Architecture
+### Physical Architecture
It's perfectly possible to install and run Tvheadend as a single-seat installation,
with the software running on the same system as any client software (e.g. Kodi),
your Tvheadend installation has to live where you can actually connect your
tuners.
-###System Requirements
+### System Requirements
Wherever you install it, Tvheadend primarily runs on **Linux** - pre-built
binaries are available for most Debian-based distributions (Debian itself, Ubuntu,
synchronised from the broadcast signal if you're not in a position to use
`ntp` or similar.
-###How Lightweight?
+### How Lightweight?
How about light enough to run on a travel router? Take a look at this
[example](https://tvheadend.org/boards/4/topics/16579) from one of our users...
-##Status - Connections
+## Status - Connections
This tab shows information about all active connections.
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Grid Items
+### Grid Items
The main grid items have the following functions:
-##Service Mapper
+## Service Mapper
This tab shows information about current service mapping activity.
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Items
+### Items
**Mapped**
: Number of services mapped.
-##Status - Stream
+## Status - Stream
This tab shows information about all currently-open streams.
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-###Grid Items
+### Items
The main grid items have the following functions:
-##Status - Subscriptions
+## Status - Subscriptions
This tab shows information about all active subscriptions to Tvheadend.
---
-###Menu Bar/Buttons
+### Menu Bar/Buttons
The following functions are available:
---
-####Grid Items
+#### Items
The main grid items have the following functions:
-####Table of Contents
+#### Table of Contents
[Introduction](index)
* [Overview](overview)
-##Things To Do on This Guide...
+## Things To Do on This Guide...
-####Work-in-progress notes
+#### Work-in-progress notes
These are not part of the final product, obviously!
They're just some of the areas I'm aware of that we need to close off before release
-##DVB Inputs - TV Adapters
+## DVB Inputs - TV Adapters
The adapters and tuners are listed and edited in a tree.
---
-###Buttons
+### Buttons
The following functions are available:
---
-###Device Tree
+### Device Tree
The device tree lists the available frontends, LNB configuration and
so on related to your device(s) in sections. Clicking on these sections
---
-###Device Configuration
+### Device Configuration
Click on an item to display more information.
-####Satellite (DVB-S/ISDB-S)
+#### Satellite (DVB-S/ISDB-S)
* Frontend
- [Master](class/linuxdvb_frontend_dvbs)
- [Rotor (GOTOX)](class/linuxdvb_rotor_gotox)
- [Rotor (USALS)](class/linuxdvb_rotor_usals)
-####Terrestrial (DVB-T/ATSC-T/ISDB-T)
+#### Terrestrial (DVB-T/ATSC-T/ISDB-T)
* Frontend
- [DVB-T/DVB-T2](class/linuxdvb_frontend_dvbt)
- [ATSC-T](class/linuxdvb_frontend_atsc_t)
- [ISDB-T](class/linuxdvb_frontend_isdb_t)
-####Cable (DVB-C/ATSC-C/ISDB-C)
+#### Cable (DVB-C/ATSC-C/ISDB-C)
* Frontend
- [DVB-C](class/linuxdvb_frontend_dvbc)
- [ATSC-C](class/linuxdvb_frontend_atsc_c)
- [ISDB-C](class/linuxdvb_frontend_isdb_c)
-####SAT>IP (DVB-T/ATSC-T/ATSC-C/DVB-S)
+#### SAT>IP (DVB-T/ATSC-T/ATSC-C/DVB-S)
* [Client](class/satip_client)
-##About
+## About
This page displays general information about the current Tvheadend
version.
-##General Overview of Web Interface
+## General Overview of Web Interface
Tvheadend is operated primarily through a tabbed web interface.
There are some basic navigation concepts that will help you get around and
make the best of it.
-###Page Structure
+### Page Structure
The interface is made up of nested tabs, so similar functions are grouped
together (e.g. all configuration items at the top level, then all configuration
such as FEC rolloff or mux URL are then only in the dialogs for networks
that need these values.
-####View level
+#### View level
The *View level* drop-down/button - next to the Help button,
displays/hides the more advanced features. By default it is set to Basic.
Depending on configuration, the view-level drop-down is not always visible.
-###Displaying and Manipulating Columns
+### Displaying and Manipulating Columns
* Not all columns are necessarily visible. If you hover your mouse over a
column heading, you'll see a down arrow - click here, and a drop-down menu
* A cookie is used to remember your column/filtering preferences. Clearing
your cookies will reset the interface to default.
-###Adding, Editing and More
+### Adding, Editing and More
* Rows (in the grid) are multi-selectable, so you can carry out certain actions on
more than one entry at the same time. So, for example, you can select
see a dialog, or in some cases (where a list/split panel is used), a
parameter panel. You can now fill in the desired/required fields, the
entry can then be saved (*Create/Save* button), applied (*Apply* button),
- or abandoned (*Cancel button).
+ or abandoned (*Cancel* button).
* To edit a single entry in the grid, double click on the desired field/cell.
It should now be editable. Once you've made your changes you can then
- save (*Save* button), apply (*Apply* button), or abandon (*Cancel* button)
- them.
+ save (*Save* button), apply (*Apply* button), or abandon (*Cancel* button).
After a cell is changed, a small red flag or triangle will appear in
the top-left corner to indicate that it has been changed.
{
.type = PT_U32,
.id = "services_seen",
- .name = N_("# Services seen"),
+ .name = N_("Services seen"),
.desc = N_("Total number of services seen."),
.off = offsetof(bouquet_t, bq_services_seen),
.opts = PO_RDONLY,
{
.type = PT_U32,
.id = "services_count",
- .name = N_("# Services"),
+ .name = N_("Services"),
.desc = N_("Total number of services."),
.get = bouquet_class_services_count_get,
.opts = PO_RDONLY | PO_NOSAVE,
.id = "server_name",
.name = N_("Tvheadend server name"),
.desc = N_("Set the name of the server so you can distinguish "
- "multiple instances apart on your LAN."),
+ "multiple instances apart."),
.off = offsetof(config_t, server_name),
.group = 1
},
.type = PT_BOOL,
.id = "uilevel_nochange",
.name = N_("Persistent user interface level"),
- .desc = N_("Prevents users from overriding the above user "
- "interface level setting and removes the view level "
+ .desc = N_("Prevent users from overriding the user "
+ "interface level setting, and remove the view level "
"drop-dowm from the interface."),
.off = offsetof(config_t, uilevel_nochange),
.opts = PO_ADVANCED,
.type = PT_STR,
.id = "theme_ui",
.name = N_("Theme"),
- .desc = N_("The default web interface to use if the user's "
+ .desc = N_("The default web interface to use if the user "
" theme isn't set in the Access Entries tab."),
.doc = prop_doc_themes,
.list = theme_get_ui_list,
.name = N_("DVB scan files path"),
.desc = N_("Select the path to use for DVB scan configuration "
"files. Typically dvb-apps stores these in "
- "/usr/share/dvb/. Leave blank to use Tvheadend's "
+ "/usr/share/dvb/. Leave blank to use the "
"internal file set."),
.off = offsetof(config_t, muxconf_path),
.notify = config_muxconfpath_notify,
.type = PT_STR,
.id = "preproc",
.name = N_("Pre-processor command"),
- .desc = N_("Script/program to be run when a recording starts "
+ .desc = N_("Script/program to run when a recording starts "
"(service is subscribed but no filename available)."),
.doc = prop_doc_preprocessor,
.off = offsetof(dvr_config_t, dvr_preproc),
.type = PT_STR,
.id = "postproc",
.name = N_("Post-processor command"),
- .desc = N_("Script/program to be run when a recording completes."),
+ .desc = N_("Script/program to run when a recording completes."),
.doc = prop_doc_postprocessor,
.off = offsetof(dvr_config_t, dvr_postproc),
.opts = PO_ADVANCED,
.type = PT_STR,
.id = "postremove",
.name = N_("Post-remove command"),
- .desc = N_("Script/program to be run when a recording gets removed."),
+ .desc = N_("Script/program to run when a recording gets removed."),
.doc = prop_doc_postremove,
.off = offsetof(dvr_config_t, dvr_postremove),
.opts = PO_EXPERT,
.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 "
+ "Note, this may cause unwanted changes to "
"already defined channel names."),
.off = offsetof(epggrab_conf_t, channel_rename),
.opts = PO_ADVANCED,
.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 "
+ "Note, this may cause unwanted changes to "
"already defined channel numbers."),
.off = offsetof(epggrab_conf_t, channel_renumber),
.opts = PO_ADVANCED,
.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 "
+ "Note, this may cause unwanted changes to "
"already defined channel icons."),
.off = offsetof(epggrab_conf_t, channel_reicon),
.opts = PO_ADVANCED,
.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 "
+ "The default cron triggers the over-the-air "
"grabber daily at 02:04 and 14:04. See Help on how "
"to define your own."),
.doc = prop_doc_cron,
{
.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."),
+ .name = N_("EPG scan time-out in seconds (30-7200)"),
+ .desc = N_("The maximum amount of time a grabber is allowed "
+ "scan a mux for data (in seconds)."),
.off = offsetof(epggrab_conf_t, ota_timeout),
.opts = PO_EXPERT,
.group = 3,
.type = PT_INT,
.id = "priority",
.name = N_("Priority"),
- .desc = N_("Grabber priority. This option let's you pick which "
+ .desc = N_("Grabber priority. This option lets you pick which "
"EPG grabber's data get used first. Priority is "
"given to the grabber with the highest value set here. "
"See Help for more info."),
.type = PT_BOOL,
.id = "enabled",
.name = N_("Enabled"),
- .desc = N_("Select whether or not to enable caching. Note: "
+ .desc = N_("Select whether or not to enable caching. Note, "
"even with this disabled you can still specify "
"local (file://) icons and these will be served by "
"the built-in webserver."),
.type = PT_INT,
.id = "scan_result",
.name = N_("Scan result"),
- .desc = N_("The outcome of the last scan performed on this mux."),
+ .desc = N_("The outcome of the last scan performed."),
.off = offsetof(mpegts_mux_t, mm_scan_result),
.opts = PO_RDONLY | PO_SORTKEY | PO_DOC_NLIST,
.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."),
+ .desc = N_("The character set to use/used. You should "
+ "not have to change this unless channel names "
+ "and EPG data appear garbled."),
.off = offsetof(mpegts_mux_t, mm_charset),
.list = dvb_charset_enum,
.opts = PO_ADVANCED | PO_DOC_NLIST,
{
.type = PT_INT,
.id = "num_svc",
- .name = N_("# Services"),
- .desc = N_("The total number of services found on this mux."),
+ .name = N_("Services"),
+ .desc = N_("The total number of services found."),
.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 the mux that are "
- "mapped to channels."),
+ .name = N_("Mapped"),
+ .desc = N_("The number of services currently 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 the mux."),
+ .desc = N_("Use AC-3 detection."),
.off = offsetof(mpegts_mux_t, mm_pmt_ac3),
.def.i = MM_AC3_STANDARD,
.list = mpegts_mux_ac3_list,
.type = PT_BOOL,
.id = "enabled",
.name = N_("Enabled"),
- .desc = N_("Enable/disable the profile."),
+ .desc = N_("Enable/disable profile."),
.off = offsetof(profile_t, pro_enabled),
.get_opts = profile_class_enabled_opts,
.group = 1,
.type = PT_BOOL,
.id = "default",
.name = N_("Default"),
- .desc = N_("Set profile as default."),
+ .desc = N_("Set as default profile."),
.set = profile_class_default_set,
.get = profile_class_default_get,
.opts = PO_EXPERT,
.id = "priority",
.name = N_("Default priority"),
.desc = N_("If no specific priority was requested. This "
- "gives certain users a higher priority by "
- "assigning a streaming profile with a higher "
- "priority."),
+ "gives certain users a higher priority by "
+ "assigning a streaming profile with a higher "
+ "priority."),
.list = profile_class_priority_list,
.off = offsetof(profile_t, pro_prio),
.opts = PO_SORTKEY | PO_ADVANCED,
.type = PT_INT,
.id = "fpriority",
.name = N_("Force priority"),
- .desc = N_("Force the stream profile to use this priority."),
+ .desc = N_("Force profile to use this priority."),
.off = offsetof(profile_t, pro_fprio),
.opts = PO_EXPERT,
.group = 1
{
.type = PT_BOOL,
.id = "contaccess",
- .name = N_("Continue even if descrambling fails"),
+ .name = N_("Continue if descrambling fails"),
.desc = N_("Don't abort streaming when an encrypted stream "
"can't be decrypted by a CA client that normally "
"should be able to decrypt the stream."),
.type = PT_STR,
.id = "src_vcodec",
.name = N_("Source video codec"),
- .desc = N_("Transcode video only if source video codec mattch. "
- "\"Any\" will ingnore source vcodec check and always do transcode. "
- "Separate codec names with coma. "
- "If no codec match found - transcode with \"copy\" codec, "
- "if match found - transcode with parameters in this profile."),
+ .desc = N_("Transcode video only if source video codec matches. "
+ "\"Any\" ignores source video codec checking and "
+ "always transcodes. If no codec match is found, "
+ "transcoding is done using the \"copy\" codec. "
+ "if a match is found, transcode with the "
+ "parameters in this profile. Separate codec names "
+ "with comma."),
.off = offsetof(profile_transcode_t, pro_src_vcodec),
.def.i = SCT_UNKNOWN,
.list = profile_class_src_vcodec_list,
.id = "vbitrate",
.name = N_("Video bitrate (kb/s) (0=auto)"),
.desc = N_("Bitrate to use for the transcode. See Help for "
- "detailed information."),
+ "details."),
.off = offsetof(profile_transcode_t, pro_vbitrate),
.opts = PO_ADVANCED,
.def.u32 = 0,
.type = PT_U32,
.id = "abitrate",
.name = N_("Audio bitrate (kb/s) (0=auto)"),
- .desc = N_("Audio birate to use for transcoding."),
+ .desc = N_("Audio bitrate to use for transcoding."),
.off = offsetof(profile_transcode_t, pro_abitrate),
.opts = PO_ADVANCED,
.def.u32 = 0,
.type = PT_BOOL,
.id = "satip_rewrite_pmt",
.name = N_("Rewrite PMT"),
- .desc = N_("Rewrite Program Association Table (PMT) packets "
+ .desc = N_("Rewrite Program Map Table (PMT) packets "
"to only include information about the currently "
"streamed service."),
.off = offsetof(struct satip_server_conf, satip_rewrite_pmt),
.type = PT_BOOL,
.id = "check_availability",
.name = N_("Check availability"),
- .desc = N_("Check service availability (add live services "
- "only)."),
+ .desc = N_("Check services for availability. If enabled, "
+ "services that are not currently broadcasting (or "
+ "can't be decrypted) will be ignored. Leave disabled "
+ "if you want Tvheadend to also map offline services."),
.off = offsetof(service_mapper_t, d.check_availability),
.opts = PO_ADVANCED
},
.type = PT_BOOL,
.id = "merge_same_name",
.name = N_("Merge same name"),
- .desc = N_("Merge services with the same name to one channel."),
+ .desc = N_("Merge services with the same name into one channel."),
.off = offsetof(service_mapper_t, d.merge_same_name),
},
{
.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 "
- "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 "
.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 "
+ "buffers. When free RAM buffers are available they "
"are used for timeshift data in preference to using "
"storage."),
.set = timeshift_conf_class_ram_size_set,
.name = N_("RAM only"),
.desc = N_("Keep timeshift buffers in RAM only. "
"With this option enabled, the amount of rewind time "
- "is limited by how much RAM Tvheadend is allowed."),
+ "is limited by how much RAM TVHeadend is allowed."),
.off = offsetof(timeshift_conf_t, ram_only),
.opts = PO_ADVANCED,
},
{
.type = PT_STR,
.id = "path",
- .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 you want to save the debug log to."),
+ .name = N_("Filename (including path)"),
+ .desc = N_("Enter the filename (including path) where "
+ "Tvheadend should write the log."),
.get = tvhlog_class_path_get,
.set = tvhlog_class_path_set,
.group = 1,