TSReader Support Information

Updated February 28, 2004

Support Information

This document is a FAQ. Please scan through it to see if there's an answer - if not, please send us email. We also suggest reading the README file - it contains lots of useful info, including command-line parameters used by TSReader.

General Issues

What are the two bars at the bottom of the TSReader window?

These both show buffer fullness. If these indicators reach full a buffer overrun has occurred. You should shutdown TSReader and find out which process is taking CPU time up since typically that's what causes these buffers to overrun.

The right-hand indicator shows the fullness of the buffer that's used to keep data coming in from the source (the satellite, cable, terrestrial tuner or a file). If this indicator overflows it's because the main processing thread that TSReader runs to parse the stream can't keep up with the data coming from the source.

The left-hand indicator shows the fullness of the buffer that's used to stream a program out of TSReader when you use the Stradis, XNS, VLC or D-VHS interfaces. If this indicator overflows it's because the destination you're stream to can't keep up with the stream TSReader is sending it.

Recording Issues

I recorded an entire transport stream because there were two programs I wanted to capture on at the same time. I now want to split out each of these two programs into individual files. How can I do this with TSReader?

This is called demultiplexing and that's what TSReader's Record Program function is for. It generates a single program transport stream by removing packets that aren't part of the current program and builds new tables to tell the decoder what PIDs the single program is using. Follow these steps to demux the file:

When the files have been demultiplexed and you're ready to do the second program simply click on it's PMT entry and drop the file onto TSReader again.

I recorded a stream with TSReader and want to record to DVD. What do I do?

Answer goes here!

What does the "Force PIDs to be ATSC compatible" option in the record program dialog do?

The ATSC system used to have a requirement that specific PIDs were used for the video and audio streams based on channel number within the mux. For example the video stream for program 1 in ATSC should use PID 0x0011 and it's primary audio stream uses PID 0x0014. I'm pretty sure this requirement has now been dropped by the ATSC, but there is probably software out there that uses this model.

Checking this option forces the PMT onto PID 0x0010, the video onto PID 0x0011 and audio to PID 0x0014 which matches channel 1 in the ATSC fixed-PID model. Leaving this unchecked causes PID 0x0020 for the PMT and the video/audio streams use their original PIDs.

Playback & Streaming Issues

How do I play a channel with XBox Media Player?

This assumes you've already got XBox Media Player operational and you know how to FTP into your XBox.

<share>
 <name>TSReader via XNS</name>
 <url>c:\@10.10.10.15</url>
 <cachesize>8192</cachesize>
</share>

How to do I play a channel with XBox Media Center?

Same guidelines for XBox Media Player, but the XML is slightly different. You need to:

<bookmark>
 <name>TSReader via XNS</name>
 <path>xns://10.10.10.15:1400/</path>
</bookmark>

What are the steps to stream over a network using TSReader and VLC?

Let's imagine your PC with the card running TSReader has an IP address of 1.2.3.4 and the computer you want to stream to is 4.3.2.1.

:sout=#duplicate{dst=std{access=udp,mux=ts,url=4.3.2.1:1235}}

<IP> :sout=#duplicate{dst=std{access=udp,mux=ts,url=4.3.2.1:1235}}

You now may want to experiment with the Stream Output settings. For example you can check the audio and video transcode options and reduce a high-bandwidth MPEG-2 stream into an MPEG-4 stream to send over the Internet. Obviously lots of bandwidth and fast processors on both ends are required to make this reliable.

Stream Issues

Please explain what continuity errors mean?

An MPEG-2 transport stream contains data in 188-byte packets. The first four byes of each packet are header and flags and then there's 184 bytes of payload data - video, audio, tables, IP data -- you name it.

In the header, there's a 13-bit field (range 0-8191 decimal) which is the Packet ID (PID) of the packet currently being sent. There is also a four bit field (range 0-15) called the continuity counter. This field increments for each packet sent on that PID. For example, one might see a sequence like:

