# ETSI TR 101 290 — Measurement Indicators (Tables 5.0a / 5.0b / 5.0c)
Spec: **ETSI TR 101 290 V1.4.1 (2020-06)** — *Digital Video Broadcasting (DVB);
Measurement guidelines for DVB systems*, clause **5.2** (Measurement and analysis
of the MPEG-2 Transport Stream).
Provenance: transcribed from the vendored PDF
`private/specs/etsi_tr_101_290_v01.04.01_dvb_measurement.pdf`, pages 22–27
(Tables 5.0a/5.0b/5.0c rendered directly, not `pdftotext`-scraped). Preconditions
are reproduced faithfully; the "Reference" column keeps the spec's normative
citations. This file is the spec-grounding source for `dvb-conformance`'s
`Indicator` set — every implemented indicator cites the clause number here.
The three priority levels (clause 5.2):
- **First priority** (§5.2.1) — *necessary for de-codability* (basic monitoring).
- **Second priority** (§5.2.2) — *recommended for continuous or periodic monitoring*.
- **Third priority** (§5.2.3) — *application-dependent monitoring*.
Fixed SI PIDs referenced throughout (ISO/IEC 13818-1 + EN 300 468): PAT `0x0000`,
CAT `0x0001`, NIT `0x0010`, SDT/BAT `0x0011`, EIT `0x0012`, RST `0x0013`,
TDT/TOT `0x0014`, null `0x1FFF`.
---
## Table 5.0a — MPEG-2 TS parameters of 1st priority (§5.2.1)
| No. | Indicator | Precondition | Reference |
|-----|-----------|--------------|-----------|
| 1.1 | `TS_sync_loss` | Loss of synchronization with consideration of hysteresis parameters | ISO/IEC 13818-1 clause 2.4.3.3 and annex G.1 |
| 1.2 | `Sync_byte_error` | Sync_byte not equal 0x47 | ISO/IEC 13818-1 clause 2.4.3.3 |
| 1.3 | `PAT_error` | PID 0x0000 does not occur at least every 0,5 s; a PID 0x0000 does not contain a table_id 0x00 (i.e. a PAT); scrambling_control_field is not 00 for PID 0x0000 | ISO/IEC 13818-1 clauses 2.4.4.3, 2.4.4.4 |
| 1.3.a (note 1) | `PAT_error_2` | Sections with table_id 0x00 do not occur at least every 0,5 s on PID 0x0000; section with table_id other than 0x00 found on PID 0x0000; scrambling_control_field is not 00 for PID 0x0000 | ETSI TS 101 154 clause 4.1.7; ISO/IEC 13818-1 clauses 2.4.4.3, 2.4.4.4 |
| 1.4 | `Continuity_count_error` | Incorrect packet order; a packet occurs more than twice; lost packet | ISO/IEC 13818-1 clauses 2.4.3.2, 2.4.3.3 |
| 1.5 | `PMT_error` | Sections with table_id 0x02 (i.e. a PMT) do not occur at least every 0,5 s on the PID which is referred to in the PAT; scrambling_control_field is not 00 for all PIDs containing sections with table_id 0x02 (i.e. a PMT) | ISO/IEC 13818-1 clauses 2.4.4.3, 2.4.4.4, 2.4.4.8 |
| 1.5.a (note 2) | `PMT_error_2` | Sections with table_id 0x02 (i.e. a PMT) do not occur at least every 0,5 s on each program_map_PID which is referred to in the PAT; scrambling_control_field is not 00 for all packets containing information of sections with table_id 0x02 (i.e. a PMT) on each program_map_PID which is referred to in the PAT | ETSI TS 101 154 clause 4.1.7 (note 3); ISO/IEC 13818-1 clauses 2.4.4.3, 2.4.4.4, 2.4.4.8 |
| 1.6 | `PID_error` | Referred PID does not occur for a user specified period | ISO/IEC 13818-1 clause 2.4.4.8 |
- NOTE 1: Recommended for future implementations as a replacement of 1.3.
- NOTE 2: Recommended for future implementations as a replacement of 1.5; this excludes specifically network_PIDs.
- NOTE 3: In ETSI TS 101 154 it is recommended that the interval between two sections should not exceed 100 ms. For many applications it may be sufficient to check that the interval is no longer than 0,5 s.
---
## Table 5.0b — MPEG-2 TS parameters of 2nd priority (§5.2.2)
| No. | Indicator | Precondition | Reference |
|-----|-----------|--------------|-----------|
| 2.1 | `Transport_error` | Transport_error_indicator in the TS-Header is set to "1" | ISO/IEC 13818-1 clauses 2.4.3.2, 2.4.3.3 |
| 2.2 | `CRC_error` | CRC error occurred in CAT, PAT, PMT, NIT, EIT, BAT, SDT or TOT table | ISO/IEC 13818-1 clause 2.4.4, annex A; ETSI EN 300 468 clause 5.2 |
| 2.3 | `PCR_error` (notes 1, 2) | PCR discontinuity of more than 100 ms occurring without specific indication; time interval between two consecutive PCR values more than 100 ms | ISO/IEC 13818-1 clauses 2.4.3.4, 2.4.3.5; ISO/IEC 13818-4 clause 9.11.3; ETSI TS 101 154 clause 4.1.5.3 |
| 2.3a | `PCR_repetition_error` (notes 1, 2) | Time interval between two consecutive PCR values more than 100 ms | ETSI TS 101 154 clause 4.1.5.3 |
| 2.3b | `PCR_discontinuity_indicator_error` | The difference between two consecutive PCR values (PCRᵢ₊₁ − PCRᵢ) is outside the range of 0…100 ms without the discontinuity_indicator set | ISO/IEC 13818-1 clauses 2.4.3.4, 2.4.3.5; ISO/IEC 13818-4 clause 9.1.1.3 |
| 2.4 | `PCR_accuracy_error` | PCR accuracy of selected programme is not within ±500 ns | ISO/IEC 13818-1 clause 2.4.2.2 |
| 2.5 | `PTS_error` (note 3) | PTS repetition period more than 700 ms | ISO/IEC 13818-1 clauses 2.4.3.6, 2.4.3.7, 2.7.4 |
| 2.6 | `CAT_error` | Packets with transport_scrambling_control not 00 present, but no section with table_id = 0x01 (i.e. a CAT) present; section with table_id other than 0x01 (i.e. not a CAT) found on PID 0x0001 | ISO/IEC 13818-1 clause 2.4.4 |
- NOTE 1: The old version of PCR_error (2.3) is a combination of the more specific errors PCR_repetition_error (2.3.a) and PCR_discontinuity_indicator_error (2.3.b) by a logical 'or' function. It is kept in the present document for reasons of consistency of existing implementations. For new implementations it is recommended that the indicators 2.3.a and 2.3.b are used only.
- NOTE 2: The limitation to 40 ms in the 'Preconditions' of 2.3 PCR_error and 2.3a PCR_repetition_error was removed from ETSI TS 101 154 in 2005. The respective clause there now refers only to the 100 ms limitation in [i.1] which is recommended to be applied generally.
- NOTE 3: The limitation to 700 ms should not be applied to still pictures.
---
## Table 5.0c — MPEG-2 TS parameters of 3rd priority (§5.2.3)
| No. | Indicator | Precondition | Reference |
|-----|-----------|--------------|-----------|
| 3.1 | `NIT_error` (note 2) | Section with table_id other than 0x40 or 0x41 or 0x72 (i.e. not an NIT or ST) found on PID 0x0010; no section with table_id 0x40 or 0x41 (i.e. an NIT) in PID value 0x0010 for more than 10 s | ETSI EN 300 468 clause 5.2.1; ETSI TR 101 211 clauses 4.1, 4.4 |
| 3.1.a | `NIT_actual_error` | Section with table_id other than 0x40 or 0x41 or 0x72 (i.e. not an NIT or ST) found on PID 0x0010; no section with table_id 0x40 (i.e. an NIT_actual) in PID 0x0010 for more than 10 s; any two sections with table_id = 0x40 (NIT_actual) occur on PID 0x0010 within a specified value (25 ms or lower) | ETSI EN 300 468 clauses 5.2.1, 5.1.4; ETSI TR 101 211 clauses 4.1, 4.4 |
| 3.1.b | `NIT_other_error` | Interval between sections with the same section_number and table_id = 0x41 (NIT_other) on PID 0x0010 longer than a specified value (10 s or higher) | ETSI TR 101 211 clause 4.4 |
| 3.2 | `SI_repetition_error` | Repetition rate of SI tables outside of specified limits | ETSI EN 300 468 clause 5.1.4; ETSI TR 101 211 clause 4.4 |
| 3.3 | `Buffer_error` | `TB_buffering_error` (overflow of transport buffer TBn); `TBsys_buffering_error` (overflow of transport buffer for system information TBsys); `MB_buffering_error` (overflow of multiplexing buffer MBn, or underflow of MBn if the vbv_delay method is used); `EB_buffering_error` (overflow of elementary stream buffer EBn, or underflow of EBn if the leak method is used, though low_delay_flag and DSM_trick_mode_flag are set to 0, else vbv_delay method underflow of EBn); `B_buffering_error` (overflow or underflow of main buffer Bn); `Bsys_buffering_error` (overflow of PSI input buffer Bsys) | ISO/IEC 13818-1 clause 2.4.2.3; ISO/IEC 13818-4 clauses 9.11.2, 9.1.4 |
| 3.4 | `Unreferenced_PID` | PID (other than PAT, CAT, CAT_PIDs, PMT_PIDs, NIT_PID, SDT_PID, TDT_PID, EIT_PID, RST_PID, reserved_for_future_use PIDs, or PIDs user defined as private data streams) not referred to by a PMT within 0,5 s (note 1) | ETSI EN 300 468 clause 5.1.3 |
| 3.4.a | `Unreferenced_PID` | PID (other than PMT_PIDs, PIDs with numbers between 0x00 and 0x1F or PIDs user defined as private data streams) not referred to by a PMT or a CAT within 0,5 s | ETSI EN 300 468 clause 5.1.3 |
| 3.5 | `SDT_error` (note 3) | Sections with table_id = 0x42 (SDT, actual TS) not present on PID 0x0011 for more than 2 s; sections with table_ids other than 0x42, 0x46, 0x4A or 0x72 found on PID 0x0011 | ETSI EN 300 468 clause 5.1.3; ETSI TR 101 211 clauses 4.1, 4.4 |
| 3.5.a | `SDT_actual_error` | Sections with table_id = 0x42 (SDT, actual TS) not present on PID 0x0011 for more than 2 s; sections with table_ids other than 0x42, 0x46, 0x4A or 0x72 found on PID 0x0011; any two sections with table_id = 0x42 (SDT_actual) occur on PID 0x0011 within a specified value (25 ms or lower) | ETSI EN 300 468 clauses 5.2.3, 5.1.4; ETSI TR 101 211 clauses 4.1, 4.4 |
| 3.5.b | `SDT_other_error` | Interval between sections with the same section_number and table_id = 0x46 (SDT, other TS) on PID 0x0011 longer than a specified value (10 s or higher) | ETSI TR 101 211 clause 4.4 |
| 3.6 | `EIT_error` (note 4) | Sections with table_id = 0x4E (EIT-P/F, actual TS) not present on PID 0x0012 for more than 2 s; sections with table_ids other than in the range 0x4E–0x6F or 0x72 found on PID 0x0012 | ETSI EN 300 468 clause 5.1.3; ETSI TR 101 211 clauses 4.1, 4.4 |
| 3.6.a | `EIT_actual_error` | Section '0' with table_id = 0x4E (EIT-P, actual TS) not present on PID 0x0012 for more than 2 s; section '1' with table_id = 0x4E (EIT-F, actual TS) not present on PID 0x0012 for more than 2 s; sections with table_ids other than in the range 0x4E–0x6F or 0x72 found on PID 0x0012; any two sections with table_id = 0x4E (EIT-P/F, actual TS) occur on PID 0x0012 within a specified value (25 ms or lower) | ETSI EN 300 468 clauses 5.2.4, 5.1.4; ETSI TR 101 211 clauses 4.1, 4.4 |
| 3.6.b | `EIT_other_error` | Interval between sections '0' with table_id = 0x4F (EIT-P, other TS) on PID 0x0012 longer than a specified value (10 s or higher); interval between sections '1' with table_id = 0x4F (EIT-F, other TS) on PID 0x0012 longer than a specified value (10 s or higher) | ETSI TR 101 211 clause 4.4 |
| 3.6.c | `EIT_PF_error` | If either section ('0' or '1') of each EIT P/F sub table is present both should exist. Otherwise EIT_PF_error should be indicated | ETSI EN 300 468 clause 5.2.4 |
| 3.7 | `RST_error` | Sections with table_id other than 0x71 or 0x72 found on PID 0x0013; any two sections with table_id = 0x71 (RST) occur on PID 0x0013 within a specified value (25 ms or lower) | ETSI EN 300 468 clause 5.1.3 |
| 3.8 | `TDT_error` | Sections with table_id = 0x70 (TDT) not present on PID 0x0014 for more than 30 s; section with table_id other than 0x70, 0x72 (ST) or 0x73 (TOT) found on PID 0x0014; any two sections with table_id = 0x70 (TDT) occur on PID 0x0014 within a specified value (25 ms or lower) | ETSI EN 300 468 clauses 5.1.3, 5.2.6; ETSI TR 101 211 clauses 4.1, 4.4 |
| 3.9 | `Empty_buffer_error` | Transport buffer (TBn) not empty at least once per second, or transport buffer for system information (TBsys) not empty at least once per second, or (if the leak method is used) multiplexing buffer (MBn) not empty at least once per second | ISO/IEC 13818-1 clauses 2.4.2.3, 2.4.2.6; ISO/IEC 13818-9 annex E; ISO/IEC 13818-4 clauses 9.1.1.2, 9.1.4 |
| 3.10 | `Data_delay_error` | Delay of data (except still picture video data) through the T-STD buffers superior to 1 second; or delay of still picture video data through the T-STD buffers superior to 60 s | ISO/IEC 13818-1 clauses 2.4.2.3, 2.4.2.6 |
- NOTE 1: It is assumed that transition states are limited to 0,5 s, and these transitions should not cause error indications.
- NOTE 2: The old version of NIT_error (3.1) has been split into the more specific errors NIT_actual_error (3.1.a) and NIT_other_error (3.1.b). The old version is kept in the document for reasons of consistency of existing implementations. For new implementations it is recommended that the indicators 3.1.a and 3.1.b are used only.
- NOTE 3: The old version of SDT_error (3.5) has been split into the more specific errors SDT_actual_error (3.5.a) and SDT_other_error (3.5.b). The old version is kept in the present document for reasons of consistency of existing implementations. For new implementations it is recommended that the indicators 3.5.a and 3.5.b are used only.
- NOTE 4: The old version of EIT_error (3.6) has been split into the more specific errors EIT_actual_error (3.6.a), EIT_other_error (3.6.b) and EIT_PF_error (3.6.c). The old version is kept in the present document for reasons of consistency of existing implementations. For new implementations it is recommended that the indicators 3.6.a, 3.6.b and 3.6.c are used only.
---
## Coverage in `dvb-conformance`
The monitor is **sans-IO with a caller-supplied clock** (`feed(packet, t)`). A
partial T-STD buffer model (see `dvb-conformance/src/tstd.rs` and
`dvb-conformance/docs/h222_0-tstd-buffer-model.md`) now drives indicators 3.3
(TBsys overflow), 3.9 (TBn/TBsys empty), and 3.10 (TBn/TBsys delay). The one
remaining architectural gap is hardware arrival timing — without it, indicator
2.4 `PcrAccuracyError` (±500 ns, ISO/IEC 13818-1 §2.4.2.2) cannot be computed
honestly.
**Implemented** (see the `Indicator` enum): 1.1, 1.2, 1.3.a, 1.4, 1.5.a, 1.6 (P1);
2.1, 2.2, 2.3a, 2.3b, 2.5, 2.6 (P2); 3.1, 3.3 (TBsys overflow + empty/delay), 3.4, 3.5, 3.6, 3.7,
3.8 + 3.2 max-interval, 3.9 (TBn/TBsys empty), 3.10 (TBn/TBsys delay) (P3).
Indicator 2.4 `PcrAccuracyError` exists in the enum for documentation
completeness but is **never emitted** — it requires hardware arrival
timestamps with ±500 ns resolution (ISO/IEC 13818-1 §2.4.2.2). A
packet-index-derived timing estimate cannot honestly resolve 500 ns. A
false positive is worse than a gap (cf. the withdrawn `PtsCheck`).
**Deferred (feasible, not yet done):** None — all previously deferred P3
dimensions were completed in #736 (25 ms min-gap, `_other` repetition,
EIT P/F pairing).
**Partially implemented (needs descriptor parsing):** 3.3 TBn overflow (needs
coded bitrate Rxn from multiplex_buffer_descriptor), MBn/EBn/Bn/Bsys
overflow/underflow (needs codec buffer sizes); 3.9 MBn empty check (needs leak
method parameters); 3.10 still-picture 60 s threshold differentiation (not
implemented — requires PMT stream_type detection from descriptors to know
which PIDs carry still-picture video; the monitor applies only the 1 s limit).