Skip to content

Commit dc8881c

Browse files
committed
adaptation rockchip image
1 parent 46919f7 commit dc8881c

File tree

8 files changed

+60
-24
lines changed

8 files changed

+60
-24
lines changed

CMake/FindROCKCHIP.cmake

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,41 @@ else()
99
endif()
1010

1111
find_path(ROCKCHIP_RGA_INCLUDE NAMES im2d.h rga.h
12-
HINTS ${HINTS_ROCKCHIP_PATH}/rk-rga/include)
12+
HINTS ${HINTS_ROCKCHIP_PATH}/rga/include)
1313
mark_as_advanced(ROCKCHIP_RGA_INCLUDE)
1414

1515
find_path(ROCKCHIP_MPP_INCLUDE NAMES rk_mpi.h rk_type.h
16-
HINTS ${HINTS_ROCKCHIP_PATH}/rkmpp/include/rockchip)
16+
HINTS ${HINTS_ROCKCHIP_PATH}/rkmpp/include)
1717
mark_as_advanced(ROCKCHIP_MPP_INCLUDE)
1818

19-
find_path(RKNN_INCLUDE NAMES rknn_api.h
20-
HINTS ${HINTS_ROCKCHIP_PATH}/rknn/include)
21-
mark_as_advanced(RKNN_INCLUDE)
19+
find_path(RKNPU_INCLUDE NAMES rknn_api.h
20+
HINTS ${HINTS_ROCKCHIP_PATH}/rknpu/rknn-api/librknn_api/include)
21+
mark_as_advanced(RKNPU_INCLUDE)
2222

23-
find_path(RKNPU2_INCLUDE NAMES rknn_api.h
24-
HINTS ${HINTS_ROCKCHIP_PATH}/rknnrt/include)
25-
mark_as_advanced(RKNPU2_INCLUDE)
23+
find_library(RKNPU_LIBRARY NAMES rknn_api HINTS ${HINTS_ROCKCHIP_PATH}/rknpu/rknn-api/librknn_api/Linux/lib64/)
24+
mark_as_advanced(RKNPU_LIBRARY)
2625

27-
find_library(RKNN_LIBRARY NAMES rknn_api HINTS ${HINTS_ROCKCHIP_PATH}/rknn/lib)
28-
mark_as_advanced(RKNN_LIBRARY)
26+
if(EXISTS ${HINTS_ROCKCHIP_PATH}/rknpu2/runtime/RK3588)
27+
find_path(RKNPU2_INCLUDE NAMES rknn_api.h
28+
HINTS ${HINTS_ROCKCHIP_PATH}/rknpu2/runtime/RK3588/Linux/librknn_api/include)
29+
mark_as_advanced(RKNPU2_INCLUDE)
2930

30-
find_library(RKNPU2_LIBRARY NAMES rknnrt HINTS ${HINTS_ROCKCHIP_PATH}/rknnrt/lib)
31-
mark_as_advanced(RKNPU2_LIBRARY)
31+
find_library(RKNPU2_LIBRARY NAMES rknnrt HINTS ${HINTS_ROCKCHIP_PATH}/rknpu2/runtime/RK3588/Linux/librknn_api/aarch64)
32+
mark_as_advanced(RKNPU2_LIBRARY)
33+
message(STATUS "rk3588 platform")
34+
elseif(EXISTS ${HINTS_ROCKCHIP_PATH}/rknpu2/runtime/RK356X)
35+
find_path(RKNPU2_INCLUDE NAMES rknn_api.h
36+
HINTS ${HINTS_ROCKCHIP_PATH}/rknpu2/runtime/RK356X/Linux/librknn_api/include)
37+
mark_as_advanced(RKNPU2_INCLUDE)
3238

33-
find_library(RKRGA_LIBRARY NAMES rga HINTS ${HINTS_ROCKCHIP_PATH}/rk-rga/lib)
39+
find_library(RKNPU2_LIBRARY NAMES rknnrt HINTS ${HINTS_ROCKCHIP_PATH}/rknpu2/runtime/RK356X/Linux/librknn_api/aarch64)
40+
mark_as_advanced(RKNPU2_LIBRARY)
41+
message(STATUS "rk356x platform")
42+
else()
43+
message(STATUS "other platform")
44+
endif()
45+
46+
find_library(RKRGA_LIBRARY NAMES rga HINTS ${HINTS_ROCKCHIP_PATH}/rga/libs/Linux/gcc-aarch64)
3447
mark_as_advanced(RKRGA_LIBRARY)
3548

