8MP/30FPS Streaming Failures on Production Orin: Custom SIPL OOM (Status 10) and DriveWorks Serializer “Not Supported” (DRIVE OS 6.0.10)
Environment:
-
Hardware: DRIVE AGX Orin P3710-0010
-
OS: DRIVE OS 6.0.10 (Linux 5.15.122-rt-tegra)
-
CMA Memory: Total 256 MB (
CmaTotal: 262144 kB) -
Sensors: Valeo 8MP (IMX728)
The Core Contradiction:
-
Official Sample Success:
nvsipl_camera -p V1SIM728S3RU4070HC00_CPHY_x4works perfectly with four 8MP sensors active simultaneously in the 256MB CMA pool. -
Custom Path Failures: Every attempt to implement a custom streaming or encoding pipeline for even one 8MP sensor has failed.
Path 1: The DriveWorks “Dead End”
I initially attempted to use the DriveWorks dwImageSerializer and dwSensorSerializer APIs to stream H.265/RTP, but hit an immediate roadblock:
-
dwSensorSerializer: ReturnsDW_INVALID_ARGUMENT. Internal logs explicitly state: “StreamSink type is not supported” fortype=rtp. -
dwImageSerializer: Previously tested and failed to initialize for RTP/H.265 on this production build. -
Result: DriveWorks appears to have restricted RTP sink support on this specific production kernel/hardware combination.
Path 2: The SIPL/NvMedia OOM (Status 10)
Moving to a lower-level SIPL implementation to bypass DriveWorks restrictions resulted in persistent memory allocation failures:
-
Failure:
CImageManager::AllocatereturnsNVSIPL_STATUS_OUT_OF_MEMORY(Status 10) duringNvSciBufObjAlloc. -
Minimized Setup: This occurs even with only 1 sensor enabled,
ISP_IMAGE_POOL_SIZEreduced to 2U, and usage flags set to0x40ULL(SIPL only). -
Observation: Despite
meminfoshowing ~200MB ofCmaFree, the allocation for a single 8MP buffer (~12.5MB) fails.
Current Configuration (Minimized for Testing):
-
Usage Flags: Set to
0x40ULL(SIPL only). Video Encoder flags (0x04) have been removed to isolate the issue. -
Buffer Count:
ISP_IMAGE_POOL_SIZEreduced to 2U. -
Sensor Mask:
uLinkMask = 0x0001(Only Link 0 enabled). -
Display: Disabled (no
-dflag) to prevent WFD buffer allocation. -
System State: GDM stopped, ISP/VI clocks maxed, and
/dev/shm/nvsci*cleared.
Technical Observations:
The failure occurs during the NvSciBufObjAlloc step immediately following GetImageAttributes and NvSciBufAttrListReconcile.
-
Calculated Memory: 1 sensor $\times$ 2 buffers $\times$ 12.5 MB $\approx$ 25 MB.
-
Available Memory:
CmaFreereported at ~200 MB. -
Despite having 8x the required memory available, the allocation fails with Status 10.
Questions for NVIDIA Engineers:
-
CMA Architecture: Why can the official
nvsipl_camerasample allocate buffers for 4x 8MP sensors (~16+ buffers total) while a custom app fails to allocate for 2 buffers on a single sensor? -
API Restrictions: Is the
rtpStreamSink for DriveWorks serializers intentionally disabled or unsupported on the P3710-0010 build? -
Memory Alignment: Does the production kernel enforce stricter alignment or contiguous requirements for 8MP (3840x2160) NvSciBuf objects that differ from the official samples?
-
ISP Scratchpad: Does the 8MP platform configuration reserve a large “internal” chunk of CMA that is not accounted for in the user-defined pool size, leading to these OOMs?
- log.txt (120.8 KB)