- Hardware Platform (Jetson / GPU): GPU — NVIDIA A10 (HPE DL380 Gen10, Ubuntu, running inside Docker)
- DeepStream Version: 9.1.0
- JetPack Version (valid for Jetson only): n/a
- TensorRT Version: 10.14.1.48 (cuda13.0)
- NVIDIA GPU Driver Version (valid for GPU only): 595.71.05
- Issue Type (questions, new requirements, bugs): question (possibly bug)
- How to reproduce the issue?: Custom Python app built on DeepStream Service Maker. Pipeline:
nvmultiurisrcbin(RTSP over TCP, ~33 thermal Hikvision DS-2TD H.264/H.265 streams, 1280x720 @ ~25 fps) →nvinfer(custom RF-DETR parser, batch-size 35, 576×576 TensorRT engine). Some streams intermittently deliver heavily smeared/corrupted decoded frames (macroblock artifacts across most of the frame, see attached screenshots) that persist until the next clean I-frame. The corruption is already present in the decoded NV12 surface;nvinferruns on these frames and produces false detections. Config files and GST_DEBUG log can be attached on request. - Requirement details (new requirement): n/a
Issue: Some streams intermittently produce heavily smeared/corrupted decoded frames macroblock artifacts across most of the frame (screenshot attached), consistent with reference-frame corruption after packet loss or a bad keyframe. The corruption persists over multiple frames until the next clean I-frame. nvinfer still runs on these frames and produces (false) detections.
I normally only see this kind of corruption when a camera is starting up (a “warm-up” phase after the RTSP connection is established). In my pipeline, however, the batch keeps running continuously and the connection should not be dropped: as far as I understand, nvmultiurisrcbin does not repeatedly re-request the RTSP stream the session stays open the whole time. So I’m unsure whether the corruption is already present in the data going into the pipeline (camera/network side), or whether the pipeline itself (decoder / batching) is causing it.
Questions:
- Are there configurations I can apply within my pipeline (
nvmultiurisrcbin,nvv4l2decoder,nvstreammux) to prevent this? - Is it possible to filter these frames out before they reach
nvinfer? For example, can I read the decoded frame data (or decoder/RTP metadata) and determine that a frame is already corrupt before it enters the batch?