3649
find_library(RKMPP_LIBRARY NAMES rockchip_mpp HINTS ${HINTS_ROCKCHIP_PATH}/rkmpp/lib)
@@ -42,8 +55,8 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(ROCKCHIP
4255
VERSION_VAR ROCKCHIP_VERSION_STRING)
4356

4457
if(ROCKCHIP_FOUND)
45-
set(RKNN_LIBRARIES ${RKNN_LIBRARY})
46-
set(RKNN_INCLUDE_DIR ${RKNN_INCLUDE})
58+
set(RKNPU_LIBRARIES ${RKNPU_LIBRARY})
59+
set(RKNPU_INCLUDE_DIR ${RKNPU_INCLUDE})
4760
set(RKNPU2_INCLUDE_DIR ${RKNPU2_INCLUDE})
4861
set(RKNPU2_LIBRARIES ${RKNPU2_LIBRARY})
4962
set(RKRGA_LIBRARIES ${RKRGA_LIBRARY})

src/drivers/devices/rockchip/core/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ include_directories(${LIBMODELBOX_INCLUDE})
2929
include_directories(${LIBMODELBOX_BASE_INCLUDE})
3030
include_directories(${LIBMODELBOX_DEVICE_ROCKCHIP_INCLUDE})
3131
include_directories(${ROCKCHIP_MPP_INCLUDE})
32-
include_directories(${RKNN_INCLUDE_DIR})
32+
include_directories(${RKNPU_INCLUDE_DIR})
3333
include_directories(${ROCKCHIP_RGA_INCLUDE})
3434