PID 0 - continuity 0
PID 1 - continuity 0
PID 0 - continuity 1
PID 0 - continuity 2
...
PID 0 - continuity 15
PID 0 - continuity 0
PID 1 - continuity 1
PID 0 - continuity 2

This field is used by receivers (and programs like TSReader) to make sure that the transport stream data is continuous, i.e. it hasn't lost packets. If a receiver tracks the continuity it can determine if packets on a particular PID were lost -- for example if the satellite signal is interrupted. It handles cases except the case when exactly 16 packets (or multiples of 16 packets) were lost on a single PID which is unlikely.

So, given that they indicate packet loss, there are a few reasons why you might see continuity errors displayed in TSReader:

The general rule is that if you see only one or two continuity errors per second you're probably OK but if the continuity counter increments quickly, there's something wrong.

What causes "ES has been blacklisted" when I click on an elementary stream?

TSReader tries to figure out encoder parameters for video and audio streams it encounters in the mux. To do this, it demultiplexes the transport stream packets associated with the stream down to PES packets which is what's really carried on the PID. Once TSReader has built a PES packet, it scans the packet to find the encoder parameters - resolution and framerate for video, bitrate and sampling frequency for audio for example.

There are a number of things that can prevent TSReader from doing this right. For example, if the transport stream packets being looked at have the scrambled bits set (indicating a scrambled stream), TSReader ignores that stream. This situation doesn't cause blacklisting because the stream might later be scrambled, but say for example that an encoder is setup to generate a video stream and two audio streams and both are described in the PAT/PMT in the mux. Imagine the encoder has a problem and is acutally only outputting one audio stream - TSReader has been told via the PAT/PMT that a stream is there but no packets are received on that PID and as a result, the code that's trying to parse the elemetary streams hangs waiting for that data on the PID.

So, ES blacklisting occurs when TSReader encounters a stream that:

MultiDec API

How do I make plug-in modules written for MultiDec (and a bunch of other programs like MyTheater and ProgDVB) work with TSReader?

Simply put the files into a folder called MDPlugins in the TSReader folder. The plug-in's menu should then show up in TSReader next time it's launched.

What MD-API commands are supported by TSReader?

Name Supported Function
MDAPI_GET_PROGRAMM_NUMMER Yes Returns current program number. User must select a program by clicking on a PMT entry in TSReader for this to return meaniful data.
MDAPI_GET_VERSION Yes Returns API version number. TSReader sends "MD-API Version 01.02 - 1.04"
MDAPI_SET_PROGRAMM_NUMMER    
MDAPI_GET_TRANSPONDER    
MDAPI_SET_TRANSPONDER    
MDAPI_SET_PROGRAMM    
MDAPI_GET_PROGRAMM    
MDAPI_RESCAN_PROGRAMM    
MDAPI_SAVE_PROGRAMM    
MDAPI_SCAN_CURRENT_TP    
MDAPI_SCAN_CURRENT_CAT    
MDAPI_START_OSD    
MDAPI_OSD_DRAWBLOCK    
MDAPI_OSD_SETFONT    
MDAPI_OSD_TEXT    
MDAPI_SEND_OSD_KEY    
MDAPI_STOP_OSD    
MDAPI_START_FILTER Yes Allows a plug-in to receive transport stream packets from a specified PID. TSReader allows up to 256 filters active at any one time. Data is sent as 184 byte packets (i.e. no transport stream header) with 9 packets sent at a time.
MDAPI_STOP_FILTER Yes Stops data flow as a result of the MDAPI_START_FILTER.
MDAPI_DVB_COMMAND Partial TSReader only supports CA key messages to be passed to CSA.DLL. CSA.DLL implements the DVB Common Scrambling Algorithm and is not included with TSReader but can be easily located on the Internet.

Source Issues

I selected the wrong source - how can I change it?

Launch TSReader with the Ctrl key held down - you'll then be asked to choose a source again.