diff --git a/plugins/input_rtsp/input_rtsp_node.cpp b/plugins/input_rtsp/input_rtsp_node.cpp index d68df36..455029f 100644 --- a/plugins/input_rtsp/input_rtsp_node.cpp +++ b/plugins/input_rtsp/input_rtsp_node.cpp @@ -597,7 +597,10 @@ private: auto try_group = [&](MppBufferType t) -> bool { return mpp_buffer_group_get(&group, t, MPP_BUFFER_INTERNAL, MODULE_TAG, __FUNCTION__) == MPP_OK; }; - if (!try_group(static_cast(MPP_BUFFER_TYPE_DMA_HEAP | MPP_BUFFER_FLAGS_CACHABLE)) && + // Prefer DMA32 buffers to keep physical addresses <4GB; some RGA drivers can't map >4GB. + if (!try_group(static_cast(MPP_BUFFER_TYPE_DMA_HEAP | MPP_BUFFER_FLAGS_CACHABLE | MPP_BUFFER_FLAGS_DMA32)) && + !try_group(static_cast(MPP_BUFFER_TYPE_DMA_HEAP | MPP_BUFFER_FLAGS_DMA32)) && + !try_group(static_cast(MPP_BUFFER_TYPE_DMA_HEAP | MPP_BUFFER_FLAGS_CACHABLE)) && !try_group(static_cast(MPP_BUFFER_TYPE_DMA_HEAP)) && !try_group(static_cast(MPP_BUFFER_TYPE_DRM | MPP_BUFFER_FLAGS_CACHABLE)) && !try_group(static_cast(MPP_BUFFER_TYPE_DRM)) &&