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.
| Tool | Headend | Edge | Client | Lab | 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 | |
| dipirec | ✔️ | ✔️ | DVB-IPI Multicast to file/stdout recorder | ||
| dipiscan | ✔️ | ✔️ | Scan for multicast TV/radio services (w/o SD&S) | ||
| dipibim | ✔️ | TVA XML BiM encoder/decoder (to debug dipiepg) |
|||
| dipicam378 | ✔️ | cs378x CAS test smartcard emulator | |||
| dipidescramble | ✔️ | CAS validation client / descrambler |
Your choice. Go for the classics: ./configure --release && make -j"$(nproc)" or use CMake:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build| CMake | configure | |
|---|---|---|
-DCMAKE_BUILD_TYPE=Debug|Release |
--debug / --release |
Build type |
-DDVBIPITOOLS_STATIC=ON |
--static |
Static linking |
-DDIPIRADIOHEAD_TLS=OFF / -DDIPITVHEAD_TLS=OFF / -DDIPIREC_TLS=OFF |
--no-tls |
Build the respective tool without TLS source support |
-DDIPITVHEAD_CSA2=OFF / -DDIPIDESCRAMBLE_CSA2=OFF |
--no-csa2 |
Build the respective tool without CSA2 |
Note: The build automatically disables TLS support if OpenSSL is not found.
- libssl-dev
- Required for HTTPS sources in
dipitvheadanddipiradiohead. - Enables CISSA/AES-128 Conditional Access in
dipitvhead. - Required to build
dipicam378/dipidescrambleat all - RSA/AES crypto is their whole purpose, so both are skipped entirely if not found.
- Required for HTTPS sources in
- libdvbcsa
- Optional; required only if you need CSA2 support in
dipitvheadordipidescramble.
- Optional; required only if you need CSA2 support in
- libpcap
- Required for
dipifccret. If not found, the tool is skipped to ensure build integrity.
- Required for
Release builds in this repository do not contain libdvbcsa.
dpkg-buildpackage -b -us -ucBuild-Depends: debhelper (>= 13), cmake, libssl-dev, libpcap-dev.
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.
- dipiradiohead
- Icecast/Shoutcast as an input source - none of this is part of DVB.
- ICY
StreamTitle, inline ID3v2TIT2/TPE1mapping into EIT.
- dipitvhead
- HbbTV AIT injection (
--hbbtv, ETSI TS 102 809) is hybrid broadcast/broadband signaling, a separate spec.
- HbbTV AIT injection (
- dipirec
mkvandmkacontainers.srtsubtitles 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,xspfand our own "local"csvformat.
- This tool would largely be unnecessary if deployments consistently used DVBSTP/SD&S as implemented by
- 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.
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).
dipisdsonly 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)
Indirectly related:
dipitvheadanddipidescrambledon't support ETSI TS 103 197 CAS3
GPL-3.0-or-later. See LICENSE and NOTICE.