TSDUCK CHANGE LOG AND RELEASE NOTES ------------------------------------------------------------------------------- VERSION 3.40-3969 (Nov 2024) [NEW] New commands and plugins: * Added plugin "isdbinfo": Extract ISDB-T information from the stream. [IMP] Improvements on existing commands and plugins: * In "tsfclean", the audio of each service now starts at or after the PTS of the first intra-frame of the video of that service. ------------------------------------------------------------------------------- VERSION 3.39-3956 (Nov 2024) [NEW] New commands and plugins: * Added plugin "trace": Trace packets with a custom message. [IMP] Improvements on existing commands and plugins: * All known and documented tables and descriptors from MPEG, DVB, ATSC, SCTE, and ISDB, are implemented in TSDuck. Up to the previous version, there were still some unimplemented rare MPEG descriptors and ISDB tables. DSM-CC are not yet implemented. * In plugin "dvb" with DVB-S2 modulation, the default PLS mode is now GOLD instead of ROOT. The GOLD mode is the one which is defined by ETSI EN 302 307-1. The PLS mode COMBO has been removed. This mode does not officially exist. * In "tsscan", the option --delivery-system can be specified more than once to scan networks with more than one system, e.g. DVB-T and DVB-T2. * In a XML file which describes a tuner emulator, the following attributes can now be specified per channel: polarization, modulation, symbol_rate, and FEC_inner. * In "tsscan" and plugin "nitscan", when scanning a DVB-C network, the DVB-C Annex A, B, or C, which was used to scan the TS carrying the NIT is propagated to scanned TS (issue #1518). With the plugin "nitscan", this is effective only if the input plugin is "dvb". * In "tspcap" and plugin "pcap", explore all nested levels of VLAN to get inner IPv4 packets (issue #1529). * Added conditions in XML patch files (see special attributes "x-define", "x-undefine", and "x-condition"). * In XML files containing tables, it is possible to specify one "attribute" string per table. This generic string is passed to applications which may want to use it. * In plugin "eitinject", it is now possible to delete events from the EPG and remove them from EIT's before they occur. Use attribute="delete" in XML files to delete events instead of adding them. * When reading RS204 files (TS packets with 16-byte trailers), the trailer is no longer discarded. It is kept all along the plugin chain, it can be manipulated by plugins and is written back if the output format is set as RS204. The following plugins provide support for 204-bytes packets: "craft", "dump", "file", "fork", "ip", "merge", "pcap", "srt", "rist". With "tsdump" and plugin "dump", the option --rs204 dumps the trailer and, with option --isdb, the ISDB-T information is formatted. In "tsanalyze" and plugin "analyze", the ISDB-T layer information is displayed by service and PID. * The plugin "history" now reports the first and last intra-frame in all video PID's. With option --intra-frame, all intra-frames are reported. * New options in existing commands and plugins: - Option --except-label in all packet processing plugins. - Option --udp-format in "tstables" and plugin "tables" to send tables in JSON or XML format through UDP (previously, it was binary only). - Option --ip-udp in "tsdump", with all usual UDP reception options. - Option --vlan-id in "tspcap" and input plugin "pcap". - Option --region-names in "tsterinfo". - Options --event-offset and --input-event-offset in plugin "eitinject". - Options --once, --synchronous, --copy, --destination in plugin "trigger". - Options --abnt, --atsc, --brazil, --ignore-leap-seconds, --isdb, --japan, --philippines, --rs204, --usa in "tsdump" and plugin "dump". - Option --isdb_layer in plugin "filter". - Option --intra-frame in plugin "history". - Options --rs204 and --delete-rs204 in packet processing plugin "craft". - Option --rs204 in input and output plugins "craft", "ip", "pcap", "srt", "rist". - Option --display-interval, --evaluation-interval, --timestamp-priority in input plugin "rist". Removed option --timestamp-priority. [BUG] Bug fixes: * Fixed a regression in "tstabcomp", when an input file name was specified but no output file name (e.g. "tstabcomp file.xml"), the output was sent to the standard output instead of the default output file name (eg. file.bin). * Fixed issue #1519: incorrect value of program_splice_flag in SCTE 35 splice information tables. * Fixed issue #1520: assertion failure in "tscmp" in rare cases. * Fixed issue #1537: options --usa failed to translate to ATSC and HF band. * The plugin "merge" failed to receive TS packets not in 188-byte format. * In "tspcap" and plugin "pcap", IPv4 packets with header checksum set to zero were rejected. Some IP implementations do not compute the checksum and leave it to zero, meaning don't check. ------------------------------------------------------------------------------- VERSION 3.38-3822 (Aug 2024) [IMP] Improvements on existing commands and plugins: * The documentation has been reorganized and is now built from asciidoc format. The user guide is now installed in HTML format. A new developer's guide is also available in HTML format and installed with the development environment. The PDF versions are available online. * New options in existing commands and plugins: - Option --pid in plugin "eitinject". - Option --joint-termination in plugin "tables". - Options --json-buffer-size, --json-interval, --json-line, --json-tcp, --json-tcp-keep, --json-udp, --json-udp-local, --json-udp-ttl to input plugin "dvb". [BUG] Bug fixes: * In plugin "eitinject", fixed duplicated events when an event was reloaded with same id but different content. ------------------------------------------------------------------------------- VERSION 3.37-3670 (Mar 2024) [NEW] New commands and plugins: * Added "tsfuzz" and plugin "fuzz": introduce random corruptions in transport streams. Can be used to run fuzzing attacks on receivers or TSDuck itself. [IMP] Improvements on existing commands and plugins: * Standard crypto operations (AES, DES, SHA) are now delegated to a system library, OpenSSL on Unix, BCrypt on Windows. Previously, TSDuck included old code from LibTomCrypt. Using a system-provided library increases the probability to take advantage of accelerated instruction on the current platform. * TSDuck is now supported on 64-bit RISC-V, 64-bit PowerPC, and IBM s390x (big endian). On s390x, use clang (gcc has a code generation bug). * New options in existing commands and plugins: - Options --meta-sections, --time-stamp in plugin "splicemonitor". - Option --meta-sections in "tstables", plugin "tables". - Option --clear-period in plugin "scrambler". - Option --plp0-tsrate in output plugin "dektec". - Option --input-timestamp in plugin "pcrextract". - Option --ignore-rist-timestamps in input plugin "rist". [BUG] Bug fixes: * Fixed issue #1389: Because of a recent regression, the plugin "mpe" crashed when analyzing its command line options. * PR #1397: In plugin "eitinject", events still running were discarded from EIT schedule when they started in a previous segment. * Fixed issue #1398: A corrupted sync byte in a TS packet caused "tsp" to loop forever. * Fixed issue #1400: A corrupted PES packet crashed plugin "teletext". * Fixed issue #1401: A corrupted PES packet crashed plugin "pes". * Fixed issues #1405 and #1407: A corrupted HEVC sequence caused memory allocation failures in various tools and plugins ("analyze", "pes", etc.) * Fixed issue #1416: Using plugin "pcrcopy" without --reference-label, when label 0 was set by prevous plugins, the reference PID could be incorrectly switched. ------------------------------------------------------------------------------- VERSION 3.36-3528 (Dec 2023) [NEW] New commands and plugins: * Added output plugin "http", acting as a server. [IMP] Improvements on existing commands and plugins: * TSDuck now requires C++17. Building TSDuck consequently requires at least GCC 11, LLVM / clang 5 or Visual Studio 2017 15.8. * Improved the precision of plugin "regulate" when based on bitrate. * Improved the measurement precision in plugin "bitrate_monitor". * Renamed FlexMux-related descriptors and fields as M4Mux to comply with ISO/IEC 13818-1 9th edition. * Added support for many new descriptors (contribution from Paul Higgs). * In "tsanalyze" and plugin "analyze", the LCN and hidden flag of services are now reported in all formats, text, normalized, JSON. * New options in existing commands and plugins: - Options --json-line, --summary in plugin "bitrate_monitor". - Option --buffer-size in output and packet processing plugin "ip" (already existed in input plugin "ip" but was missing in the two others). - Option --random in plugin "pcredit". - Options --actual-pf, --actual-schedule, --other-pf, --other-schedule, --no-actual-pf, --no-actual-schedule, --other-pf, --other-schedule in command in "set" command of "tseit". - Options --actual-pf, --actual-schedule, --other-pf, --other-schedule in "tspacketize", "tstabcomp", plugins "inject", "eitinject". - Option --flush-last-unbounded-pes in plugin "pes". - Option --http to input plugin "pcap'. - Option --output-tcp-stream to "tspcap". - Options --compressed, --headers in input plugins "http" and "hls". - Option --nostdcpp in "tsconfig". - Option --t2mi-file in plugin "t2mi". [BUG] Bug fixes: * In "srt" plugins, in --listener mode, after a first caller successfully connects, any other attempt to connect is properly rejected. Previously, due to an artefact in the SRT library, the second caller appeared to be connected but the packets were dropped. The third and next callers were properly rejected. * Fixed issue #996: Restarting plugin "tables" failed with JSON output. * Fixed issue #1293: In plugin "zap", the options --subtitles-pid and --audio-pid were broken and no longer selected the specified PID's. * In "fork" packet processing plugin, in option --buffered-packets, the value zero (no buffering at all) was not allowed. * Fixed issue #1321: In input plugin "dektec", read what is available in the input FIFO only, instead of trying to fill the complete buffer. * Fixed issue #1334: Incorrect service type names in JSON report of plugin "analyze" and "tsanalyze". * Fixed issue #1340: Restarting plugin "tables" with option --psi-si failed with to collect PMT's again. * Fixed issue #1369: Incorrect display in rare cases of HEVC sequence parameter set. * Fixed issue #1377: Incorrect display of stream types (PMT) in the context of HDMV streams (BluRay disks). * Fixed issue #1383: Plugin "history" always failed with input plugin "ip" because it was not possible to determine the initial bitrate. ------------------------------------------------------------------------------- VERSION 3.35-3258 (Aug 2023) [NEW] New commands and plugins: * Added plugin "dump" to dump TS packets (similar to command "tsdump"). * Added packet processing "ip" (similar to output plugin "ip"). * Added experimental plugin "feed" to extract an encapsulated transport stream from a feed. [IMP] Improvements on existing commands and plugins: * Improvements in syntax of XML patch files: - Match elements with an attribute value being different from something. Example: <PAT transport_stream_id="!1"> - Delete a higher-level parent on a structure match. Example: <PMT> <component stream_type="0x06" x-node="delete(PMT)"/> * In plugins "spliceinject", "scrambler", "descrambler", if the service name is an empty string or "-", the first service in the PAT is used. * New options in existing commands and plugins: - Option --adaptation-field in "tsdump". - Option --support in "tsversion". - Unix: Option --disable-multicast-loop in output plugin "ip". - Windows: Option --disable-multicast-loop in "tstabdump", input plugin "ip", plugins "cutoff" and "mpeinject". [BUG] Bug fixes: * Fixed issues #1203 and #1205: On Arm64 Linux system with CPU below Armv8.2 (typical example: Raspberry Pi 4), all executables crashed with "illegal instruction" error. * Fixed issue #1219: On Windows, tuning to a DVB-S tuner without specifying the modulation (QPKS by default), crashed "tsp" and "tsscan". * Fixed issue #1227: When garbage input was interpreted as a DVB service prominence descriptor, an infinite loop could occur. * Fixed issue #1234: Option --linger did not work with plugins "srt". * In "dektec" input and output plugins, several options and modes were defined but did not support MPEG-TS format. Trying to use them resulted in various errors from the Dektec library. All these options were removed (tracked in issue #550). ------------------------------------------------------------------------------- VERSION 3.34-3197 (May 2023) [NEW] New commands and plugins: * Added command "tslatencymonitor" to monitor the latency between two input sources (code contribution from Amos Cheung). [IMP] Improvements on existing commands and plugins: * On Arm64 platforms, Linux and macOS, improved performances on data serialization, CRC32 for all MPEG sections, AES, SHA-1, SHA-256 (when the corresponding accelerated instructions are available). * Using "-P tables --log", without "--output", the logged lines are reported through the general logger of "tsp" instead of being output to stdout. * The plugin "pes", with option --trace-packets, detects and reports invalid PES packets (e.g. truncated). * New options in existing commands and plugins: - Option --no-deep-duplicate in "tstables" and plugin "tables". - Option --accelerated in "tscrc32". - Option --ignore-crc32 in "tstabdump". - Option --patch-xml and --section-number in plugin "sections". - Options --lazy-schedule-update, --synchronous-versions in plugin "eitinject". [BUG] Bug fixes: * In plugin "eitinject", when a event was 64 days or more in the future, invalid EIT schedule sections were generated. Now, these events are discarded (an EPG can be only 64 days deep). * Fixed issue #1191: Incorrect display of some HEVC sequence parameter set analysis in plugin "pes". ------------------------------------------------------------------------------- VERSION 3.33-3139 (Jan 2023) [NEW] New commands and plugins: * Added command "tscrc32" to manually compute CRC32 as used in MPEG sections. * Added command "tstestecmg" to create an artificial load on an ECMG. [IMP] Improvements on existing commands and plugins: * Ported TSDuck to FreeBSD, OpenBSD, NetBSD, DragonFlyBSD. * New options in existing commands and plugins: - The packet processing plugin "file" now supports all options of the output plugin "file". - Option --max-files in output and packet processing plugin "file". - Option --set-label on plugin 'svresync". - Options --custom-tag, --live-extra-segments, --slice-only in output plugin "hls". - Options --log-message-count, --synchronous-log, --timed-log to "tsecmg". - Option --cumulative in plugin "analyze". [BUG] Bug fixes: * When an invalid / truncated section had a very large declared length, intermediate valid sections were ignored. ------------------------------------------------------------------------------- VERSION 3.32-2983 (Oct 2022) [NEW] New commands and plugins: * Added command "tsvatek" and output plugin "vatek" to handle modulators based on VATek chips. [IMP] Improvements on existing commands and plugins: * In "mpeinject" plugin, it is now possible to multiplex several input UDP stream into one single output MPE PID. * Added support for VVC, EVC, LCEVC, AVS3 and other new codecs descriptors (code contribution from Paul Higgs). * New options in existing commands and plugins: - Options --alt-group-id, --alt-language, --alt-name, --alt-type in input plugin "hls". - Options --merge, --attributes-merge, --sort, --uncomment in "tsxml". - Options --sort-languages, --sort-pids in plugin "pmt". - Options --eit-actual, --eit-other, --eit-pf, --eit-schedule in "tspacketize", "tstabcomp", plugin "inject". [BUG] Bug fixes: * Fixed issue #1070: In the plugin "scrambler", do not fail at startup if the bitrate is not immediately known. Simply wait for the bitrate to be known before scheduling crypto-periods and ECM's. ------------------------------------------------------------------------------- VERSION 3.31-2761 (Jun 2022) [IMP] Improvements on existing commands and plugins: * In "dektec" output plugin, option "--input-modulation" now handles DVB-T2. * Added environment variable TSPLUGINS_STACK_SIZE to specify non-default stack size for "tsp" plugin threads. * In plugin "sections", the options --tid-remove, --tid-ext-remove, --etid-remove, --version-remove were renamed without -remove suffix to highlight the fact that they can be used to remove or keep sections. * The plugin "bitrate_monitor" now reports the net bitrate (without null packets) in addition to the global bitrate. * New options in existing commands and plugins: - Options --no-bitrate, --align-first-segment in output plugin "hls". - Options --json-udp, --json-tcp, --json-buffer-size, --json-tcp-keep, --json-udp-local, --json-udp-ttl to "tsanalyze", "tscmp", "tsdektec", "tsxml", plugins "analyze", "splicemonitor". - Options --section-content, --section-mask in "tstables", plugins "sections", "tables". - Option --keep in plugin "sections". - Option --udp-end-wait in "tsemmg". - Option --invalid-versions in "tstables" and plugin "tables". - Options --byte-offset, --packet-offset in "tsdump". - Options --search-reorder, --min-reorder in "tscmp". - Option --rs204 in output plugin "ip". - Option --json-line in plugin "continuity". [BUG] Bug fixes: * Fixed issue #959: In the plugin "merge", the merged EIT PID was not correctly rebuilt when the merged stream contained EIT's. * Fixed issue #991: In TS analysis, when an audio, subtitles or teletext PID had multiple languages, only the first one was reported in the analysis. * Fixed issue #1010: The input plugins "http" and "hls" left obsolete cookies files in /tmp on Linux and macOS. * In "tscmp" with option "--subset", failed to report the last hole when it extended up to the end of the primary file. ------------------------------------------------------------------------------- VERSION 3.30-2710 (Mar 2022) [IMP] Improvements on existing commands and plugins: * The bitrate evaluation has been modified in the plugin "analyze". When there is no hardware-based ("dvb", "dektec") or clock-based ("ip") evaluation of the bitrate, all bitrate computations are based on the average bitrate, all over the capture, based on PCR's. Previously, the base was the current "tsp" bitrate, ie. a PCR-based evaluation from the last part of the stream only. * New options in existing commands and plugins: - Option --event in output plugin "hls". - Option --extract-tcp-stream in "tspcap". - Options --carrier-only and --roll-off in output plugin "dektec". - Option --periodic-command in plugin "bitrate_monitor". - Option --final-wait in "tsp". - Option --user-agent in input plugins "hls", "http". - Option --json-line in input and output plugins "srt". - Option --select-commands in plugin "splicemonitor". [BUG] Bug fixes: * Fixed bash completion incorrect behavior after plugin option (-I, -P, -O). * Fixed spurious new lines on standard output in plugin "splicemonitor" with options --display-commands and --json. * Fixed issue #906: In output plugin "hls", live playlists were marked as event playlist. * In "tsscan", the handling of --min-strength was broken. * Fixed a segmentation fault crash in various plugins ("svremove", "sdt", "nit", etc). The crash occured when a table which is transparently passed in a modified PID changes its version. For instance, if the SDT Actual needs to be modified, all SDT Other in the same PID are transparently passed. If one of these SDT Other changed its version, "tsp" crashed. * Fixed issue #939: On Windows, opening TS files with non-ASCII name failed. * Fixed issue #945: In plugin "rmorphan", the predefined ISDB or ATSC PID's were considered as orphan, even with --isdb or --atsc options. * Fixed issue #948: Fixed truncated HTTP transfers when the server sends very small chunks of data (observed with Python http.server, not seen on usual production servers such as Apache or IIS). * Fixed issue #950: Extraction of T2MI streams failed in case of duplicate packets or packets without payload in the outer transport stream. ------------------------------------------------------------------------------- VERSION 3.29-2651 (Dec 2021) [NEW] New commands and plugins: * Added command "tseit" (test EIT manipulation scripts). [IMP] Improvements on existing commands and plugins: * All bitrate computations are now implemented using 64-bit floating-point values. Previously, a fixed-point representation was used. The strict accuracy was better but integer overflows in intermediate computations occurred from time to time, leading to incorrect evaluations. * On Unix (using libcurl), when an SSL/TLS connection fails with a CA certificate issue, retry with an updated list of CA certificates from https://curl.se/ca/cacert.pem. Transient issues have been noticed with Let's Encrypt CA around the certification renewal periods. The updated list is saved in $HOME/.tscacert.pem and is updated at most once a day. * In commands "tsp" and "tsswitch", the alternative syntax "--input" (for "-I"), "--processor" (for "-P") and "--output" (for "-O") are no longer accepted. They were rarely used and created confusion with potential equivalent options in plugins. * Bash completion support has been added for all TSDuck commands and plugins (plugin names, command and plugin options, enumeration values). * New options in existing commands and plugins: - Options --section-number, --negate-section-number, --invalid-sections, --only-invalid-sections in "tstables" and plugin "tables". - Options --bufferapi, --final-statistics and --statistics-interval in plugin "srt". Option --messageapi is now enabled by default. - Options --json and --json-line in plugin "splicemonitor". - Option --event-user-data in "tsswitch". - Options --dvb-simulcrypt and --no-pager in "tspcap". - Options --emmg-client-id, --emmg-data-id, --first-date, --first-packet, --first-timestamp, --last-date, --last-packet, --last-timestamp, --tcp-emmg-mux, --udp-emmg-mux in "pcap" input plugin. - Option --no-replicate-duplicated in "tsfixcc" and plugin "continuity". [BUG] Bug fixes: * Fixed incorrect EIT Schedule regeneration on event change in plugin "eitinject". ------------------------------------------------------------------------------- VERSION 3.28-2551 (Sep 2021) [NEW] New commands and plugins: * Added command "tspcap", a simple tool to analyze pcap files (Wireshark). * Added plugin "pcredit" (edit PCR, PTS and DTS values in various ways). * Added input and output plugin "rist" (Reliable Internet Stream Transport). * On macOS, all shared objects, including plugins, are now named '.dylib', the standard macOS naming, instead of '.so', a Linux naming. [IMP] Improvements on existing commands and plugins: * New options in existing commands and plugins: - Option --install-dvb-firmware in "tsconfig". - Option --local-interface in plugin "srt" (input and output). - Options --abnt, --atsc, --isdb in "tsscan". [BUG] Bug fixes: * Fixed issue #791: In plugin "merge", the PCR were not correcty adjusted when the input PCR had a discontinuity in the future. * Fixed issue #830: Incorrect formatting of HEVC HRD parameters. * Fixed issue #830: Incorrect handling of PES packets with 1 or 2 bytes in last TS packet. * Fixed issue #840: In "tsscan", the --lnb and --satellite-number parameters were not correctly passed when scanning each transport. * Fixed issue #841: In "tsscan", when generating channel files, the frequency was incorrectly set to zero on satellite networks. * In "tsp", the global default options for plugins (--atsc, --isdb, etc) were not correctly passed to plugins "tables" and "psi". * Fixed issue #856: The plugin "psi" with JSON output failed when restarted. * Fixed issue #861: On Linux and macOS, when plugins start and stop processes (typically "tsswitch" with several "fork" plugins), file descriptors were not properly segmented between processes, resulting in plugins failing to stop. * With "--initial-input-packets N --add-start-stuffing N", "tsp" could not start as long as at least one packet was received from the input plugin. * Fixed issue #871: In plugin "eitgenerator", the version number of the EIT sections were not correctly updated on section content change. ------------------------------------------------------------------------------- VERSION 3.27-2438 (Jun 2021) [NEW] New commands and plugins: * Added command "tsfclean" (cleanup TS files). * Added plugin "pcrcopy" (copy and synchronize PCR from one PID to another). * Added plugin "svresync" (resynchronize the clock of a service based on another service). * Added plugin "pidshift" (shift selected PID's forward inside the TS). * Added plugin "eitinject" (generate and inject EIT's inside the TS). [IMP] Improvements on existing commands and plugins: * Added support for Dektec Ethernet devices (eg. DTA-2162). * The plugin "zap" can now select more than one service. * New options in existing commands and plugins: - Option --max-output-packets in "tsp". - Option --force-local-multicast-outgoing in output plugin "ip". - Options --fifo-size, --preload-fifo in input plugin "dektec". - Option --wait-detach in output plugin "dektec". - Option --io-standard and all TS-over-IP options in input and output plugins "dektec". - Options --enforce-burst, --packet-burst in output plugin "srt". - Options --audio, --codec, --ecm, --emm, --intra-frame, --psi-si, --service, --subtitles, --video in plugin "filter". - Options --restart and --restart-interval in plugin "merge". - Option --system-synchronous in plugin "timeref". - Options --no-repeat, --payload-and, --payload-or, --payload-xor in packet processing plugin "craft". - Option --multiple-files in plugin "pes". - Options --apdu and --continue-on-error in "tssmartcard". [BUG] Bug fixes: * Fixed issue #764: SCTE 35 splice information tables were not correctly deserialized when the command length field was the legacy value 0xFFF. * Fixed issue #771: Multi-standard ASI Dektec devices surch as DTA-2174B did not work properly. * Fixed a rare issue where "tsp" with option --add-input-stuffing silently terminated after some long random time. * Fixed issue #811: In plugin "merge", the options --drop and --pass were not correctly handled when they had one single value (not a range). ------------------------------------------------------------------------------- VERSION 3.26-2349 (Apr 2021) [NEW] New commands and plugins: * Added input and output plugins "memory" (direct application interaction). * Added input plugin "pcap" (Wireshark capture files). [IMP] Improvements on existing commands and plugins: * Resource monitoring of "tsp" and "tsswitch" (option --monitor) is now configurable using XML files and alarm commands can be triggered on CPU or memory misbehavior. * When the environment variable TSDUCK_NO_USER_CONFIG is defined to some non- empty value, the user's configuration file is not loaded. * Bitrates are now handled, entered and computed with one decimal digit. The increased precision was required by some modulations. * New options in existing commands and plugins: - Option --event-code in plugins "mpe", "psi" and "tables". - Options --min-bitrate and --min-inter-packet in plugin "spliceinject". - Option --java and --python in "tsconfig". - Options --alarm-command, --max-pre-roll-time, --max-repetition, --min-pre-roll-time, --min-repetition value and --no-adjustment to plugin "splicemonitor". - Options --event-command, --event-udp, --event-ttl and --event-local- address to "tsswitch". - Options --max-size and --max-duration in output plugin "file". - Options --multiple and --restart-delay in output plugin "srt". - Options --caller and --listener in "srt" input and output plugins. The address:port parameter and the --rendezvous options are now legacy. - Option --ignore-leap-seconds in "tsanalyze", "tsdate", "tsp", "tspsi", "tstabcomp", "tstabdump", "tstables" and plugins "analyze", "psi", "tables". [BUG] Bug fixes: * In the display of SCTE 35 splice information tables, the UTC times in the splice_schedule() commands were incorrectly displayed. ------------------------------------------------------------------------------- VERSION 3.25-2237 (Feb 2021) [NEW] New commands and plugins: * Added plugin "splicemonitor" (monitor SCTE-35 splice commands). * Added input and output plugins "memory" for C++/Java/Python developers. * Java bindings have been added for high-level functions of the TSDuck library. All "tsp" features are now available from Java. [IMP] Improvements on existing commands and plugins: * Everywhere an input XML file name is expected, it is possible to specify an "inline XML content" directly. The string is recognized as an inline XML content and not a file name when it starts with "<?xml". * In most utilities or plugins where XML files can be read or written, it is possible to specify an automated XML-to-JSON conversion and read or write JSON input or output. * Everywhere XML or JSON output can be produced, it is possible to log the XML or JSON data on one line using options --log-xml-line (or --xml-line) and --json-line. Java or Python applications which intercept messages from a TSProcessor can more easily grab the complete output data. * HEVC video attributes are now extracted and reported. * DVB-T/T2 and ISDB-T are no longer enumeration values ("6-MHz", "8-MHz", etc). They are arbitrary values in Hz. The previous values in command line are still accepted for compatibility. * In plugin "bitrate_monitor", the alarm command receives more parameters. * The plugin "reduce" can now reduce the bitrate using PCR and VBR. * The command "tstabcomp" can use the standard input and output for XML or binary section files. * New options in existing commands and plugins: - Option --save-es in plugin "pes". - Option --extended-info in "tslsdvb" (--verbose no longer displays the extremely verbose graph, use --extended-info for this). - Option --usa in "tsanalyze", "tsdate", "tsp", "tspsi", "tsscan", "tstabcomp", "tstabdump", "tstables", "tsterinfo" and plugins "dvb", "analyze", "psi", "tables". - Option --abnt in "tsanalyze", "tsdate", "tsp", "tspsi", "tstabcomp", "tstabdump", "tstables" and plugins "analyze", "psi", "tables". - Options --fixed-proportion, --input-bitrate, --packet-window, --pcr- based, --reference-pcr-pid, --target-bitrate, --time-window in plugin "reduce". - Option --json-line in "tsanalyze", "tscmp", "tsdektec" and plugin "analyze". - Options --log-xml-line and --log-hexa-line to "tstables" and plugin "tables". - Options --log-xml-line, --strict-xml, --text-output, --xml-output to "tspsi" and plugin "psi". - Options --json, --json-line, --from-json and --x2j-* to "tsxml". - Options --json-output, --log-json-line, --rewrite-json and --x2j-* to "tstables" and plugin "tables". - Options --json-output, --log-json-line and --x2j-* to "tspsi" and plugin "psi". - Options --json, --from-json and --x2j-* to "tstabcomp". - Option --json to "tspacketize". - Option --default-pds to "tsanalyze", "tsscan" and plugin "analyze". - Option --log-hexa-line to plugin "mpe". [BUG] Bug fixes: * The global "tsp" options --default-pds and --hf-band-region were not correctly passed to the plugins. * Fixed issue #719: The option --default-pds was not correctly used in "tsscan" when looking for logical channel numbers in streams with invalid signalization (missing private data specifier descriptor). ------------------------------------------------------------------------------- VERSION 3.24-2109 (Dec 2020) [NEW] New commands and plugins: * Added plugin "stats" (report various statistics on PID's and labels). * Added command "tsxml" to test the validation and patches of XML files. * For developers who use the TSDuck library on Linux and macOS, the new command "tsconfig" generates the various build options for the applications depending on the current operating system. * Python bindings have been added for high-level functions of the TSDuck library. All "tsp" features are now available from Python. [IMP] Improvements on existing commands and plugins: * In all commands and plugins which produce "normalized" output, a JSON output format has been added. The traditional "normalized" format was designed for use with "grep" and "sed" and dates back from a time where JSON did not exist. * In all commands and plugins which define the option --format (file format), the new value "RS204" designates TS files containing 204-byte packets with trailing Reed-Solomon code. * In plugin "pcrextract" the default CSV separator is now "," instead of ";". * Added "default.time" to configuration file (see option --time-reference). * General improvement of ISDB support for Brazil and the Philippines: - Default character set, time reference and HF bands. * New options in existing commands and plugins: - Option --log-plugin-index in "tsp". - Option --subtitles-pid in plugin "zap". - Option --json in "tscmp" and "tsdektec". - Options --json and --deterministic in "tsanalyze" and plugin "analyze". - Options --save-pes, --intra-image, --h26x-default-format in plugin "pes". - Options --intra-close and --max-extra-duration to output plugin "hls". - Options --bitrate, --acceleration-threshold, --incremental-pcr-restamp, --no-smoothing, --pcr-reset-backwards in plugin "merge". - Options --atsc, --isdb, --japan to "tsdate". - Options --brazil, --philippines and --time-reference in "tsanalyze", "tsdate", "tsp", "tspsi", "tstabcomp", "tstabdump", "tstables" and plugins "analyze", "psi", "tables". - Options --and, --tid-ext-remove, --version-remove, --reverse-etid in plugin "sections". - Options --add-start-stuffing and --add-stop-stuffing in plugin "file". - Option --patch-xml to plugins "bat", "cat", "nit", "pat", "pmt", "sdt". [BUG] Bug fixes: * Fixed issue #646: Several commands and plugins crashed in case of invalid PES packets when the specified PES length was not zero but lower than the PES header size. * Fixed issue #651: When fixing the PCR's in the "merge" plugin, there was a slow drift on merged PCR values after several hours. * Fixed issue #653: When serializing NIT, SDT and BAT, the maximum size of a section was 4096 bytes as for all private sections (non-MPEG) but DVB specifies that these three specific tables shall not exceed 1024 bytes per section. * Fixed issue #664: Due to a probably long-standing regression, the command "tsterinfo" was no longer able to guess modulation parameters from bitrate. * Fixed issue in "tsp": When Ctr-C was in the startup phase (before the first packets were received), "tsp" hanged. ------------------------------------------------------------------------------- VERSION 3.23-1965 (Sep 2020) [IMP] Improvements on existing commands and plugins: * At most once a day, the "tsp" command interrogates GitHub in the background to check the availability of a new release of TSDuck. Define the environment variable TSDUCK_NO_VERSION_CHECK do disable this. * With commands and plugins which access the Internet such as the "http" plugin, the environment variables "http_proxy" and "https_proxy" are now used on Windows also. [BUG] Bug fixes: * Fixed issue #632: When the input plugin "http" was used with --ignore- errors and either --infinite or --repeat, restarting the plugin from "tspcontrol" entered an infinite loop. * Fixed issue #633: In version 3.22, a regression was introduced which crashed the plugin "fork" in the packet processor version ("-P fork"). ------------------------------------------------------------------------------- VERSION 3.22-1953 (Aug 2020) [NEW] New commands and plugins: * On Linux and macOS, the installation of TSDuck files are no longer all inside /usr/bin. Shared libraries are in /usr/lib, plugins are in /usr/lib/tsduck, configuration files are in /usr/share/tsduck. On macOS, /usr/local is used instead of /usr. On some 64-bit Linux distros, /usr/lib64 is used instead of /usr/lib. [IMP] Improvements on existing commands and plugins: * The "tsp" command now keeps track of input time-stamps for each packet and propagate the information to all plugins (see improvement in plugin "pcrverify"). * Most commands reading TS files can read M2TS files as well. * New options in existing commands and plugins: - Option --format in "tsanalyze", "tsbitrate", "tscmp", "tsdate", "tsdump", "tspsi", "tstables", plugins "file", "fork" (input, output and packet processor) and plugins "merge", "mux". - Options --input-format and --output-format in "tsstuff". - Options --input-synchronous and --jitter-unreal in plugin "pcrverify". - Option --timestamp-priority in input plugins "ip" and "srt". - Option --size-of-packet in "tsftrunc". - Options --eit-normalization, --eit-base-date and --pack-and-flush in "tspacketize", "tstabcomp" and plugin "inject". - Option --pack-sections in plugin "mpeinject". [BUG] Bug fixes: * Fixed issue #587: Due to an intermediate integer overflow, the report PCR jitters were sometimes completely incorrect. * Sections of some DVB, ATSC and ARIB tables, when serialized, were limited to 1024 bytes instead of 4096. Only MPEG-defined PSI sections should be limited to 1024 bytes. * Fixed issue #619: "tsecmg" failed to process an ECM request with crypto- period numbers wrapping over 0xFFFF (eg. CP = 0xFFFF and 0x0000). ------------------------------------------------------------------------------- VERSION 3.21-1819 (May 2020) [NEW] New commands and plugins: * Added command "tscharset" to perform manual string encoding and decoding using various DVB and ARIB character sets. [IMP] Improvements on existing commands and plugins: * LNB's for satellite reception are now preconfigured from an XML file. Polarization-controlled LNB's are now supported. Added "default.lnb" in global configuration file. * General improvement of Japanese TV support: - Japanese character sets as defined in ARIB STD-B24. - Partial ISDB signalization, as defined in ARIB STD-B10. - Option --japan triggers suitable defaults for Japanese TV. * New options in existing commands and plugins: - Option --initial-input-packets in "tsp". - Options --reopen-on-error, --max-retry and --retry-interval in output plugin "file". - Option --stream-id in "tsscan" and plugins "dvb", "filter". - Option --japan in "tsanalyze", "tspsi", "tstabcomp", "tstabdump", "tstables", "tsterinfo" and plugins "analyze", "psi", "tables", "dvb". - Options --default-charset, --europe and --japan to "tspacketize", "tsscan" and plugins "aes", "clear", "descrambler", "inject", "nitscan", "pmt", "rmsplice", "scrambler", "sdt", "spliceinject", "svremove", "svrename", "teletext", "zap". - Option --drop-to-maintain-preload in output plugin "dektec". - Option --nit-scan in "tsscan" (UHF-band scan is no longer the default, exactly one of --nit-scan, --uhf-band, --vhf-band shall be specified). [BUG] Bug fixes: * Fixed issue #515: In some cases, when multi-section long tables were injected, after some time, sections were not always inserted in the increasing order of section numbers. ------------------------------------------------------------------------------- VERSION 3.20-1689 (Mar 2020) [NEW] New commands and plugins: * Added command "tspcontrol" to send control commands to a running "tsp". * Added input and output plugins "srt" for Secure Reliable Transport (code contribution from Anthony Delannoy). This plugin is not compiled on all platforms (subject to availability of libsrt). * For developers, the features of "tsp" and "tsswitch" are now easily accessible from the TSDuck library. See classes ts::TSProcessor and ts::InputSwitcher. [IMP] Improvements on existing commands and plugins: * Added option --control-port to "tsp" and other related --control options for use with the new command "tspcontrol". * Added option --eit-date-only to plugin "timeref". * Option --buffer-size-mb of "tsp" now accepts decimal values (eg. "0.5"). * Added options --local-time-offset, --next-change, --next-time-offset, --only-country name and --only-region to plugin "timeref". * The command "tsdump" now displays the splice countdown when there is one. * Added options --has-splice-countdown, --splice-countdown, --min-splice- countdown and --max-splice-countdown to plugin "filter". * Added option --label-close to output plugin "hls". * Added option --ignore-absent to plugin "zap". [BUG] Bug fixes: * In input plugin "hls", when the sub-playlists or media segments had relative URI's with absolute file path, the sub-playlists or segments were not correctly loaded. * On Unix systems (Linux, macOS), the option --append was not correctly handled in plugin "file". The file was rewritten from the beginning. * In plugin "pes", when a NALunit contained more than one SEI message, only the first one was reported. * In plugin "spliceinject", the non-immediate time_signal() commands were immediately injected. Now, they are processed the same way as non-immediate splice_insert() commands. * In command "tsp", when the number of initial null packets (--add-start- stuffing) was larger than half the global buffer, the command terminated before having read the input (an end of file was incorrectly assumed). ------------------------------------------------------------------------------- VERSION 3.19-1520 (Nov 2019) [NEW] New commands and plugins: * Added plugin "timeshift" (delay packet transmission). [IMP] Improvements on existing commands and plugins: * Added option --receive-timeout to "tsp". * Added options --aes-cbc, --aes-ctr, --iv, --ctr-counter-bits, --output-cw- file to plugins "scrambler" and "descrambler". * Added option --swap-cw to plugin "descrambler". * Added default CAS selection options --default-cas-id, --conax, --irdeto, --mediaguard, --nagravision, --nds, --safeaccess, --viaccess, --widevine to "tspsi", "tstabdump", "tstables" and plugins "psi", "tables". * Added option --extensions to "tsversion" and "tstabcomp". * Complete ATSC signalization, as defined in A/65, is now supported. * NorDig-private descriptors are supported. * Added option --power-mode to "tsdektec" and output plugin "dektec". * Added options --build-service-list-descriptors and --default-service-type to plugin "nit". * Added options --start and --stop to plugin "trigger". * Added option --local-port to plugins "ip" (output) and "mpe". * Service id or name is now optional in plugin "svrename". When omitted, the default service is the first one in the PAT. * On Linux, multi-standard tuners are now supported (for instance tuners which support DVB-T and DVB-C). The options --delivery-system is used to select the appropriate type. Multi-standard tuners are not supported on Windows. [BUG] Bug fixes: * In plugin "hides", the bandwidth was incorrectly set to 5 MHz when 6 MHz was requested. * In plugin "continuity", packets were incorrectly detected as duplicate when they had the same continuity counter but distinct content. * Fixed HEVC_video_descriptor to latest version of ISO 13818-1 standard. ------------------------------------------------------------------------------- VERSION 3.18-1361 (Aug 2019) [NEW] New commands and plugins: * Added plugin "craft" as input to build specifically crafted packets and as packet processor to similarly alter packets in transit. * Added plugin "trigger" which executes actions on selected labeled TS packets. * Added plugin "cutoff" which sets labels on TS packets upon reception of UDP messages. * Added plugin "psimerge" which merges PSI/SI from mixed streams. [IMP] Improvements on existing commands and plugins: * Added option --only-label to all packet processing plugins. There is a new possibility to mark individual packets with a label which can be reused in other plugins. * Added options --label, --set-label, --reset-label, --set-permanent-label, --reset-permanent-label, --nullified, --input-stuffing, --every, --interval to plugin "filter". * Added option --atsc to commands "tsanalyze", "tstables", "tspsi", "tstabdump", "tstabcomp" and plugins "analyze", "tables", "psi". * Added option --pes-offset to plugin "encap" (synchronous PES mode). * Added options --add-registration and --add-pid-registration to plugin "pmt". The option --add-programinfo-id is now deprecated. * Added option --eit to plugin "timeref". * Added option --tag to plugin "count". * Added options --single, --set-label and --reset-label to plugins "remap" and "duplicate". * Added options --terminate, --joint-termination, --set-label and --reset- label to plugin "merge". * Added options --set-label and --reset-label to plugin "mux". * Added options --set-label-below, --set-label-normal, --set-label-above, --set-label-go-below, --set-label-go-normal, --set-label-go-above to plugin "bitrate_monitor". * Added RTP support for output plugin "ip": added options --rtp, --payload- type, --pcr-pid, --ssrc-identifier and --start-sequence-number. * Added options --interleave, --label-base and --first-terminate to input plugin "file". * Added option --min-ms-interval to plugin "pcradjust". * Added options --preload-fifo, --maintain-preload, --preload-fifo-delay and --preload-fifo-percentage in output plugin "dektec". [BUG] Bug fixes: * Fixed an issue while reading XML files: leading and trailing spaces were removed by default inside all text nodes. * Fixed input plugin "dektec": with satellite receivers, the LNB was not properly enabled. * In input plugin "hls", the cookies which were returned by a playlist were not passed to the next playlist or segment download. * In plugin "regulate" with option --pcr-synchronous, the stream was passed unregulated after 26.5 hours (a complete PCR cycle). ------------------------------------------------------------------------------- VERSION 3.17-1189 (Apr 2019) [IMP] Improvements on existing commands and plugins: * In commands "tsanalyze", "tsdump", "tspsi", "tstabdump", "tstables", the display is now sent through a pager application (less/more) when the output device is a terminal. Added option --no-pager to disable this. * In the input plugin "hls", after loading a master playlist, if the selected media playlist is not found, try next one, etc. * Added option --evaluate-pcr-offset to plugin "pcrextract". * Added option --dvb-cissa to plugins "scrambler" and "descrambler". * Added options --pid and --tag to plugin "bitrate_monitor". The plugin can now also monitor the bitrate of the complete TS and can detect zero bitrate on the transport stream. * Added option --start-media-sequence to output plugin "hls". * Added option --pack-and-flush to "tstabcomp". * In various analysis commands and plugins, ATSC signalization is now known. * General list of improvements regarding tuners and scanning: - Added region-specific UHF/VHF frequency layouts in various commands and plugins. Added option --hf-band-region to plugins "dvb", "dektec" and commands "tsterinfo", "tsscan". Added option --default-region to command "tsterinfo". - The command "tsscan" can now perform VHF band scanning: added option --vhf-band. Offsets are no longer used by default: added option --use- offsets. - In plugin "dvb" and command "tsscan": Added --guard-interval values "1/128", "19/128", "19/256". Added --transmission-mode values "1K", "2K-interleaved", "4K-interleaved", "16K", "32K". Added --modulation values "16-APSK", "32-APSK" (DVB-S2). The option --channel-transponder now accepts ATSC channel ids (major.minor). - The old "zap" format which was inherited from some Linux scanning tools is no longer supported by TSDuck. Instead, a more generic and portable XML format is used. See the user's guide for more details. Impact: . In plugin "dvb" and command "tsscan": Added option --tuning-file, removed options --tune and --zap-config-file. . In plugin "nitscan" and command "tsscan", added options --save-channels and --update-channels. [BUG] Bug fixes: * Fixed support for ATSC tuners on Windows. * In plugin "scrambler", fixed a crypto-period issue with option --cw-file and more than one CW. * Now accept to demux probably incorrect section muxing when a TS packet is such that 1) PUSI is set, 2) start of payload before the pointer field is unused (do not contain a valid section) and 3) starts with FF. This is a probably incorrect muxing which has been found on at least one satellite transponder. * Fixed bitrate computation based on PCR's. Null packets uselessly reset the bitrate computation and introduced a small bias. New computed values can be slightly different but more accurate. * Fixed various discrepancies in adjustment of continuity counters. * The option --default-charset was not always correctly used when compiling tables from XML. ------------------------------------------------------------------------------- VERSION 3.16-1110 (Jan 2019) [NEW] New commands and plugins: * Added input plugin "hls" to receive HTTP Live Streaming (HLS). * Added output plugin "hls" to generate HLS media segments and playlists. * Added plugin "pcradjust" to adjust PCR's according to a constant bitrate. [IMP] Improvements on existing commands and plugins: * In all commands and plugins, when an option takes an integer value and can be present several times, it is now possible to specify ranges of values (e.g. "--pid 0-3" instead of "--pid 0 --pid 1 --pid 2 --pid 3"). * Added option --pack to plugin "encap". * Added options --log, --log-size, --no-headers and --pid to "tsdump". * Added option --fill-eit to "tstables" and plugin "tables". * Added options for Dektec demodulators in input plugin "dektec". * In plugin "rmsplice", immediate splice events are no longer ignored. * Added PES encapsulation mode in plugin "encap" (added option --pes-mode, added optional value in option --pack). * Added option --threshold4 in plugin "limit". The packet selection strategy was changed. * Added option --enforce-burst in output plugin "ip". * Implement guidelines from ETSI TR 101 211 when compiling EIT's. * In XML descriptions of NIT and BAT, it is now possible to specify a preferred section index for each TS. [BUG] Bug fixes: * In plugin "http", the option --receive-timeout was ignored. * In "tsanalyze" and plugin "analyze", section analysis was missing on some PID's (including EIT's). * On Linux with BusyBox environment, the --help options (and other paged commands) no longer fail due to unsupported option for less. * The order of combining diacritical characters was incorrectly handled in DVB tables with the default character set. * In plugin "scrambler" with option --cw-file, there was a crash at the end of the first crypto-period. This was a regression. ------------------------------------------------------------------------------- VERSION 3.15-1008 (Nov 2018) [NEW] New commands and plugins: * Added command "tsswitch", a TS input switcher with remote control. * Added command "tsgenecm", generate one ECM using any DVB SimulCrypt ECMG. * Added plugin "limit" to limit the global TS bitrate. * Added plugin "duplicate" to duplicate one or more PID's. * Added plugins "encap" and "decap" to encapsulate and decapsulate PID's into one single tunnel PID. [IMP] Improvements on existing commands and plugins: * The plugin "fork" can now be used as input and output plugin as well. When used as an input plugin (new), it reads packets from the command output. * Added option --ignore-errors to "tsbitrate" and plugin "pcrbitrate". * Added option --receive-timeout to "tstabdump" and plugins "dektec" (input), "ip" (input), "mpeinject". * Added options --udp-size, --min-udp-size, --max-udp-size, --net-size, --min-net-size, --max-net-size to plugin "mpe". * Added option --network-id to plugin "nitscan". * Added option --strict-xml to "tstabcomp", "tstables" and plugin "tables". * Added option --max-packets to "tsdump". * The command "tsdump" can now accept multiple input files. * Added demodulator support in the input plugin "dektec" (e.g. DTA-2137). * Added options --audio-pid and --eit to plugin "zap". * Added option --sei-type to plugin "pes". * Added option --event-id to plugin "rmsplice". * Added the per-user configuration file $HOME/.tsduck to specify default or alternate options to various commands. [BUG] Bug fixes: * In XML documents which were generated by TSDuck, some characters were not properly escaped. * In "tsp", in case of output error, when a plugin was slowing down the playout speed (such as "regulate"), the command was slow to terminate. ------------------------------------------------------------------------------- VERSION 3.14-894 (Sep 2018) [NEW] New commands and plugins: * Added plugin "sections". * Optional rebuild without teletext support (without plugin "teletext"). [IMP] Improvements on existing commands and plugins: * Added option --remove-stream-type to plugin "pmt". * Added options --network-name, --network-id and --nit-other to plugin "nit". * Added option --provider to plugin "svrename". * Added options --include-next and --exclude-current to commands "tstables" and "tspsi" and to plugins "tables" and "psi". * Added options --rewrite-binary and --rewrite-xml to command "tstables" and plugin "tables". * Added keywork "system" to option --start in plugin "timeref". * Added option --transparent to plugin "merge". * Added options --other, --ts-id, --original-network-id to plugin "sdt". * Added options --create, --create-after, --bitrate, --inter-packet to plugins "pat", "pmt", "bat", "sdt", "nit". * Added option --wide-display to command "tsanalyze" and plugin "analyze". * Added option --min-interval to command "tsstuff". * Added option --scte35 to plugin "pcrextract". * In plugin "inject", when all input files have specific repetition rates, it is no longer required to provide a bitrate for the PID. It is computed from the size and repetition rate of all sections. * Some performance improvement by removing processing which are used in debug or verbose mode only (options --debug and --verbose). [BUG] Bug fixes: * In plugin "merge", merging CAT's from two streams was incorrect (incorrect PID conflict detection and endless code loop). * On Windows, "tslsdvb" and "tshides" could crash when using a HiDes UT-100A (combined received / modulator). ------------------------------------------------------------------------------- VERSION 3.13-834 (Jul 2018) [NEW] New commands and plugins: * Added input plugin "http" to receive a transport stream using a URL. * Added support for HiDes UT-100C modulator device using utility "tshides" and output plugin "hides". Be sure to install the right device drivers from https://tsduck.io/download/hides/ [IMP] Improvements on existing commands and plugins: * With plugins "svremove", "svrename" and "tsrename", the removal or renaming now also apply to EIT's. The new option --ignore-eit can be used to prevent this. * The plugin "regulate" can now also use the PCR from the TS to regulate the transmission. Previously, the regulation was done on bitrate only. Added options are --pcr-synchronous, --pid-pcr and --wait-min. * The input plugin "ip" and the plugin "mpeinject" now accept the syntax 'source-ip@multicast-ip:port' for source-specific multicast (SSM). As a side effect, the command "tstabdump" also accepts this syntax when receiving PSI/SI tables. * Added option --tos to output plugin "ip". [BUG] Bug fixes: * Bug fix: Option --cleanup-private-descriptors in plugins "bat", "cat", "nit", "pmt" and "sdt" failed to cleanup contiguous private descriptors. ------------------------------------------------------------------------------- VERSION 3.12-781 (Jun 2018) [NEW] New commands and plugins: * Added plugin "merge" which merges two transport streams. * On Windows, portable packages are now built for users without admin privilege. [IMP] Improvements on existing commands and plugins: * Added option --realtime to "tsp". This option selects appropriate default options when operating on real-time streamings. The "default defaults" remain appropriate for offline processing, such as working on transport streams files. This option is also automatically set by some plugins which are designed for real-time streaming ("dvb", "ip", "dektec", "play", "regulate", "mpeinject"). * The option --reuse-port is now on by default on all commands and plugins which use it. A new option --no-reuse-port has been added everywhere to disable the option explicitly (although probably never used). * Added options --log-protocol and --log-data to "tsecmg", "tsemmg" and plugins "scrambler", "datainject". * Added options --udp and --unregulated to plugin "datainject". * Many more descriptors are supported. See the user's guide. * In "tsemmg", sending UDP data to a broadcast address was not allowed. Now it is possible to send data to a local broadcast address. Using routed broadcast remains not possible (because this is usually not a good thing to route broadcast). [BUG] Bug fixes: * If an XML representation of a splice information table contained a splice_ insert command, the <break_duration> structure was rejected when the event was marked as immediate. * In "tsemmg", the TCP disconnection of the MUX was not detected in a timely fashion when data was injected using UDP. * In "tsecmg", the option --max-comp-time was ignored. * Regression fix: In plugin "datainject", the section mode was no longer handled correctly since version 3.10. ------------------------------------------------------------------------------- VERSION 3.11-716 (May 2018) [NEW] New commands and plugins: * Added utility "tsemmg", an EMMG simulator for MUX integration testing. * Added plugin "spliceinject" to inject SCTE 35 splice information in real time. [IMP] Improvements on existing commands and plugins: * Added options --sync-layout, --dump-datagram, --dump-udp, --dump-max and --skip to plugin "mpe". * Added option --buffer-size in plugin "datainject". The plugin is now able to receive data using UDP, as defined in the DVB SimulCrypt protocol. * SCTE 35 splice information tables can now be created from XML format. [BUG] Bug fixes: * In "tstables" and plugin "tables", when options --xml and --max-tables were both specified, the XML structure was not properly closed. * Application Information Tables (AIT) were not correctly serialized. * In rare cases, time conversions could produce incorrect results when the time value was in the middle of the "non-existing hour", during the spring switch of daylight saving time. In practice, the problem occured on Linux when handling the "next change time" of a TOT and the system local time was UTC. ------------------------------------------------------------------------------- VERSION 3.10-674 (Apr 2018) [NEW] New commands and plugins: * Added utility "tsecmg", a DVB SimulCrypt-compliant ECMG stub to test system integration. The plugin "descrambler" has been enhanced to decode the fake ECM's which are generated by "tsecmg". [IMP] Improvements on existing commands and plugins: * The utility "tstabdump" can now dump sections and files which are sent over UDP/IP by "tstables" or the plugin "tables". Command line options were added to specify UDP parameters (same UDP reception options as input plugin "ip"). * Added options --fix and --pid to plugin "continuity". * Added option --after-packets to plugin "filter". * Added options --default-interface to input plugin "ip" and plugin "mpeinject". * Added options --inter-time, --max-insert-count, --min-pts, --max-pts and --pts-pid to plugin "mux". * Added option --milli-seconds to plugin "history". * Input plugin "file" can now read more than one file. Input files are concatenated as input stream. * Added option --fifo-size to output plugin "dektec". * Added option --atis-idsa to plugins "scrambler" and "descrambler" (perform ATIS-IDSA scrambling instead of DVB-CSA2). * Added option --integer to tsversion, useful to check a version in a script. [BUG] Bug fixes: * Incorrect behaviour on Linux and macOS when receiving multicast with plugins "ip" and "mpeinject" and a --local-interface was specified. * The command "tsanalyze" and a few plugins could crash when a video PID contained corrupted AVC/H.264 video (or incorrect video data which looked like H.264). * Plugin "analyze" with option --interval incorrectly used the TS clock to produce the analysis files instead of the wall clock time. * Plugin "history": Detection of scrambling transitions: Now ignore packets without payload or with short payloads (less than 8 bytes). These packets are normally left clear in a scrambled PID. Considering them as clear packets used to report spurious scrambled-to-clear transitions, immediately followed by clear-to-scrambled transistions. ------------------------------------------------------------------------------- VERSION 3.9-619 (Mar 2018) [NEW] New commands and plugins: * Precompiled binaries are now provided for Raspbian on Raspberry Pi. * Added plugins "mpe" and "mpeinject" to respectively extract and inject MPE (Multi-Protocol Encapsulation) datagrams to/from UDP/IP. A complete example is provided in the user's guide. [IMP] Improvements on existing commands and plugins: * Added options --add-start-stuffing and --add-stop-stuffing to "tsp". * Added options --sei-avc and --uuid-sei to plugin "pes". * Added options --add-programinfo-id, --set-stream-identifier, --set-cue-type and --set-data-broadcast-id to plugin "pmt". * Added option --identify to plugin "t2mi". * Added options --all-once, --pack-all-sections and --pack-and-flush to "tstables" and plugin "tables". * Added option --default-charset to "tsanalyze" and plugin "analyze". * Added signalization for data broadcast and MPE. * Improved display of Dektec devices capabilities. * In all TSDuck commands, parameters can be read from a file using the syntax "@filename" anywhere in the command line. See the user's guide for details. * Added possibility to specify a GitHub authentication token in "tsversion" to avoid "API rate limit exceeded" errors. [BUG] Bug fixes: * In "tstables" and plugin "tables", when all sections were collected (option --all), the sections were not properly saved in binary section files (option --binary). * On Windows, the command "tsversion --upgrade" failed because tsversion.exe and tsduck.dll were locked by upgrade command. * On Linux: With DVB-T tuners which do not support "auto bandwidth" (PCTV 492e for instance), "tscan" failed to scan the UHF band. ------------------------------------------------------------------------------- VERSION 3.8-534 (Feb 2018) [IMP] Improvements on existing commands and plugins: * Added options --source and --first-source to input plugin "ip". * Added option --periodic-bitrate to plugin "bitrate_monitor". * Added options --pid, --csv and --log to plugin "pcrextract". * Added XML support for more DVB and EACEM descriptors. * When the output plugin "play" uses VLC, the player exits automatically at the end of the video playout. [BUG] Bug fixes: * On macOS, the output plugin "play" now correctly detects VLC in its original installation path. * In the compilation of XML tables, when DVB strings were encoded with a character set different from ISO-6937 (the default character set), the table code was not correctly inserted at the beginning of the string. * In plugin "bitrate_monitor". The message was incorrect when the bitrate is greater then the limit (the message was ok in other cases). * In plugin "rmsplice", with option --adjust time, the time stamps were not correctly adjusted. ------------------------------------------------------------------------------- VERSION 3.7-512 (Jan 2018) [NEW] New commands and plugins: * Added plugin "teletext" to extract Teletext subtitles in SRT format. * Added plugin "rmsplice" to remove ads insertions when signaled using SCTE 35 splice information. [IMP] Improvements on existing commands and plugins: * Added option --add-ca-descriptor to plugin "pmt". * More details are displayed in SCTE 35 splice information. * The command "tsp --list" is now paged, like option --help. [BUG] Bug fixes: * In "tstables" and plugin "tables", with XML output, option --time-stamp was ineffective and option --packet-index was always on. * In plugin "pcrextract", options --pts and --dts were reversed. ------------------------------------------------------------------------------- VERSION 3.6-491 (Jan 2018) [NEW] New commands and plugins: * Added the utility "tsversion" to manage TSDuck versions, detect new versions, upgrade, etc. [IMP] Improvements on existing commands and plugins: * Added options --synchronous-log and --log-message-count to "tsp". They affect the way log messages are dropped or displayed in case a vast amount of log messages are produced in a short period of time. * Added option --plp to "tsscan" and plugin "dvb". Used to select the DVB-T2 PLP. This option is unsupported on Windows. * Added options --output-file, --append and --keep to plugin "t2mi". * Added HEVC signalization. * Added SCTE 35 signalization (splice information for ads insertion). * The help text of all TSDuck applications (using option --help) is now paged through "less" or any any other pager application. [BUG] Bug fixes: * In input plugin "ip", when multiple multicast streams are sent to the same UDP port (although with different addresses), make sure we receive only the requested stream. Previously, in some system configurations, the input plugin "ip" could receive packets from distinct multicast streams. * Various fixes about UDP on macOS: multicast reception, --reuse-port option. ------------------------------------------------------------------------------- VERSION 3.5-419 (Jan 2018) [IMP] Improvements on existing commands and plugins: * Added option --xml-output to "tstables" and plugin "tables". Tables can be saved directly in XML format. It is no longer necessary to save in binary and then use the decompiler to rebuild XML files. * With "tstables" and plugin "tables", it is possible to specify several formats at the same time. For instance, it is possible to save tables in text, XML and binary format at the same time. * With "tspacketize" and plugin "inject", it is now possible to load tables in XML format. The options --binary and --xml have been added to specify the file type if its name is neither .bin nor .xml. It is no longer necessary to use the compiler to rebuild binary section files. * Added option --byte to "tsftrunc". * The options --verbose and --debug have been generalized to all commands. * For programmers, the TSDuck library API was extensively modified. Usage of 8-bit strings (char* and std::string) has been removed and replaced by Java-like Unicode strings (ts::UString). Many interface have been updated. The utilities in tsStringUtils have been removed. Equivalent services exist in class ts::UString. All of this break the backward compatibility of user code. This is unfortunate but TSDuck code is now more robust and faster to maintain. * The "revision" number is no longer a "build date" but a "commit count". ------------------------------------------------------------------------------- VERSION 3.4-20171110 (Nov 2017) [NEW] New commands and plugins: * Added "t2mi" plugin to extract encapsulated TS packets from T2-MI streams (DVB-T2 Modulator Interface). [IMP] Improvements on existing commands and plugins: * TSDuck now fully handles DVB character sets in signalization. All textual display ("tsanalyze", "tstables", etc.) are produced in UTF-8 format, with characters properly translated from DVB character encoding. The table compiler, "tstabcomp", properly translates from UTF-8 XML files to DVB character encoding and vice versa. * Added options --default-charset and --europe to "tspsi", "tstables", "tstabdump", "tstabcomp", plugins "psi" and "tables". * T2-MI PID's and PLP's are now included in the report from "tsanalyze" and plugin "analyze". * Added --test option to "tslsdvb" on Windows. * Improved robustness of DVB tuner detection on Windows. It solves some issues with 32-bit tuner filters on 64-bit systems. But older systems, before Windows 7 (XP, Vista, etc.), may no longer work. No further support will be provided for pre-7 Windows systems. ------------------------------------------------------------------------------- VERSION 3.3-20170930 (Sep 2017) [NEW] New commands and plugins: * Removed command "tsgentab" and associated plugins. This command is now obsolete and has been superseded by the more general "tstabcomp", the PSI/SI table compiler. [IMP] Improvements on existing commands and plugins: * Added option --interval to plugin "count". * Added option --default-pds to "tspsi", "tstables", "tstabdump", plugins "psi" and "tables". [BUG] Bug fixes: * Fixed timer issues on Linux, typically seen in plugin "regulate". ------------------------------------------------------------------------------- VERSION 3.2-20170911 (Sep 2017) [NEW] New commands and plugins: * Added the development environment in the Windows Installer. This is used to develop third-party applications using the TSDuck library. On Ubuntu, added the tsduck-dev package. On RPM-based distros, the tsduck-devel package already existed. [IMP] Improvements on existing commands and plugins: * Added option --no-duplicate to "tstables" and plugin "tables". * Added TSPLUGINS_PATH environment variable to use "tsp" plugins outside the directory of the TSDuck executables. * Added option --poll-file to plugin "inject". * Added option --pid to plugin descrambler. * Improved robustness of option --poll-file in plugin "inject". Mitigate possible race conditions when the plugin tries to open a section file while it is created/copied by the user. Now retry later. * Improved robustness of DVB tuner reception on Windows. Explicitly resynchronizes on valid packets when the driver misses data. * Adjusted output of "tslsdvb" on Windows to better identify tuner names. [BUG] Bug fixes: * In "tstables" and plugin "tables", the option --max-tables was not accurate when several small tables (eg. EMM's) were packed in the same TS packet. -------------------------------------------------------------------------------