Make DMA input optional per detector

This commit is contained in:
tian 2026-03-15 01:49:06 +08:00
parent 938f3760a4
commit 53afc006c3
3 changed files with 8 additions and 2 deletions

View File

@ -42,6 +42,7 @@
"rga_gate": "person_shoe_two_stage_balanced",
"rga_max_inflight": 4,
"dst_packed": true,
"use_dma_input": true,
"infer_fps": 2,
"infer_phase_ms": 0,
"model_path": "./models/yolov8n-640.rknn",
@ -86,6 +87,7 @@
"rga_gate": "person_shoe_two_stage_balanced",
"rga_max_inflight": 4,
"dst_packed": true,
"use_dma_input": false,
"infer_fps": 2,
"infer_phase_ms": 250,
"model_path": "./models/shoe_detector_openimages_ppe_v1.rknn",

View File

@ -321,6 +321,7 @@ public:
if (infer_interval_ms_ > 0 && infer_phase_ms_ >= infer_interval_ms_) {
infer_phase_ms_ %= infer_interval_ms_;
}
use_dma_input_ = config.ValueOr<bool>("use_dma_input", use_dma_input_);
if (const SimpleJson* dyn = config.Find("dynamic_roi"); dyn && dyn->IsObject()) {
dynamic_roi_.enable = dyn->ValueOr<bool>("enable", false);
@ -597,7 +598,7 @@ private:
? resized_frame.planes[0].stride
: (resized_frame.stride > 0 ? resized_frame.stride : model_w_ * 3);
const size_t packed_size = static_cast<size_t>(model_w_) * static_cast<size_t>(model_h_) * 3;
if (resized_frame.DmaFd() >= 0 && resized_data) {
if (use_dma_input_ && resized_frame.DmaFd() >= 0 && resized_data) {
model_input_data = resized_data;
model_input_size = resized_frame.data_size > 0 ? resized_frame.data_size : packed_size;
model_input_dma_fd = resized_frame.DmaFd();
@ -816,6 +817,7 @@ private:
int64_t infer_interval_ms_ = 0;
int64_t infer_phase_ms_ = 0;
int64_t last_infer_pts_ms_ = 0;
bool use_dma_input_ = true;
DynamicRoiConfig dynamic_roi_;
std::vector<DetWindow> windows_;
std::vector<uint8_t> input_buf_;

View File

@ -695,6 +695,7 @@ public:
if (infer_interval_ms_ > 0 && infer_phase_ms_ >= infer_interval_ms_) {
infer_phase_ms_ %= infer_interval_ms_;
}
use_dma_input_ = config.ValueOr<bool>("use_dma_input", use_dma_input_);
std::string ver = config.ValueOr<std::string>("model_version", "auto");
if (ver == "v5") {
@ -934,7 +935,7 @@ private:
const int resized_stride = resized_frame.planes[0].stride > 0
? resized_frame.planes[0].stride
: (resized_frame.stride > 0 ? resized_frame.stride : static_cast<int>(input_row));
if (resized_frame.DmaFd() >= 0 && resized_data) {
if (use_dma_input_ && resized_frame.DmaFd() >= 0 && resized_data) {
input.data = resized_data;
input.size = resized_frame.data_size > 0 ? resized_frame.data_size : input_size;
input.width = model_input_w_;
@ -1334,6 +1335,7 @@ private:
int64_t infer_interval_ms_ = 0;
int64_t infer_phase_ms_ = 0;
int64_t last_infer_pts_ms_ = 0;
bool use_dma_input_ = true;
#if defined(RK3588_ENABLE_RKNN)
ModelHandle model_handle_ = kInvalidModelHandle;