3535
set(HEADER

src/drivers/devices/rockchip/core/rockchip_api.cc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,16 @@ Status CopyNVMemory(uint8_t *psrc, uint8_t *pdst, int w, int h, int ws,
119119

120120
Status CopyRGBMemory(uint8_t *psrc, uint8_t *pdst, int w, int h, int ws,
121121
int hs) {
122+
if (psrc == nullptr) {
123+
MBLOG_ERROR << "psrc is nullptr";
124+
return {STATUS_FAULT, "psrc is nullptr"};
125+
}
126+
127+
if (pdst == nullptr) {
128+
MBLOG_ERROR << "pdst is nullptr";
129+
return {STATUS_FAULT, "pdst is nullptr"};
130+
}
131+
122132
uint8_t *rgbsrc = psrc;
123133
uint8_t *rgbdst = pdst;
124134

src/drivers/devices/rockchip/flowunit/crop/crop_flowunit.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ MODELBOX_FLOWUNIT(RockchipCropFlowUnit, rk_crop_desc) {
161161
rk_crop_desc.AddFlowUnitInput({IN_REGION, "cpu"});
162162
rk_crop_desc.AddFlowUnitOutput({OUT_IMG, modelbox::DEVICE_TYPE});
163163
rk_crop_desc.SetFlowType(modelbox::NORMAL);
164-
rk_crop_desc.SetInputContiguous(false);
165164
rk_crop_desc.SetDescription(FLOWUNIT_DESC);
166165
}
167166

src/drivers/devices/rockchip/flowunit/inference_rknpu2/rknpu2_inference.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ modelbox::Status modelbox::RKNPU2Inference::Init(
152152
return {modelbox::STATUS_FAULT, "query input_output error"};
153153
}
154154

155+
MBLOG_INFO << "model input num: " << rknpu2_io_num.n_input
156+
<< ", output num: " << rknpu2_io_num.n_output << std::endl;
157+
155158
if (npu2model_input_list_.size() != rknpu2_io_num.n_input ||
156159
npu2model_output_list_.size() != rknpu2_io_num.n_output) {
157160
MBLOG_ERROR << "model input output num mismatch: input num in graph is "
@@ -285,9 +288,10 @@ size_t modelbox::RKNPU2Inference::GetInputBuffer(
285288
input_params->in_width_ = in_image->GetBytes();
286289
}
287290

288-
if (input_buf_list->GetDevice()->GetType() == "rknpu") {
291+
if (input_buf_list->GetDevice()->GetType() == "rockchip") {
289292
return CopyFromAlignMemory(input_buf_list, input_buf, input_params);
290293
}
294+
291295
input_buf.reset((uint8_t *)input_buf_list->ConstData(), [](uint8_t *p) {});
292296
return input_buf_list->GetBytes();
293297
}
@@ -326,6 +330,7 @@ modelbox::Status modelbox::RKNPU2Inference::Infer(
326330
<< " " << inputs_size_[i];
327331
return modelbox::STATUS_FAULT;
328332
}
333+
329334
one_input.pass_through = false;
330335
one_input.type = (rknn_tensor_type)inputs_type_[i];
331336
one_input.fmt = RKNN_TENSOR_NHWC;

src/drivers/devices/rockchip/flowunit/inference_rknpu2/rknpu2_inference_flowunit.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
#include "rknpu2_inference.h"
2828

29-
constexpr const char *RKNPU2_FLOWUNIT_TYPE = "rknpu2";
29+
constexpr const char *RKNPU2_FLOWUNIT_TYPE = "rockchip";
3030
constexpr const char *RKNPU2_INFERENCE_TYPE = "rknpu2";
3131

3232
class RKNPU2InferenceFlowUnit : public modelbox::FlowUnit {

src/drivers/devices/rockchip/flowunit/local_camera/local_camera_flowunit.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,6 @@ class RockChipLocalCameraFlowUnit : public modelbox::FlowUnit {
6868
MppFrame SetMppFrameInfo(size_t w, size_t h, MppFrameFormat fmt,
6969
MppBuffer mpp_buf);
7070

71-
MppFrame SetMppFrameInfo(size_t w, size_t h, MppFrameFormat fmt,
72-
MppBuffer mpp_buf);
73-
7471
uint32_t camWidth_{0};
7572
uint32_t camHeight_{0};
7673
uint32_t camera_id_{0};

src/drivers/devices/rockchip/flowunit/video_out/video_out_flowunit.cc

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,25 +317,37 @@ modelbox::Status VideoOutFlowUnit::GetDestUrl(
317317
const std::shared_ptr<modelbox::DataContext> &data_ctx,
318318
std::string &dest_url) {
319319
dest_url = default_dest_url_;
320-
321320
Defer {
322321
std::regex url_auth_pattern("://[^ /]*?:[^ /]*?@");
323322
auto result = std::regex_replace(dest_url, url_auth_pattern, "://*:*@");
324323
MBLOG_INFO << "video_out url is " << result;
325324
};
326325

326+
if (data_ctx == nullptr) {
327+
MBLOG_ERROR << "data ctx is nullptr";
328+
return modelbox::STATUS_INVALID;
329+
}
330+
327331
// 3种方式获取
328332
auto stream_meta = data_ctx->GetInputMeta(FRAME_INFO_INPUT);
329333
if (stream_meta != nullptr) {
334+
auto meta_dest_url = stream_meta->GetMeta(DEST_URL);
330335
auto dest_url_ptr =
331-
std::static_pointer_cast<std::string>(stream_meta->GetMeta(DEST_URL));
336+
meta_dest_url == nullptr
337+
? nullptr
338+
: std::static_pointer_cast<std::string>(meta_dest_url);
332339
if (dest_url_ptr != nullptr && !(*dest_url_ptr).empty()) {
333340
dest_url = *dest_url_ptr;
334341
return modelbox::STATUS_SUCCESS;
335342
}
336343
}
337344

338345
auto config = data_ctx->GetSessionConfig();
346+
if (config == nullptr) {
347+
MBLOG_ERROR << "data ctx session config is empty";
348+
return modelbox::STATUS_INVALID;
349+
}
350+
339351
auto cfg_str = config->GetString("iva_task_output");
340352
if (cfg_str.empty()) {
341353
return modelbox::STATUS_SUCCESS;

0 commit comments

Comments
 (0)