Incremental component playground for proving out a DeepStream-based replacement for the production GStreamer + nvcodec + Qt OpenGL pipeline.
This repo deliberately avoids being one big application. Each subdirectory
under components/ is an isolated, independently buildable, independently
runnable prototype that proves exactly one capability. A component only
graduates to "ready for integration" after its success criteria (in its own
README.md) are met on real hardware.
Integration is the disease this repo tries to cure. We will not write a multi-thousand-line app and then debug it as a unit. We will land each piece on its own, prove it, document its contract, and only then compose.
DeepstreamDemo/
├── README.md this file
├── docs/
│ ├── architecture.md the sub-project rules
│ └── component-template.md what every new component must contain
└── components/
├── 01_qt_eglimage_zerocopy/ P0.1: NVMM → Qt OpenGL GPU-only display
├── 02_nvurisrcbin_reconnect/ P0.2: single RTSP source + reconnect
├── 03_latency_probe/ P0.3: source→paint latency measurement contract
├── 04_multi_rtsp_widgets/ P0.4: independent multi-RTSP widget proof
├── 05_selective_yolo_infer/ P0.5: per-stream selective YOLO inference
├── 06_dual_4k_stitch_restream/ P0.6: dual 4K GPU stitch + restream
└── 07_full_pressure_integration/ P0.7: 8x 1080p + 1x 4K YOLO + 2x 4K stitch in one app
| # | Name | Proves | Status |
|---|---|---|---|
| 01 | qt_eglimage_zerocopy |
NVMM GstBuffer → CUDA-GL interop → Qt QOpenGLWidget |
ready |
| 02 | nvurisrcbin_reconnect |
Single RTSP source with reliable reconnect over 01 | ready |
| 03 | latency_probe |
Reproducible source→paint latency segments (decode/queue, upload/paint, end-to-end) usable as a baseline by 04+ | ready |
| 04 | multi_rtsp_widgets |
Multiple independent RTSP streams displayed in separate Qt widgets with per-stream reconnect/failure isolation | draft |
| 05 | selective_yolo_infer |
Per-stream selective YOLO inference (nvstreammux/nvinfer/nvdsosd) on a subset of P0.4 panels with runtime mode flips and failure isolation | ready |
| 06 | dual_4k_stitch_restream |
Two 4K RTSP inputs stitched top-bottom in GPU device memory, previewed locally, and restreamed via RTSP RECORD | ready |
| 07 | full_pressure_integration |
First integration component: 8x 1080p raw + 1x 4K YOLO + 2x 4K stitch concurrently in one Qt app | ready |
- Copy
docs/component-template.mdintocomponents/NN_descriptive_name/README.md. - Fill in the Goal, Architecture, Success Criteria, and Known Gotchas sections.
- Add a self-contained
CMakeLists.txt. Do not depend on a top-level CMake project — each component must build standalone. - Land the code. Run it. Tick off the success criteria in the README before declaring it ready.
See docs/architecture.md for the discipline rules.