βMax PTS Interval
According to ETSI TR 101-290 validation guidance, a PTS error is detected when the repetition period of a PTS exceeds 700 ms.
This rule checks how much transport time passes between successive PES packets that carry a PTS on the same PID.
What it checksβ
- groups PES packets by PID
- keeps only PES starts that carry a PTS
- measures the elapsed stream time between successive PTS-bearing packets
- compares each interval against the configured threshold
The default threshold is 700 ms.
Discontinuity indicator handlingβ
If the transport stream sets discontinuity_indicator between the previous PTS-bearing packet and the violating packet on the same PID, the event is still recorded, but the validation result is downgraded to a warning.
This mirrors the handling used by other MPEG-TS timing rules when a declared transport discontinuity explains the timing jump.
β Pass conditionβ
The test passes when no observed PTS repetition interval exceeds the configured threshold.
Example pass message:
No PTS interval above 700 ms was detected.
β Fail conditionβ
The test fails when one or more PTS repetition intervals exceed the configured threshold without a matching discontinuity_indicator.
Example failure:
- previous PTS-bearing PES packet at packet
20 - next PTS-bearing PES packet at packet
40 - measured interval
800 ms - configured threshold
700 ms
β οΈ Warning conditionβ
If all detected interval violations are covered by discontinuity_indicator, the test reports a warning instead of a failure, as it is legal.
Exampleβ
Passing sample resultβ
In this passing example, each PTS repetition interval stays below the configured threshold. With the default 700 ms threshold, no interval is large enough to be reported as a Max PTS Interval violation.
The application chart for this rule focuses on violations, so a real passing result may have no violation points to display. This sample illustrates the expected timing pattern behind a pass: PTS-bearing PES packets are frequent enough for the selected PID.
Failing sample resultβ

The chart shows only PTS interval violations as points on a scatter plot.
The X axis is the byte offset in the file. The Y axis is the measured PTS interval in milliseconds. A dashed horizontal reference line marks the configured threshold, 700 ms by default.
Threshold guidanceβ
Keep the default 700 ms threshold when you want to follow the ETSI TR 101-290 guideline directly.
You may want to lower the threshold when:
- You need stricter encoder timing behavior
- Downstream systems are sensitive to sparse timestamp updates
You may want to raise the threshold when:
- You are working with known low-rate content that emits PTS less frequently
- You are reviewing streams where sparse timestamps are expected and accepted by your workflow
Recommended PTS Intervals by Frame Rateβ
In most compliant MPEG-TS streams, PTS should be present for every access unit (frame) for video, and for every KLV packet when metadata is time-relevant (SYNC KLV).
Video Streams (Per Frame)β
| Frame Rate | Frame Duration | Recommended PTS Interval | Notes |
|---|---|---|---|
| 60 fps | ~16.7 ms | Every frame (~16β17 ms) | Required for smooth playback and sync |
| 50 fps | 20 ms | Every frame (20 ms) | Common in broadcast (PAL regions) |
| 30 fps | ~33.3 ms | Every frame (~33 ms) | Typical UAV / ISR streams |
| 25 fps | 40 ms | Every frame (40 ms) | DVB-style timing |
| 24 fps | ~41.7 ms | Every frame (~42 ms) | Cinema-style encoding |
| 15 fps | ~66.7 ms | Every frame (~67 ms) | Low-bandwidth UAV feeds |
| 10 fps | 100 ms | Every frame (100 ms) | Edge / constrained links |
| 5 fps | 200 ms | Every frame (200 ms) | Very low-rate telemetry video |
Key Rule (Video)β
- PTS should appear on every frame (access unit)
- Missing PTS across multiple frames is typically a real encoder issue, not just a warning
KLV Metadata (MISB ST 0601 / ST 0903)β
| Metadata Rate | Recommended PTS Interval | Notes |
|---|---|---|
| Per frame | Same as video frame rate | Ideal case (1 KLV per frame) |
| 30 Hz | ~33 ms | Common ISR telemetry |
| 10 Hz | 100 ms | Reduced metadata rate |
| 1 Hz | 1000 ms | Minimal tracking updates |
Key Rule (KLV)β
- Each KLV packet should carry a PTS aligned to its emission time
- It does not need to match every video frame, but:
- Must be monotonic
- Should be frequent enough for downstream systems (tracking, overlay, sync)
Practical Validation Guidanceβ
-
Video:
- Expect PTS per frame
- Error if gap > 2Γ frame duration
-
KLV:
- Expect PTS per packet
- Warning if gap > 2Γ expected metadata rate
TR 101-290 Alignmentβ
- The 700 ms threshold is:
- A coarse broadcast safety limit
- Not suitable for UAV / ISR precision systems
Suggested Thresholds (Real-World UAV Systems)β
| Use Case | Recommended Max PTS Gap |
|---|---|
| High-quality ISR video | β€ 2 frames |
| General UAV streaming | β€ 3β5 frames |
| Low bitrate links | β€ 500 ms |
| TR 101-290 compliance | β€ 700 ms |
Summaryβ
- Video: PTS β every frame (strict requirement)
- KLV: PTS β every packet (strongly recommended)
- 700 ms is too loose for UAV/ISR β use frame-based thresholds instead
Test fileβ
- mpegts-max-pts-interval.ts