Skip to content

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 21:34
· 11 commits to main since this release

TSDEC 2.1.0

Offline decrypter for recorded DVB transport streams.

Small release: it adds the two things a graphical front end needs before it can
be built honestly.

Downloads

platform binary archive
Linux x86-64 tsdec-linux-x86_64 tsdec-linux-x86_64.tar.gz
macOS arm64 (Apple Silicon) tsdec-macos-arm64 tsdec-macos-arm64.tar.gz
Windows x86-64 tsdec-windows-x86_64.exe tsdec-windows-x86_64.tar.gz

The binaries are plain executables: no runtime, no shared library, no install
step. The archives are the same file plus the README and the licence.

Quick start

chmod +x tsdec-linux-x86_64
./tsdec-linux-x86_64 -f control-words.cwl -i recording.ts -o clear.ts -P

On Windows, just run tsdec-windows-x86_64.exe.

What is new

You can stop it. Ctrl+C asks the job to stop instead of killing it.

tsdec -f log.cwl -i big-recording.ts -o clear.ts -P
# ... press Ctrl+C partway through
# clear.ts now holds everything processed before the stop

Whatever was decrypted up to that point is kept. The partial output stays a
whole number of packets and stays playable, so stopping a long recording never
throws away work already done. The stop is noticed between blocks, a block
being about a megabyte, so it takes effect within a fraction of a second.

The exit status distinguishes stopped on request from could not sync from
input was not encrypted, so a front end can say what actually happened rather
than just "error".

Progress is reported as data. tsdec_run() takes a callback that fires a
few times a second with packets processed and the size of the input, which is
what a real progress bar with a throughput figure and an estimate is built
from. tsdec_job_t replaces the long argument list; the old entry point stays
as a wrapper.

A front end is on the way

The Win32 GUI of 0.4.1 exposed almost none of what the command line can do, so
it was not carried over. A replacement is being built separately in
tsdec-gui. It drives this binary
through its command line rather than duplicating any of this code, which is why
the stop path had to exist first.

Tests

make test checks the bitsliced engine against the scalar one bit for bit,
against the published DVB test vectors, and drives the stop path at one and at
eight threads, checking that the output stays packet aligned and that what was
written before the stop is byte identical to the plaintext.
tools/run_tests.sh builds synthetic transport streams, encrypts them through
tsdec's own constant control word path so the generated log genuinely matches
the data, decrypts them again and compares packet by packet. 17 checks, run on
Linux, macOS and Windows in CI, and the full suite is what produced these
binaries.

Full changelog

https://github.com/prof-abdo/tsdec/blob/main/CHANGELOG.md

Attribution

Based on TSDEC V0.4.1 by ganymede. The CSA engine and the FFdecsa bitslice
implementation come from libdvbcsa by Alexandre Becoulet. GPL v3.