Repository navigation
sensing: capture-backend rearchitecture (interface, selection, SIPL adapter) ahead of Argus (draft) - #1428
sensing: capture-backend rearchitecture (interface, selection, SIPL adapter) ahead of Argus (draft)#1428gareth-morgan-nv wants to merge 9 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
98ffdf6 to
5e8731a
Compare
6d1bf9a to
cf8dba3
Compare
5e8731a to
3410931
Compare
0288b95 to
5341f7a
Compare
a35d41d to
99c2446
Compare
5341f7a to
ab263f4
Compare
99c2446 to
e7c9571
Compare
ab263f4 to
b9c18a5
Compare
b9c18a5 to
69d7c23
Compare
e7c9571 to
67c409f
Compare
67c409f to
d45ac3f
Compare
69d7c23 to
82f5c18
Compare
82f5c18 to
c7cbf31
Compare
…rough A vendor-neutral CameraCapture interface, a move-only frame lease and a tagged pixel representation (CUDA RGBA for SIPL, NV12 DMA-BUF for Argus). Header only; nothing uses it yet, so behaviour is unchanged. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
SiplCapture adapts SiplCamera without copying: frames stay the borrowed CUDA RGBA views, which the output still copies out before it returns, after the pacing check as before. SensingCamera and LiveKitVideoOutput now take the interface's frame type; other pixel types are rejected until an encoder input exists. Behaviour is unchanged. Syntax-checked here; the Jetson build and run are not. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
…llback select_camera_backend takes each backend's probe result: an explicit request must match or fail with its own reason; auto takes the only match and otherwise names the --camera-backend override. main.cpp parses the flag and probes SIPL, the only backend built in. Syntax-checked here; Jetson build not run. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
…d encoder stamp Release callbacks must not throw and may run on any thread; a DMA-BUF frame is producer-complete pitch-linear NV12 on return. FrameMeta no longer carries a stamp the FIFO pairing does not use. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
…rom poll, document the flag Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
… as a dropped frame Only EAGAIN and EINTR are the ordinary no-buffer result; any other errno is recorded for poll() to surface. Relies on the Multimedia API plane leaving errno set by the failed ioctl, unverified here (no Jetson); the first Orin run shows whether a healthy encoder trips it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
…able for a match Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
sipl_capture.hpp and the backend-selection test include the headers that moved under core/inc/sensing_core. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
|
✅ Preview deployed: https://NVIDIA.github.io/IsaacCapture/preview/pr-1428/ Built from commit 840e767. It may take a minute for the updated preview to appear. |
840e767 to
da3dcb8
Compare
1269afe to
33b09ed
Compare
|
Closing as superseded: the camera path is now the camera_streamer architecture (SIPL/Argus sender, AVS1 over TCP, PC receiver and LiveKit bridge; see #1473-#1479). Not merged; the branch and commits are kept. 🤖 Generated with Claude Code |
|
This PR is superseded by the camera_streamer PRs:
🤖 Generated with Claude Code |
Description
Draft. Stacked on #1461 (base is
gmorgan/SensingLiveKit, so this diff is only the capture-backend rearchitecture). The Argus backend itself will be a further branch (gmorgan/Argus) on top of this one. There is no Argus SDK, Argus camera or Jetson available to the author, so none of the Argus path exists yet or has been tested. This PR does the part that does not need that hardware.core/camera_capture.hpp): a small vendor-neutralCameraCaptureinterface, a move-onlyFrameLease, and a tagged pixel type (borrowed CUDA RGBA for SIPL, leased NV12 DMA-BUF reserved for Argus). The release and DMA-BUF contracts are written down in the header.SiplCapture): a thin adapter with no extra copy; the output still copies the borrowed frame out after its pacing check, as before.SensingCameraandLiveKitVideoOutputtake the interface's frame type; other pixel types are rejected until an encoder input exists. Behaviour is intended to be unchanged.--camera-backend=auto|sipl|argus): chosen once at startup from each backend's probe result. An explicit request must match or fail with that backend's own reason (no silent fallback);autotakes the only match and otherwise names the override. Only SIPL is built in, soargusfails with "this build does not include that backend".poll()instead of looking like a healthy encoder; removed an unused per-frame stamp.Not done (needs an Orin or an Argus camera)
Type of change
Testing
clang-format-14; the SIPL adapter, selection andmain.cpppass a g++ syntax check.jetson_encoder.cppcould not be syntax-checked here (needs the Multimedia API headers).Checklist
SKIP=check-copyright-year pre-commit run --all-filesgit commit -s) per the DCO🤖 Generated with Claude Code