Sunday 21 August 2016

DVBStreamExplorer Community Preview

A DVBStreamExplorer Community Preview including Python integration has been made public available. This is in a very early stage but will allow you to try out Python integration feature now.

At this point only x64 is available. You need a valid DVBStreamExplorer license or you can try it out for time limited period. You also need to have Python 3 x64 version installed.
Download from here: http://dvbstreamexplorer.com/grIyM6Xq/dvbse/4.0/preview/python/dvbstreamexplorer4ProX64.msi

This version is almost identical to the recent DVBSE 4.0.21 except for the Python integration.
To integrate Python launch DVBStreamExplorer. Open options / preferences. You should notice a new tab 'Python integration'.


Here you can enable Python integration. You can open the the folder where user Python scripts should be stored. The folder path is fixed and cannot be changed.

Currently only Multiple DVB MUX scanning (S/C/T) integrates Python.

Download following script and use it as a starting point, https://drive.google.com/file/d/0B2ETNJgnsmi0NjktRGdSamItZWM/view?usp=sharing. This basically just defines simple stubs for the methods that will be invoked by DVBStreamExplorer.
The print statements do not have any effect when invoked from DVBStreamExplorer since these is no active console for output. They were used when invoking script from a small Python test application. Each method increments a member variable, This is just to demonstrate that state is kept in between calls.
Now you can modify the sample script for your own need. The general rule is if you want DVBStreamExplorer to continue it's current task return 0. If you want DVBStreamExplorer to abort it's current task return 1. In the sample script this is demonstrated for DVB-S scanning that will skip scanning for vertical transponders.

This is work in progress and likely to change before final release. It is strongly recommended not to make any custom solution for production usage. Things can break in furure preview and final releases.

Feel free to provide feedback, either as comment to post or directly to info@dvbstreamexplorer.com

Saturday 23 April 2016

Showing EIT information in DVBStreamExplorer Service View

DVBStreamExplorer V.4.0.20 includes a new feature that will allow EIT information to be continuously saved  to XML files from TS Monitor (DVB). DVBStreamExplorer Service View has been updated so it can now load and display such files. Below is screenshot after loading EIT XML file. Note how service names are initially displayed as triplet of ONID/TSID/SID.



To show real service names, load a DVBStreamExplorer service XML export that contains the necessary information. Below is screenshot after loading such file.


Note that the service tree items are ordered by the underlying ONID/TSID/SID values. This should preferably be changed to order by service names.

Friday 15 April 2016

How section binary view in DVBStreamExplorer helped locating a bug

A little known feature in DVBStreamExplorer is the ability to view raw section content in main window. This feature recently helped me out locating a bug in DVBStreamExplorer.
Some time time ago I had done some DVB-S scanning of several satellites. SI and SVC XML files had been saved. Recently I tried to open SVC XML file in DVBStreamExplorer Service View which I was running from Visual Studio. I got this error during load.



I opened SVC XML file in wxHexEditor. I was able to locate the 0x07 character.



The problem was related to a service name. I was able to figure which service had the problem. I loaded the SI XML file in DVBStreamExplorer and navigated to that service and got this view.



There appears to be some kind of control character before service name. That's suspicious since control characters are supposed to be filtered out before being displayed. To view raw section content select section on tree view. And select 'value' tab in bottom view.
The first byte in highlighted area is 15 which is hexadecimal for 21 decimal which again is the length of the string. Then there is a sequence of 10 00 07 which constitutes character set selector. From ETSI EN 300 468 table A.4 it can be seen this is Latin/Greek. After this sequence there is the actual service name string. Considering that issue is about an unexpected 0x07 character it's obvious to suspect that 0x07 is considered part of the service name string.
After a code review such a bug was indeed found. This has been fixed in DVBStreamExplorer 4.0.20 just released. SI XML was loaded in new version. Service name was now displayed correctly as seen below.


A new SVC XML file was exported. And this time it could be loaded from DVBStreamExplorer Service View without any issues.


Sunday 6 March 2016

Integrating user defined Python scripts with DVBStreamExplorer

NOTE: this post describes a feature that is not yet included in DVBStreamExplorer public release.

A new feature is planned for a future DVBStreamExplorer release. This feature will allow a user defined Python script to be invoked at certain points during 'Multiple DVB-x MUX scanning'. User script will be called on events like:
  • Starting a new scan session.
  • Starting scan of new satellite. This is only applicable for DVB-S scanning.
  • Starting scan of new MUX. Tuner parameters. 
  • Scanning of MUX completed.
  • Scanning of satellite completed. This is only applicable for DVB-S scanning.
  • Scan session completed.
Depending on event context user script can typically request DVBStreamExplorer to continue scanning, skip scanning of current satellite/MUX or abort the entire scanning session. Events handlers are methods in a class user script must implement. Using a class allows script to maintain state between calls to methods.
In example below user script is handling the start scanning of new DVB-S MUX event.

    def StartScanMuxDvbS(self,frequency, symbolrate, polarisation, fec):
        print(self.count,frequency, symbolrate, polarisation, fec)
        self.count=self.count+1
        if polarisation == "H":
            return 0
        else:
            return 1

This code causes scanning of horisontal transponders only. Scanning of vertical transponders will be skipped.While this might not represent an interesting case for a real production system, it does demonstrate the possibilities. Note that 'self.count=self.count+1' statement is to keep track of the number of times script was called. This is for debugging purposes only.

A more realistic case for a real production system: If you are scanning multiple satellites on a regular basis, you might have certain expectations about hove many transponders should be scanned and how many services should be found. If scan result differs too much from your expectations you could send a notification, i.e. email, to a user to alert about this.

The work on this is still in progress. I now have a working prototype. But there is still some way before it's ready for public release.
Please feel free to provide feedback on this, i.e. if you have any suggestion about information that should be passed on to user script. You can provide feedback either by commenting on this post or send to info@dvbstreamexplorer.com.

Wednesday 10 February 2016

PCR, OPCR,PTS and DTS reports in TS File Demux

In TS File Demux v2.3.17 new feature has been added to generate CSV reports containing details about PCR, OPCR, PTS and DTS timestamps.

To create PCR, OPCR CSV report add 'Single PID one file' filter for a PID stream containing such timestamps. That will typically be the PID marked as PCR in program tree. I.e. for PID 0x1001 the binary file ts_pid_0x1001.bin will be created in output folder together with ts_pid_0x1001.bin.csv file.
See embedded sheet below for an example of such CSV file.


To create PTS, DTS report add PES filter for a PES stream containing such timestamps. That would typically be video and audio streams. Note that not all stream types recognized as PES streams may contain timestamps. Refer to ISO 13818-1 for details.  I.e. for PID 0x0fa1 the binary file pes_0x0fa1.bin will be created in output folder together with pes_0x0fa1.bin.csv file.
See embedded sheet below for an example of such CSV file.