Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dvbipitools

Tools for handling DVB-IPI streams.

They kept piling up in private VCS over many years, so I finally decided to polish, consolidate, and publish them. GitHub is not the primary development repository, but releases are published here and pull requests are welcome.

AI helped with the README files, -h boilerplate, and test scaffolding they never had before. I did not let it mess up the hard parts.

Fantastic tools and where to deploy them

Tool Headend Edge Client Purpose
dipitvhead ✔️ Provide IPTV multicasts
dipiradiohead ✔️ Provide radio multicasts
dipifccret ✔️ ✔️ RAMS-based FCC (Annex I) and RET (Annex F) server
dipisds ✔️ ✔️ DVBSTP/SD&S service discovery (announce & listen)
dipiepg ✔️ ✔️ DVBSTP/TVA EPG (publisher & reader)
dipixmltv ✔️ ✔️ XMLTV to/from DVB-IPI TVA XML converter
dipibim ✔️ TVA XML BiM encoder/decoder (to debug dipiepg)
dipirec ✔️ DVB-IPI Multicast to file/stdout recorder
dipiscan ✔️ Scan for multicast TV/radio services (w/o SD&S)

Build

Your choice. Go for the classics: ./configure --release && make or use CMake:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

Options

CMake configure
-DCMAKE_BUILD_TYPE=Debug|Release --debug|--release Build type
-DDVBIPITOOLS_STATIC=ON --static Static linking
-DDIPIRADIOHEAD_TLS=OFF / -DDIPITVHEAD_TLS=OFF Build the respective tool without TLS source support

Note: The build automatically disables TLS support if OpenSSL is not found.

Dependencies

  • If you want to use HTTPS sources in dipitvhead and dipiradiohead, you'll need libssl-dev.
  • dipifccret needs libpcap. If libpcap isn't found, dipifccret is skipped entirely rather than built without its core feature.

Packaging

dpkg-buildpackage -b -us -uc

Build-Depends: debhelper (>= 13), cmake, libssl-dev, libpcap-dev.

Editorial notes

Some of the implemented formats are not part of DVB-IPI. They exist for convenience and to bridge between real-world usage of media formats and the standard.

Notable additions

  • dipiradiohead
    • Icecast/Shoutcast as an input source - none of this is part of DVB.
    • ICY StreamTitle, inline ID3v2 TIT2/TPE1 mapping into EIT.
  • dipitvhead
    • HbbTV AIT injection (--hbbtv, ETSI TS 102 809) is hybrid broadcast/broadband signaling, a separate spec.
  • dipirec
    • mkv and mka containers.
    • srt subtitles from EBU Teletext (ETSI EN 300 706). SRT isn't a DVB format.
    • udpxy is not part of any DVB/ETSI specification.
  • dipiscan
    • This tool would largely be unnecessary if deployments consistently used DVBSTP/SD&S as implemented by dipisds.
    • m3u, xspf and our own "local" csv format.
  • dipisds
    • All supported formats other than SD&S XML/BiM are convenience additions.
  • dipixmltv
    • XMLTV is not part of DVB-IPI; TVA XML encoded as BiM is.
    • CRIDs using the authority dipixmltv.invalid, reserved under RFC 2606 because this project is not a registered CRID authority.
  • dipibim
    • An uncompressed representation of TVA EPG data is not specified by ETSI TS 102 539, §7.2.

Known gaps

On the other hand, full DVB-IPI goes way beyond the scope of this toolkit.

  • FEC (Annex E) and Companion Stream FCC (Annex J). RAMS-based FCC is provided by dipifccret.
  • RMS-FUS, Remote Management and Firmware Update
  • DVB Companion Screens and Streams
  • DVB Home Network, ETSI TS 102 905
  • SD&S record types other than Broadcast Discovery / Service Provider Discovery (-5). dipisds only does those two. No CoD discovery, Package, Regionalisation or RMS-FUS discovery records.
  • RTSP command/control for CoD services and multicast join (-6) - no CoD playback control here.
  • DHCP-based IP address assignment for the HNED (-8)
  • FUSS, the mandatory File Upload System Stub (-9)
  • Content Download Services / CDS, push or pull (-10)
  • Full QoS/DiffServ behavior (-11): Only limited or fixed DSCP handling is implemented.
  • SRM delivery for Content Protection revocation (-12)
  • Dynamic Service Management (-13)

Licence

GPL-3.0-or-later. See LICENSE and NOTICE.