ETSI
TSI TR 101 202 V1.2.1 (2003
1)
2
4.4.2 Asynchronous Data Streaming
Asynchronous Data Streaming is used in the case that the PES mechanism is of advantage for applications that need the
asynchronous transmission of datagrams.
Since no synchronization is necessary for this kind of transmission the stream_id "private_stream_2" (see
ISO/IEC 13818-1 [2]) has been chosen which implicitly excludes the usage of the PES packet header fields. Therefore
the PES_packet_length field is immediately followed by the datagram.
The definition of the datagram format is part of the private implementation ant therefore not subject of the DVB
specification.
4.4.3 Synchronous/Synchronized Data Streaming
In order to meet the requirements of the Synchronous and Synchronized Data Streaming an additional header, specific
to this DVB application profile has been defined (see EN 301 192 [1], table 1).
The field stream_id shall be set to "private_stream_1", allowing for the usage of the PES header fields, especially the
PTS. Usage of the time stamps requires the definition of Access Units. Since this is application dependant it has not
been defined within the DVB data broadcasting specification.
The first byte of this header (which is from MPEG-2 PES point of view the first payload byte) contains the
data_identifier. It is defined in accordance with the specifications for embedding of EBU-data (EN 300 472 [7]) and
DVB-subtitling (EN 300 743 [8]) and indicates the type of Data Streaming (synchronous /synchronized).
A combination of Synchronized and Synchronous Data Streaming in the same PES packet is not allowed. However,
both types of streaming data can be carried as part of a same program in separate PID's.
The field sub_stream_id may be used for private definition.
The two flags PTS_extension_flag and output_data_rate_flag indicate the existence of an output data rate field and of a
field for PTS extension. The usage of these fields is explained below.
The PES_data_packet_header_length indicates the length of the header and allows the addition of private bytes in the
header.
The DTS field in PES header is of no use while the PTS shall be coded in the same way as defined by MPEG in
ETS 300 802 [3].
4.4.4 Synchronous Data Streaming
Synchronous data streaming may be used if the output data rate at the receiver side needs to be very accurate. The
receiver clock is synchronized by the PCR. The 9 bit PTS_extension is needed to position data access units (a bit, a byte
or few bytes depending on how one defines access units) very accurately over a large range of data rates (kbit/s to
Mbit/s). The 9 bits extends the accuracy of the PTS clock from 11 µs to the same accuracy as a 27 MHz clock (37 ns).
Precise positioning of the data is required if multiple data decoders receiving the same data services (and knowing the
latency through the process) have to output the data at the same time in an aligned way, or if it is required to maintain
synchronization in the data output stream following a temporary loss of signal.
The field output_data_rate is used in order to specify the output data rate for the synchronous data stream. With the
28 bit accuracy (instead of the 400 bit/s resolution of 22 bit ES_rate in PES header) it is possible to implement PLL
(with clock down conversion) with a ratio of data output rate to 27 MHz (±30 ppm) covering a wide range of data rates.
The output_data_rate field conveys the bit rate of the regenerated signal for a synchronous data stream. The encoding of
the bit rate of the data stream into the output_data_rate field depends on the application. Applications which require bit
rates which are a multiple of 1 bit per second may encode the data streams bit rate into the output_data_rate field
directly with the units of output_data_rate as bits/second. Applications which require a continuous range of bit rates to
be regenerated within the 30 ppm tolerance specified by MPEG for the 27 MHz system_clock_frequency may encode
the bit rate of the data stream into the output_data_rate field as:
• output_data_rate = bit rate x M/system_clock_frequency;