Tvheadend technical overview

This page is very much work-in-progress.



A channel is what's typically perceived as a TV-channel by ordinary people. A channel will receive data from one or many Transports. If Tvheadend has multiple DVB adapters, connected to the same or different networks, where the same channel exists, multiple transports will map to the same channel.

see: channel.[ch]

Service / Transport

A Service / Transport is a specific source for a channel.

The term service and transport is used interchangeably in Tvheadend. ie. It's the same thing. This is something that should be fixed in the future.

see: transport.[ch]


A Multiplex is analogous to a DVB MPEG Transport Stream. For a given Adapter, only one Multiplex can be received (i.e tuned) at the same time. A DVB Multiplex carries a number of services.
However, all services/transports on that particular multiplex can be decoded and fed further into Tvheadend.

see: dvb/dvb_multiplex.[ch]


Represents a piece of hardware.

see: dvb/dvb_adapter.[ch]


This is what temporary binds a transport to a channel when someone wants to receive data from it.

All subscriptions are sorted according to weight. Subscriptions with higher weight will outrank lower weighted subscriptions.

If two subscriptions competes for the same resource (typically a DVB-adapter in order to tune a specific multiplex) the one with higher with will win.
Of course, a lower weighted subscription can "sneak" on a multiplex as long as the higher weighted subscription keeps it tuned.

see: subscriptions.[ch]

Locking and concurrency


Video recording


Supported codecs

  • MPEG2 Video
  • MPEG2 Audio
  • H.264
  • AC/3

Updated by Adam Sutton over 10 years ago · 11 revisions