Transportstream over HTTP - SI-data handling not correct
Posted: 29 May 2006 09:36
Hi,
while making a small HTTP-streaming server for a DVB-compliant satellite receiver (STB), I found 2 problems in VLC related to the SI-data handling. But first...
VLC version 0.8.5
OS: Windows XP / SP2
From the beginning... The streaming server on the STB provides a striped down Transportstream, a remultiplexed version which only contains all the streams from the current selected service. To make sure, VLC only see this one service, the server generates a new PAT at PID 0x0000, which has only the pointer to the PMT-PID of that service. The PMT is a copy of the original one received via satellite.
Problem 1: If the user changes to a different service on the STB, but on the same transponder, VLC ignores the new PAT, if the stransportstream_id and the version_number is identical to the id's from the previous PAT. VLC also ignares the new PAT, if the version_number is different to the previous one, as long as the continious_counter in the transportstream-header is the same. That's not nice, because in real life on a satellite, it can happen, that both the version_number in the PAT and the first continuous_counter values are identical to the old PAT.
Problem 2: VLC is able to process the EPG-data on PID 0x0012. If my server includes this data into the transportstream, I get the name of the current event in the lower status line of VLC and in the "Now Playing" entry in the "Stream and Media Info" window. But in this case, VLC lists all services for which EPG-data is present, in the Navigation menu by program numbers. This is not, what is defined in ISO 13818 part 1 (MPEG-2 system) and ETSI EN 300 468 (DVB SI). The PAT is the main table, which tells the STB/PC-application, which services are present in the transportstream. The EPG-SI data should not be used to determine available services. Additionally, if the EPG-SI data is present, VLC begins to ignore the PAT, even if the version-number and the continious_counter changes. The same happens, if the server provides the SDT on PID 0x0011. Also the SDT is not defined to be uses to detect the available services in the transportstream.
best regards
Micha
while making a small HTTP-streaming server for a DVB-compliant satellite receiver (STB), I found 2 problems in VLC related to the SI-data handling. But first...
VLC version 0.8.5
OS: Windows XP / SP2
From the beginning... The streaming server on the STB provides a striped down Transportstream, a remultiplexed version which only contains all the streams from the current selected service. To make sure, VLC only see this one service, the server generates a new PAT at PID 0x0000, which has only the pointer to the PMT-PID of that service. The PMT is a copy of the original one received via satellite.
Problem 1: If the user changes to a different service on the STB, but on the same transponder, VLC ignores the new PAT, if the stransportstream_id and the version_number is identical to the id's from the previous PAT. VLC also ignares the new PAT, if the version_number is different to the previous one, as long as the continious_counter in the transportstream-header is the same. That's not nice, because in real life on a satellite, it can happen, that both the version_number in the PAT and the first continuous_counter values are identical to the old PAT.
Problem 2: VLC is able to process the EPG-data on PID 0x0012. If my server includes this data into the transportstream, I get the name of the current event in the lower status line of VLC and in the "Now Playing" entry in the "Stream and Media Info" window. But in this case, VLC lists all services for which EPG-data is present, in the Navigation menu by program numbers. This is not, what is defined in ISO 13818 part 1 (MPEG-2 system) and ETSI EN 300 468 (DVB SI). The PAT is the main table, which tells the STB/PC-application, which services are present in the transportstream. The EPG-SI data should not be used to determine available services. Additionally, if the EPG-SI data is present, VLC begins to ignore the PAT, even if the version-number and the continious_counter changes. The same happens, if the server provides the SDT on PID 0x0011. Also the SDT is not defined to be uses to detect the available services in the transportstream.
best regards
Micha