Full Code of modelbox-ai/modelbox for AI

main faa1e931a464 cached
1255 files
6.0 MB
1.6M tokens
4674 symbols
1 requests
Download .txt
Showing preview only (6,599K chars total). Download the full file or copy to clipboard to get everything.
Repository: modelbox-ai/modelbox
Branch: main
Commit: faa1e931a464
Files: 1255
Total size: 6.0 MB

Directory structure:
gitextract_q1lpf8mw/

├── .clang-format
├── .clang-tidy
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── feature.md
│   │   └── issue.md
│   └── workflows/
│       ├── gitee-mirror.yml
│       ├── manual-build-with-image.yml
│       ├── manual-build-with-rockchip-images.yml
│       ├── merge-request-ascend.yml
│       ├── merge-request-cuda.yml
│       ├── merge-request-rockchip.yml
│       ├── publish-modelbox-images.yml
│       ├── unit-test-daily-on-device.yml
│       └── unit-test-pull-requests-on-device.yml
├── .gitignore
├── CMake/
│   ├── Clang-tidy.cmake
│   ├── FindACL.cmake
│   ├── FindCPPREST.cmake
│   ├── FindCUDACUDA.cmake
│   ├── FindDIS.cmake
│   ├── FindDLENGINE.cmake
│   ├── FindDSMI.cmake
│   ├── FindDUKTAPE.cmake
│   ├── FindFFMPEG.cmake
│   ├── FindFUSE.cmake
│   ├── FindMINDSPORE_LITE.cmake
│   ├── FindNVCUVID.cmake
│   ├── FindOBS.cmake
│   ├── FindROCKCHIP.cmake
│   ├── FindTENSORFLOW.cmake
│   ├── FindTENSORRT.cmake
│   ├── FindVCN.cmake
│   ├── Function.cmake
│   ├── JavaJDK.cmake
│   ├── Options.cmake
│   ├── ProjectEnvVars.cmake
│   ├── SecureCompilerOption.cmake
│   └── clang-tidy-warp
├── CMakeLists.txt
├── LICENSE
├── NOTICE
├── README.md
├── README_en.md
├── Third_Party_Open_Source_Software_Notice
├── docker/
│   ├── Dockerfile.ascend.base
│   ├── Dockerfile.ascend.develop.openeuler
│   ├── Dockerfile.ascend.develop.ubuntu
│   ├── Dockerfile.ascend.runtime.openeuler
│   ├── Dockerfile.ascend.runtime.ubuntu
│   ├── Dockerfile.cuda.develop.openeuler
│   ├── Dockerfile.cuda.develop.ubuntu
│   ├── Dockerfile.cuda.runtime.openeuler
│   ├── Dockerfile.cuda.runtime.ubuntu
│   ├── Dockerfile.rknnrt.build.ubuntu
│   ├── README.md
│   ├── artifact_check.sh
│   ├── prepare_for_dev.sh
│   ├── prepare_for_rockchip.sh
│   ├── prepare_for_run.sh
│   └── repo/
│       ├── cuda.repo
│       └── nvidia-ml.repo
├── docs/
│   ├── CMakeLists.txt
│   ├── Design.md
│   ├── Doxyfile.in
│   ├── Goal.md
│   └── assets/
│       ├── architecture.vsdx
│       └── modelbox.vsdx
├── examples/
│   ├── CMakeLists.txt
│   ├── bin/
│   │   └── template
│   ├── flowunit/
│   │   ├── CMakeLists.txt
│   │   ├── c++/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── example.cc
│   │   │   ├── example.h
│   │   │   └── example.toml
│   │   ├── infer/
│   │   │   ├── CMakeLists.txt
│   │   │   └── example.toml
│   │   ├── plugin/
│   │   │   ├── data_source_parser/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── driver_desc.cc
│   │   │   │   ├── example.cc
│   │   │   │   └── example.h
│   │   │   └── output_broker/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── driver_desc.cc
│   │   │       ├── example.cc
│   │   │       └── example.h
│   │   ├── python/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── example.py
│   │   │   └── example.toml
│   │   └── yolo/
│   │       ├── CMakeLists.txt
│   │       └── example.toml
│   ├── misc/
│   │   └── modelbox-template-cmd.json.in
│   ├── project/
│   │   ├── base/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── package/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── debian/
│   │   │   │   │   ├── postinst.in
│   │   │   │   │   └── postrm.in
│   │   │   │   └── rpm/
│   │   │   │       ├── postinscript.in
│   │   │   │       └── postunscript.in
│   │   │   ├── readme.txt
│   │   │   ├── src/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── flowunit/
│   │   │   │   │   └── CMakeLists.txt
│   │   │   │   ├── graph/
│   │   │   │   │   └── CMakeLists.txt
│   │   │   │   └── service-plugin/
│   │   │   │       └── CMakeLists.txt
│   │   │   ├── test/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── flowunit/
│   │   │   │   │   └── CMakeLists.txt
│   │   │   │   ├── mock/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── mock_modelbox.cc
│   │   │   │   │   └── mock_modelbox.h
│   │   │   │   └── test_config.h.in
│   │   │   └── thirdparty/
│   │   │       ├── CMake/
│   │   │       │   ├── local-package.in
│   │   │       │   └── pre-download.in
│   │   │       └── CMakeLists.txt
│   │   ├── car_detection/
│   │   │   ├── desc.toml
│   │   │   └── setup.sh
│   │   ├── emotion_detection/
│   │   │   ├── desc.toml
│   │   │   ├── download_emotion_files.sh
│   │   │   └── setup.sh
│   │   ├── empty/
│   │   │   ├── desc.toml
│   │   │   └── src/
│   │   │       └── graph/
│   │   │           └── empty.toml
│   │   ├── hello_world/
│   │   │   ├── desc.toml
│   │   │   └── setup.sh
│   │   ├── mnist/
│   │   │   ├── desc.toml
│   │   │   └── setup.sh
│   │   ├── mnist-mindspore/
│   │   │   ├── desc.toml
│   │   │   ├── setup.sh
│   │   │   └── src/
│   │   │       ├── flowunit/
│   │   │       │   ├── mnist_infer/
│   │   │       │   │   ├── CMakeLists.txt
│   │   │       │   │   ├── mnist_infer.toml
│   │   │       │   │   └── train.sh
│   │   │       │   ├── mnist_preprocess/
│   │   │       │   │   ├── mnist_preprocess.py
│   │   │       │   │   └── mnist_preprocess.toml
│   │   │       │   └── mnist_response/
│   │   │       │       ├── mnist_response.py
│   │   │       │       └── mnist_response.toml
│   │   │       └── graph/
│   │   │           └── mnist.toml
│   │   └── resize/
│   │       ├── desc.toml
│   │       ├── src/
│   │       │   ├── flowunit/
│   │       │   │   └── resize_flowunit/
│   │       │   │       ├── CMakeLists.txt
│   │       │   │       ├── resize_flowunit.cc
│   │       │   │       └── resize_flowunit.h
│   │       │   └── graph/
│   │       │       └── resize.toml
│   │       └── test/
│   │           └── flowunit/
│   │               └── resize_flowuint_test.cc
│   └── service-plugin/
│       ├── CMakeLists.txt
│       ├── example.cc
│       └── example.h
├── package/
│   ├── CMakeLists.txt
│   ├── debian/
│   │   ├── modelbox-server/
│   │   │   ├── conffiles.in
│   │   │   ├── postinst.in
│   │   │   └── postrm.in
│   │   └── postinst
│   └── rpm/
│       ├── demo/
│       │   └── postscript
│       ├── modelbox-server/
│       │   ├── conffiles.in
│       │   ├── postscript.in
│       │   └── postunscript.in
│       └── postscript
├── src/
│   ├── CMakeLists.txt
│   ├── demo/
│   │   ├── CMakeLists.txt
│   │   ├── car_detection/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── flowunit/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── car_detect/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── car_detect.toml
│   │   │   │   │   └── yolox_nano_jit_trace_288x512.pt
│   │   │   │   └── yolox_post/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── yolox_post.py
│   │   │   │       ├── yolox_post.toml
│   │   │   │       └── yolox_utils.py
│   │   │   └── graph/
│   │   │       ├── CMakeLists.txt
│   │   │       └── car_detection.toml.in
│   │   ├── emotion_detection/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── flowunit/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── collapse_emotion/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── collapse_emotion.py
│   │   │   │   │   └── collapse_emotion.toml
│   │   │   │   ├── custom_resize/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── custom_resize.py
│   │   │   │   │   └── custom_resize.toml
│   │   │   │   ├── draw_emotion/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── draw_emotion.py
│   │   │   │   │   └── draw_emotion.toml
│   │   │   │   ├── emotion_infer/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── emotion_infer.toml
│   │   │   │   ├── expand_box/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── expand_box.py
│   │   │   │   │   └── expand_box.toml
│   │   │   │   ├── face_detect/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── face_detect.toml
│   │   │   │   └── face_post/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── face_post.py
│   │   │   │       ├── face_post.toml
│   │   │   │       └── face_post_utils.py
│   │   │   └── graph/
│   │   │       ├── CMakeLists.txt
│   │   │       └── emotion_detection.toml.in
│   │   ├── hello_world/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── flowunit/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── hello_world/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── hello_world.py
│   │   │   │       └── hello_world.toml
│   │   │   └── graph/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── hello_world.toml.in
│   │   │       └── test_hello_world.py
│   │   └── mnist/
│   │       ├── CMakeLists.txt
│   │       ├── flowunit/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── mnist_infer/
│   │       │   │   ├── CMakeLists.txt
│   │       │   │   ├── mnist_infer.toml
│   │       │   │   ├── mnist_model.pb
│   │       │   │   ├── train.py
│   │       │   │   └── train.sh
│   │       │   ├── mnist_preprocess/
│   │       │   │   ├── CMakeLists.txt
│   │       │   │   ├── mnist_preprocess.py
│   │       │   │   └── mnist_preprocess.toml
│   │       │   └── mnist_response/
│   │       │       ├── CMakeLists.txt
│   │       │       ├── mnist_response.py
│   │       │       └── mnist_response.toml
│   │       └── graph/
│   │           ├── CMakeLists.txt
│   │           ├── mnist.toml.in
│   │           └── test_mnist.py
│   ├── develop/
│   │   └── CMakeLists.txt
│   ├── drivers/
│   │   ├── CMakeLists.txt
│   │   ├── common/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── devices/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── device_stream/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── device_stream.cc
│   │   │   │       └── device_stream.h
│   │   │   ├── flowunit/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── driver_util/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── driver_util.cc
│   │   │   │   │   └── driver_util.h
│   │   │   │   ├── hw_components/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── iam_auth/
│   │   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   │   ├── iam_api.cc
│   │   │   │   │   │   ├── iam_api.h
│   │   │   │   │   │   ├── iam_auth.cc
│   │   │   │   │   │   ├── iam_auth.h
│   │   │   │   │   │   ├── token_manager.cc
│   │   │   │   │   │   └── token_manager.h
│   │   │   │   │   └── obs_client/
│   │   │   │   │       ├── CMakeLists.txt
│   │   │   │   │       └── obs_client.cc
│   │   │   │   ├── image_process/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── image_process.cc
│   │   │   │   │   └── image_process.h
│   │   │   │   ├── image_rotate/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── image_rotate_base.cc
│   │   │   │   │   ├── image_rotate_base.h
│   │   │   │   │   ├── image_rotate_test_base.cc
│   │   │   │   │   └── image_rotate_test_base.h
│   │   │   │   ├── inference/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── model_decrypt.cc
│   │   │   │   │   ├── model_decrypt.h
│   │   │   │   │   ├── model_decrypt_header.h
│   │   │   │   │   └── model_decrypt_interface.h
│   │   │   │   ├── mean/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── mean_flowunit_base.cc
│   │   │   │   │   └── mean_flowunit_base.h
│   │   │   │   ├── normalize/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── normalize_flowunit_base.cc
│   │   │   │   │   └── normalize_flowunit_base.h
│   │   │   │   ├── safe_http/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── http_util.cc
│   │   │   │   │   └── http_util.h
│   │   │   │   ├── source_context/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── source_context.cc
│   │   │   │   │   └── source_context.h
│   │   │   │   └── video_decode/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── ffmpeg_color_converter.cc
│   │   │   │       ├── ffmpeg_color_converter.h
│   │   │   │       ├── video_decode_common.cc
│   │   │   │       └── video_decode_common.h
│   │   │   ├── libs/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── file_requester/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── file_requester.cc
│   │   │   │   ├── fuse/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── modelbox_fuse.cc
│   │   │   │   │   └── modelbox_fuse_test.cc
│   │   │   │   └── include/
│   │   │   │       └── modelbox/
│   │   │   │           └── drivers/
│   │   │   │               └── common/
│   │   │   │                   ├── file_requester.h
│   │   │   │                   └── modelbox_fuse.h
│   │   │   └── python/
│   │   │       ├── CMakeLists.txt
│   │   │       └── modelbox_api/
│   │   │           ├── CMakeLists.txt
│   │   │           ├── modelbox_api.cc
│   │   │           ├── modelbox_api.h
│   │   │           ├── python_common.cc
│   │   │           ├── python_common.h
│   │   │           ├── python_flow.cc
│   │   │           ├── python_flow.h
│   │   │           ├── python_flowunit.cc
│   │   │           ├── python_flowunit.h
│   │   │           ├── python_log.cc
│   │   │           ├── python_log.h
│   │   │           ├── python_model.cc
│   │   │           └── python_model.h
│   │   ├── devices/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── ascend/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── core/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── ascend_memory.cc
│   │   │   │   │   ├── device_ascend.cc
│   │   │   │   │   ├── driver_desc.cc
│   │   │   │   │   ├── include/
│   │   │   │   │   │   └── modelbox/
│   │   │   │   │   │       └── device/
│   │   │   │   │   │           └── ascend/
│   │   │   │   │   │               ├── ascend_memory.h
│   │   │   │   │   │               └── device_ascend.h
│   │   │   │   │   └── libmodelbox-device-ascend.pc.in
│   │   │   │   └── flowunit/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── crop/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── crop_flowunit.cc
│   │   │   │       │   ├── crop_flowunit.h
│   │   │   │       │   └── crop_flowunit_test.cc
│   │   │   │       ├── inference/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── atc_inference.cc
│   │   │   │       │   ├── atc_inference.h
│   │   │   │       │   ├── atc_inference_flowunit.cc
│   │   │   │       │   ├── atc_inference_flowunit.h
│   │   │   │       │   ├── atc_inference_flowunit_test.cc
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.ascend.inference.encrypt.in
│   │   │   │       │       └── modelbox.test.ascend.inference.in
│   │   │   │       ├── mindspore_lite_inference/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── mindspore_ascend_inference_flowunit.cc
│   │   │   │       │   ├── mindspore_ascend_inference_flowunit.h
│   │   │   │       │   ├── mindspore_lite_ascend_inference_flowunit_test.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.mindspore_lite.ascend.inference.encrypt.in
│   │   │   │       │       └── modelbox.test.mindspore_lite.ascend.inference.in
│   │   │   │       ├── padding/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── padding_flowunit.cc
│   │   │   │       │   ├── padding_flowunit.h
│   │   │   │       │   └── padding_flowunit_test.cc
│   │   │   │       ├── resize/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── resize_flowunit.cc
│   │   │   │       │   ├── resize_flowunit.h
│   │   │   │       │   └── resize_flowunit_test.cc
│   │   │   │       └── video_decoder/
│   │   │   │           ├── CMakeLists.txt
│   │   │   │           ├── ascend_video_decode.cc
│   │   │   │           ├── ascend_video_decode.h
│   │   │   │           ├── video_decoder_flowunit.cc
│   │   │   │           ├── video_decoder_flowunit.h
│   │   │   │           └── video_decoder_flowunit_test.cc
│   │   │   ├── cpu/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── core/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── cpu_memory.cc
│   │   │   │   │   ├── device_cpu.cc
│   │   │   │   │   ├── driver_desc.cc
│   │   │   │   │   ├── include/
│   │   │   │   │   │   └── modelbox/
│   │   │   │   │   │       └── device/
│   │   │   │   │   │           └── cpu/
│   │   │   │   │   │               ├── cpu_memory.h
│   │   │   │   │   │               └── device_cpu.h
│   │   │   │   │   └── libmodelbox-device-cpu.pc.in
│   │   │   │   └── flowunit/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── base64_decoder/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── base64_decoder.cc
│   │   │   │       │   ├── base64_decoder.h
│   │   │   │       │   └── base64_decoder_test.cc
│   │   │   │       ├── color_transpose/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── color_transpose_flowunit.cc
│   │   │   │       │   └── color_transpose_flowunit.h
│   │   │   │       ├── common_yolobox/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── modelbox.test.yolobox.in
│   │   │   │       │   ├── yolo_helper.cc
│   │   │   │       │   ├── yolo_helper.h
│   │   │   │       │   ├── yolobox_flowuint_test.cc
│   │   │   │       │   ├── yolobox_flowunit.cc
│   │   │   │       │   └── yolobox_flowunit.h
│   │   │   │       ├── cv_crop/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── cv_crop_flowunit.cc
│   │   │   │       │   ├── cv_crop_flowunit.h
│   │   │   │       │   └── cv_crop_flowunit_test.cc
│   │   │   │       ├── data_source_generator/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── data_source_generator.cc
│   │   │   │       │   ├── data_source_generator.h
│   │   │   │       │   └── data_source_generator_test.cc
│   │   │   │       ├── data_source_parser/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── data_source_parser_flowunit.cc
│   │   │   │       │   ├── data_source_parser_flowunit.h
│   │   │   │       │   ├── data_source_parser_flowunit_test.cc
│   │   │   │       │   └── parser_plugin/
│   │   │   │       │       ├── CMakeLists.txt
│   │   │   │       │       ├── obs_source_parser/
│   │   │   │       │       │   ├── CMakeLists.txt
│   │   │   │       │       │   ├── driver_desc.cc
│   │   │   │       │       │   ├── obs_file_handler.cc
│   │   │   │       │       │   ├── obs_file_handler.h
│   │   │   │       │       │   ├── obs_source_parser.cc
│   │   │   │       │       │   ├── obs_source_parser.h
│   │   │   │       │       │   └── obs_source_parser_test.cc
│   │   │   │       │       ├── restful_source_parser/
│   │   │   │       │       │   ├── CMakeLists.txt
│   │   │   │       │       │   ├── driver_desc.cc
│   │   │   │       │       │   ├── restful_source_parser.cc
│   │   │   │       │       │   └── restful_source_parser.h
│   │   │   │       │       ├── url_source_parser/
│   │   │   │       │       │   ├── CMakeLists.txt
│   │   │   │       │       │   ├── driver_desc.cc
│   │   │   │       │       │   ├── url_source_parser.cc
│   │   │   │       │       │   └── url_source_parser.h
│   │   │   │       │       ├── vcn_common/
│   │   │   │       │       │   ├── vcn_info.cc
│   │   │   │       │       │   └── vcn_info.h
│   │   │   │       │       ├── vcn_restful_source_parser/
│   │   │   │       │       │   ├── CMakeLists.txt
│   │   │   │       │       │   ├── driver_desc.cc
│   │   │   │       │       │   ├── vcn_restful_client.cc
│   │   │   │       │       │   ├── vcn_restful_client.h
│   │   │   │       │       │   ├── vcn_restful_source_parser.cc
│   │   │   │       │       │   ├── vcn_restful_source_parser.h
│   │   │   │       │       │   ├── vcn_restful_source_parser_test.cc
│   │   │   │       │       │   ├── vcn_restful_wrapper.cc
│   │   │   │       │       │   ├── vcn_restful_wrapper.h
│   │   │   │       │       │   ├── vcn_restful_wrapper_mock_test.cc
│   │   │   │       │       │   └── vcn_restful_wrapper_mock_test.h
│   │   │   │       │       ├── vcn_source_parser/
│   │   │   │       │       │   ├── CMakeLists.txt
│   │   │   │       │       │   ├── driver_desc.cc
│   │   │   │       │       │   ├── vcn_client.cc
│   │   │   │       │       │   ├── vcn_client.h
│   │   │   │       │       │   ├── vcn_sdk_wrapper.cc
│   │   │   │       │       │   ├── vcn_sdk_wrapper.h
│   │   │   │       │       │   ├── vcn_sdk_wrapper_mock_test.cc
│   │   │   │       │       │   ├── vcn_sdk_wrapper_mock_test.h
│   │   │   │       │       │   ├── vcn_source_parser.cc
│   │   │   │       │       │   ├── vcn_source_parser.h
│   │   │   │       │       │   └── vcn_source_parser_test.cc
│   │   │   │       │       └── vis_source_parser/
│   │   │   │       │           ├── CMakeLists.txt
│   │   │   │       │           ├── driver_desc.cc
│   │   │   │       │           ├── vis_source_parser.cc
│   │   │   │       │           └── vis_source_parser.h
│   │   │   │       ├── dlengine/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── dlengine_cpu_inference_flowunit.cc
│   │   │   │       │   ├── dlengine_cpu_inference_flowunit.h
│   │   │   │       │   ├── dlengine_cpu_inference_flowunit_test.cc
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       └── modelbox.test.dlengine.cpu.inference.onnx.in
│   │   │   │       ├── draw_bbox/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── draw_bbox_flowunit.cc
│   │   │   │       │   ├── draw_bbox_flowunit.h
│   │   │   │       │   └── draw_bbox_flowunit_test.cc
│   │   │   │       ├── httpserver_async/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── httpserver_async.cc
│   │   │   │       │   ├── httpserver_async.h
│   │   │   │       │   └── httpserver_async_test.cc
│   │   │   │       ├── httpserver_sync/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── httpserver_sync.cc
│   │   │   │       │   ├── httpserver_sync_test.cc
│   │   │   │       │   ├── receive/
│   │   │   │       │   │   ├── httpserver_sync_receive.cc
│   │   │   │       │   │   └── httpserver_sync_receive.h
│   │   │   │       │   └── reply/
│   │   │   │       │       ├── httpserver_sync_reply.cc
│   │   │   │       │       └── httpserver_sync_reply.h
│   │   │   │       ├── image_decoder/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── image_decoder.cc
│   │   │   │       │   ├── image_decoder.h
│   │   │   │       │   └── image_decoder_test.cc
│   │   │   │       ├── image_rotate/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── image_rotate.cc
│   │   │   │       │   ├── image_rotate.h
│   │   │   │       │   └── image_rotate_test.cc
│   │   │   │       ├── java/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── java_flowunit.cc
│   │   │   │       │   ├── java_flowunit.h
│   │   │   │       │   ├── java_flowunit_test.cc
│   │   │   │       │   ├── java_module.cc
│   │   │   │       │   └── java_module.h
│   │   │   │       ├── mean/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── mean_flowunit.cc
│   │   │   │       │   ├── mean_flowunit.h
│   │   │   │       │   └── mean_flowunit_test.cc
│   │   │   │       ├── meta_mapping/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── meta_mapping_flowunit.cc
│   │   │   │       │   ├── meta_mapping_flowunit.h
│   │   │   │       │   └── meta_mapping_flowunit_test.cc
│   │   │   │       ├── mindspore_lite_inference/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── mindspore_cpu_inference_flowunit.cc
│   │   │   │       │   ├── mindspore_cpu_inference_flowunit.h
│   │   │   │       │   ├── mindspore_cpu_inference_flowunit_test.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.mindspore.cpu.inference.encrypt.in
│   │   │   │       │       └── modelbox.test.mindspore.cpu.inference.in
│   │   │   │       ├── model_decrypt_plugin/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── driver_desc.cc
│   │   │   │       │   ├── model_decrypt_plugin.cc
│   │   │   │       │   ├── model_decrypt_plugin.h
│   │   │   │       │   └── model_decrypt_plugin_test.cc
│   │   │   │       ├── normalize/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── normalize_flowunit.cc
│   │   │   │       │   ├── normalize_flowunit.h
│   │   │   │       │   └── normalize_flowunit_test.cc
│   │   │   │       ├── output_broker/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── broker_plugin/
│   │   │   │       │   │   ├── CMakeLists.txt
│   │   │   │       │   │   ├── dis_output_broker/
│   │   │   │       │   │   │   ├── CMakeLists.txt
│   │   │   │       │   │   │   ├── dis_output_broker.cc
│   │   │   │       │   │   │   ├── dis_output_broker.h
│   │   │   │       │   │   │   ├── driver_desc.cc
│   │   │   │       │   │   │   └── driver_desc.h
│   │   │   │       │   │   ├── obs_output_broker/
│   │   │   │       │   │   │   ├── CMakeLists.txt
│   │   │   │       │   │   │   ├── driver_desc.cc
│   │   │   │       │   │   │   ├── obs_output_broker.cc
│   │   │   │       │   │   │   ├── obs_output_broker.h
│   │   │   │       │   │   │   └── obs_output_broker_test.cc
│   │   │   │       │   │   └── webhook_output_broker/
│   │   │   │       │   │       ├── CMakeLists.txt
│   │   │   │       │   │       ├── driver_desc.cc
│   │   │   │       │   │       ├── webhook_output_broker.cc
│   │   │   │       │   │       └── webhook_output_broker.h
│   │   │   │       │   ├── output_broker_flowunit.cc
│   │   │   │       │   ├── output_broker_flowunit.h
│   │   │   │       │   └── output_broker_flowunit_test.cc
│   │   │   │       ├── padding/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── padding_flowunit.cc
│   │   │   │       │   ├── padding_flowunit.h
│   │   │   │       │   └── padding_flowunit_test.cc
│   │   │   │       ├── python/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── python_flowunit.cc
│   │   │   │       │   ├── python_flowunit.h
│   │   │   │       │   ├── python_flowunit_test.cc
│   │   │   │       │   ├── python_module.cc
│   │   │   │       │   └── python_module.h
│   │   │   │       ├── resize/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── resize_flowunit.cc
│   │   │   │       │   ├── resize_flowunit.h
│   │   │   │       │   └── resize_flowunit_test.cc
│   │   │   │       ├── tensorflow/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── tensorflow_cpu_inference_flowunit.cc
│   │   │   │       │   ├── tensorflow_cpu_inference_flowunit.h
│   │   │   │       │   ├── tensorflow_cpu_inference_flowunit_test.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       └── modelbox.test.cpu.tensorflow.in
│   │   │   │       ├── video_decoder/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── ffmpeg_video_decoder.cc
│   │   │   │       │   ├── ffmpeg_video_decoder.h
│   │   │   │       │   ├── video_decoder_flowunit.cc
│   │   │   │       │   ├── video_decoder_flowunit.h
│   │   │   │       │   └── video_decoder_flowunit_test.cc
│   │   │   │       ├── video_demuxer/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── ffmpeg_reader.cc
│   │   │   │       │   ├── ffmpeg_reader.h
│   │   │   │       │   ├── ffmpeg_video_demuxer.cc
│   │   │   │       │   ├── ffmpeg_video_demuxer.h
│   │   │   │       │   ├── video_demux_flowunit_retry_test.cc
│   │   │   │       │   ├── video_demuxer_flowunit.cc
│   │   │   │       │   ├── video_demuxer_flowunit.h
│   │   │   │       │   └── video_demuxer_flowunit_test.cc
│   │   │   │       ├── video_encoder/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── ffmpeg_video_encoder.cc
│   │   │   │       │   ├── ffmpeg_video_encoder.h
│   │   │   │       │   ├── ffmpeg_video_muxer.cc
│   │   │   │       │   ├── ffmpeg_video_muxer.h
│   │   │   │       │   ├── ffmpeg_writer.cc
│   │   │   │       │   ├── ffmpeg_writer.h
│   │   │   │       │   ├── video_encoder_flowunit.cc
│   │   │   │       │   ├── video_encoder_flowunit.h
│   │   │   │       │   └── video_encoder_flowunit_test.cc
│   │   │   │       └── video_input/
│   │   │   │           ├── CMakeLists.txt
│   │   │   │           ├── video_input_flowunit.cc
│   │   │   │           └── video_input_flowunit.h
│   │   │   ├── cuda/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── core/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── cuda_memory.cc
│   │   │   │   │   ├── device_cuda.cc
│   │   │   │   │   ├── driver_desc.cc
│   │   │   │   │   ├── include/
│   │   │   │   │   │   └── modelbox/
│   │   │   │   │   │       └── device/
│   │   │   │   │   │           └── cuda/
│   │   │   │   │   │               ├── cuda_memory.h
│   │   │   │   │   │               └── device_cuda.h
│   │   │   │   │   └── libmodelbox-device-cuda.pc.in
│   │   │   │   └── flowunit/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── color_transpose/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── color_transpose.cc
│   │   │   │       │   ├── color_transpose.cu
│   │   │   │       │   ├── color_transpose.h
│   │   │   │       │   ├── color_transpose_cu.h
│   │   │   │       │   └── color_transpose_test.cc
│   │   │   │       ├── dlengine/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── dlengine_cuda_inference_flowunit.cc
│   │   │   │       │   ├── dlengine_cuda_inference_flowunit.h
│   │   │   │       │   ├── dlengine_cuda_inference_flowunit_test.cc
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       └── modelbox.test.dlengine.cuda.inference.onnx.in
│   │   │   │       ├── image_rotate/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── image_rotate.cc
│   │   │   │       │   ├── image_rotate.cu
│   │   │   │       │   ├── image_rotate.h
│   │   │   │       │   ├── image_rotate_cu.h
│   │   │   │       │   └── image_rotate_test.cc
│   │   │   │       ├── mean/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── mean.cc
│   │   │   │       │   ├── mean.h
│   │   │   │       │   ├── mean_flowunit.cc
│   │   │   │       │   ├── mean_flowunit.h
│   │   │   │       │   └── mean_flowunit_test.cc
│   │   │   │       ├── mindspore_lite_inference/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── mindspore_cuda_inference_flowunit.cc
│   │   │   │       │   ├── mindspore_cuda_inference_flowunit.h
│   │   │   │       │   ├── mindspore_cuda_inference_flowunit_test.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.mindspore.cuda.inference.encrypt.in
│   │   │   │       │       └── modelbox.test.mindspore.cuda.inference.in
│   │   │   │       ├── normalize/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── normalize.cc
│   │   │   │       │   ├── normalize.h
│   │   │   │       │   ├── normalize_flowunit.cc
│   │   │   │       │   ├── normalize_flowunit.h
│   │   │   │       │   └── normalize_flowunit_test.cc
│   │   │   │       ├── normalize_v2/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── normalize_flowunit.cc
│   │   │   │       │   ├── normalize_flowunit.cu
│   │   │   │       │   ├── normalize_flowunit.h
│   │   │   │       │   ├── normalize_flowunit_cu.h
│   │   │   │       │   └── normalize_flowunit_test.cc
│   │   │   │       ├── nppi_crop/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── nppi_crop_flowunit.cc
│   │   │   │       │   ├── nppi_crop_flowunit.h
│   │   │   │       │   └── nppi_crop_flowunit_test.cc
│   │   │   │       ├── nppi_resize/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── resize_flowunit.cc
│   │   │   │       │   ├── resize_flowunit.h
│   │   │   │       │   └── resize_flowunit_test.cc
│   │   │   │       ├── nv_image_decoder/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── nv_image_decoder.cc
│   │   │   │       │   ├── nv_image_decoder.h
│   │   │   │       │   └── nv_image_decoder_test.cc
│   │   │   │       ├── padding/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── padding_flowunit.cc
│   │   │   │       │   ├── padding_flowunit.h
│   │   │   │       │   └── padding_flowunit_test.cc
│   │   │   │       ├── tensorflow/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── tensorflow_gpu_inference_flowunit.cc
│   │   │   │       │   ├── tensorflow_gpu_inference_flowunit.h
│   │   │   │       │   ├── tensorflow_gpu_inference_flowunit_test.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.cuda.tensorflow.encrypt.in
│   │   │   │       │       ├── modelbox.test.cuda.tensorflow.in
│   │   │   │       │       ├── modelbox.test.cuda.tensorflow.savemodel.in
│   │   │   │       │       └── modelbox.test.cuda.tensorflow_plugin.in
│   │   │   │       ├── tensorrt/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── common_util.h
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── nvplugin/
│   │   │   │       │   │   ├── plugin_factory.h
│   │   │   │       │   │   ├── upsample-layer.cpp
│   │   │   │       │   │   ├── upsample-layer.cu
│   │   │   │       │   │   └── upsample-layer.h
│   │   │   │       │   ├── tensorrt_inference_flowunit.cc
│   │   │   │       │   ├── tensorrt_inference_flowunit.h
│   │   │   │       │   ├── tensorrt_inference_flowunit_test.cc
│   │   │   │       │   ├── tensorrt_inference_plugin.h
│   │   │   │       │   ├── test_plugin/
│   │   │   │       │   │   ├── CMakeLists.txt
│   │   │   │       │   │   ├── generate_plugin.cc
│   │   │   │       │   │   └── generate_plugin.h
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.plugin.tensorrt.in
│   │   │   │       │       ├── modelbox.test.tensorrt.encrypt.in
│   │   │   │       │       └── modelbox.test.tensorrt.in
│   │   │   │       ├── torch/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── test_toml/
│   │   │   │       │   │   ├── modelbox.test.torch.encrypt.in
│   │   │   │       │   │   ├── modelbox.test.torch.in
│   │   │   │       │   │   └── modelbox.test.torch_2.in
│   │   │   │       │   ├── torch_inference_flowunit.cc
│   │   │   │       │   ├── torch_inference_flowunit.h
│   │   │   │       │   └── torch_inference_flowunit_test.cc
│   │   │   │       └── video_decoder/
│   │   │   │           ├── CMakeLists.txt
│   │   │   │           ├── nppi_color_converter.cc
│   │   │   │           ├── nppi_color_converter.h
│   │   │   │           ├── nvcodec_video_decoder.cc
│   │   │   │           ├── nvcodec_video_decoder.h
│   │   │   │           ├── video_decoder_flowunit.cc
│   │   │   │           ├── video_decoder_flowunit.h
│   │   │   │           └── video_decoder_flowunit_test.cc
│   │   │   └── rockchip/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── common/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   └── video_out/
│   │   │       │       ├── CMakeLists.txt
│   │   │       │       ├── ffmpeg_video_muxer.cc
│   │   │       │       ├── ffmpeg_video_muxer.h
│   │   │       │       ├── ffmpeg_writer.cc
│   │   │       │       └── ffmpeg_writer.h
│   │   │       ├── core/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── device_rockchip.cc
│   │   │       │   ├── driver_desc.cc
│   │   │       │   ├── driver_desc.h
│   │   │       │   ├── include/
│   │   │       │   │   └── modelbox/
│   │   │       │   │       └── device/
│   │   │       │   │           └── rockchip/
│   │   │       │   │               ├── device_rockchip.h
│   │   │       │   │               ├── rockchip_api.h
│   │   │       │   │               └── rockchip_memory.h
│   │   │       │   ├── libmodelbox-device-rockchip.pc.in
│   │   │       │   ├── rockchip_api.cc
│   │   │       │   └── rockchip_memory.cc
│   │   │       └── flowunit/
│   │   │           ├── CMakeLists.txt
│   │   │           ├── crop/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── crop_flowunit.cc
│   │   │           │   ├── crop_flowunit.h
│   │   │           │   └── crop_flowunit_test.cc
│   │   │           ├── image_decoder/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── image_decoder.cc
│   │   │           │   ├── image_decoder.h
│   │   │           │   └── image_decoder_test.cc
│   │   │           ├── inference_rknpu2/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── flowunit_desc.cc
│   │   │           │   ├── modelbox.test.rknpu2.inference.in
│   │   │           │   ├── rknpu2_inference.cc
│   │   │           │   ├── rknpu2_inference.h
│   │   │           │   ├── rknpu2_inference_flowunit.cc
│   │   │           │   └── rknpu2_inference_flowunit.h
│   │   │           ├── local_camera/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── local_camera_flowunit.cc
│   │   │           │   ├── local_camera_flowunit.h
│   │   │           │   ├── v4l2_camera.cc
│   │   │           │   └── v4l2_camera.h
│   │   │           ├── resize/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── resize_flowunit.cc
│   │   │           │   ├── resize_flowunit.h
│   │   │           │   └── resize_flowunit_test.cc
│   │   │           ├── to_cpuimg/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── mpp_to_cpu_flowunit.cc
│   │   │           │   ├── mpp_to_cpu_flowunit.h
│   │   │           │   └── mpp_to_cpu_flowunit_test.cc
│   │   │           ├── video_decoder/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── rk_video_decoder.cc
│   │   │           │   ├── rk_video_decoder.h
│   │   │           │   ├── video_decoder_flowunit.cc
│   │   │           │   ├── video_decoder_flowunit.h
│   │   │           │   └── video_decoder_flowunit_test.cc
│   │   │           └── video_out/
│   │   │               ├── CMakeLists.txt
│   │   │               ├── ffmpeg_video_encoder.cc
│   │   │               ├── ffmpeg_video_encoder.h
│   │   │               ├── video_out_flowunit.cc
│   │   │               ├── video_out_flowunit.h
│   │   │               └── video_out_flowunit_test.cc
│   │   ├── graph_conf/
│   │   │   ├── CMakeLists.txt
│   │   │   └── graphviz/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── graph_conf_desc.cc
│   │   │       ├── graphviz_conf.cc
│   │   │       └── graphviz_conf.h
│   │   ├── inference_engine/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── dlengine/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── dlengine_inference.cc
│   │   │   │   ├── dlengine_inference.h
│   │   │   │   ├── dlengine_inference_flowunit.h
│   │   │   │   ├── dlengine_inference_flowunit_test.cc
│   │   │   │   └── dlengine_inference_flowunit_test.h
│   │   │   ├── mindspore/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── mindspore_inference.cc
│   │   │   │   ├── mindspore_inference.h
│   │   │   │   ├── mindspore_inference_flowunit_test.cc
│   │   │   │   └── mindspore_inference_flowunit_test.h
│   │   │   └── tensorflow/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── tensorflow_inference_common.cc
│   │   │       ├── tensorflow_inference_common.h
│   │   │       ├── tensorflow_inference_plugin.h
│   │   │       └── test_plugin/
│   │   │           ├── CMakeLists.txt
│   │   │           ├── generate_plugin.cc
│   │   │           └── generate_plugin.h
│   │   └── virtual/
│   │       ├── CMakeLists.txt
│   │       ├── inference/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── virtualdriver_desc.cc
│   │       │   ├── virtualdriver_inference.cc
│   │       │   └── virtualdriver_inference.h
│   │       ├── java/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── virtualdriver_desc.cc
│   │       │   ├── virtualdriver_java.cc
│   │       │   └── virtualdriver_java.h
│   │       ├── python/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── virtualdriver_desc.cc
│   │       │   ├── virtualdriver_python.cc
│   │       │   └── virtualdriver_python.h
│   │       └── yolobox/
│   │           ├── CMakeLists.txt
│   │           ├── virtualdriver_desc.cc
│   │           ├── virtualdriver_yolobox.cc
│   │           └── virtualdriver_yolobox.h
│   ├── java/
│   │   ├── CMakeLists.txt
│   │   ├── jni/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── jni_export/
│   │   │   │   ├── buffer.cc
│   │   │   │   ├── bufferlist.cc
│   │   │   │   ├── configuration.cc
│   │   │   │   ├── data_meta.cc
│   │   │   │   ├── datacontext.cc
│   │   │   │   ├── device.cc
│   │   │   │   ├── external_data_map.cc
│   │   │   │   ├── external_data_select.cc
│   │   │   │   ├── flow.cc
│   │   │   │   ├── flow_streamio.cc
│   │   │   │   ├── flowunit.cc
│   │   │   │   ├── flowunit_builder.cc
│   │   │   │   ├── flowunit_desc.cc
│   │   │   │   ├── flowunit_error.cc
│   │   │   │   ├── flowunit_event.cc
│   │   │   │   ├── flowunit_input.cc
│   │   │   │   ├── flowunit_output.cc
│   │   │   │   ├── log.cc
│   │   │   │   ├── native_object.cc
│   │   │   │   ├── session_context.cc
│   │   │   │   └── status.cc
│   │   │   ├── jni_native_object.cc
│   │   │   ├── jni_native_object.h
│   │   │   ├── log.cc
│   │   │   ├── log.h
│   │   │   ├── modelbox_jni.cc
│   │   │   ├── modelbox_jni.h
│   │   │   ├── scoped_jvm.cc
│   │   │   ├── scoped_jvm.h
│   │   │   ├── throw.cc
│   │   │   ├── throw.h
│   │   │   ├── utils.cc
│   │   │   └── utils.h
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── modelbox/
│   │       │               ├── Buffer.java
│   │       │               ├── BufferList.java
│   │       │               ├── Configuration.java
│   │       │               ├── DataContext.java
│   │       │               ├── DataMeta.java
│   │       │               ├── Device.java
│   │       │               ├── ExternalDataMap.java
│   │       │               ├── ExternalDataSelect.java
│   │       │               ├── Flow.java
│   │       │               ├── FlowStreamIO.java
│   │       │               ├── FlowUnit.java
│   │       │               ├── FlowUnitBuilder.java
│   │       │               ├── FlowUnitDesc.java
│   │       │               ├── FlowUnitError.java
│   │       │               ├── FlowUnitEvent.java
│   │       │               ├── FlowUnitInput.java
│   │       │               ├── FlowUnitOutput.java
│   │       │               ├── Log.java
│   │       │               ├── ModelBox.java
│   │       │               ├── ModelBoxException.java
│   │       │               ├── NativeObject.java
│   │       │               ├── SessionContext.java
│   │       │               ├── StatisticsItem.java
│   │       │               ├── Status.java
│   │       │               └── StatusCode.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── modelbox/
│   │                       ├── ModelBoxConfigurationTest.java
│   │                       ├── ModelBoxFlowTest.java
│   │                       ├── ModelBoxLogTest.java
│   │                       ├── ModelBoxMiscTest.java
│   │                       ├── ModelBoxStatusTest.java
│   │                       ├── ModelboxBufferTest.java
│   │                       ├── TestConfig.java
│   │                       └── TestConfig.json.in
│   ├── libmodelbox/
│   │   ├── CMakeLists.txt
│   │   ├── base/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── arch/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── android/
│   │   │   │   │   ├── base64_simd.cc
│   │   │   │   │   ├── stats.cc
│   │   │   │   │   └── stats.h
│   │   │   │   └── linux/
│   │   │   │       ├── aarch64/
│   │   │   │       │   └── base64_simd.cc
│   │   │   │       ├── default/
│   │   │   │       │   └── default.cc
│   │   │   │       ├── stats.cc
│   │   │   │       ├── stats.h
│   │   │   │       └── x86_64/
│   │   │   │           └── base64_simd.cc
│   │   │   ├── config/
│   │   │   │   └── configuration.cc
│   │   │   ├── device/
│   │   │   │   ├── device.cc
│   │   │   │   ├── device_factory.cc
│   │   │   │   ├── device_manager.cc
│   │   │   │   └── device_memory.cc
│   │   │   ├── drivers/
│   │   │   │   ├── driver.cc
│   │   │   │   ├── driver_utils.cc
│   │   │   │   ├── register_flowunit.cc
│   │   │   │   └── virtual_driver.cc
│   │   │   ├── graph_manager/
│   │   │   │   └── graph_manager.cc
│   │   │   ├── include/
│   │   │   │   └── modelbox/
│   │   │   │       └── base/
│   │   │   │           ├── any.h
│   │   │   │           ├── base64_simd.h
│   │   │   │           ├── blocking_queue.h
│   │   │   │           ├── collector.h
│   │   │   │           ├── configuration.h
│   │   │   │           ├── crypto.h
│   │   │   │           ├── device.h
│   │   │   │           ├── device_memory.h
│   │   │   │           ├── driver.h
│   │   │   │           ├── driver_api_helper.h
│   │   │   │           ├── driver_utils.h
│   │   │   │           ├── error_info.h
│   │   │   │           ├── executor.h
│   │   │   │           ├── graph_manager.h
│   │   │   │           ├── list.h
│   │   │   │           ├── log.h
│   │   │   │           ├── memory_pool.h
│   │   │   │           ├── memory_statistic.h
│   │   │   │           ├── os.h
│   │   │   │           ├── popen.h
│   │   │   │           ├── refcache.h
│   │   │   │           ├── register_flowunit.h
│   │   │   │           ├── slab.h
│   │   │   │           ├── status.h
│   │   │   │           ├── thread_pool.h
│   │   │   │           ├── timer.h
│   │   │   │           ├── utils.h
│   │   │   │           └── uuid.h
│   │   │   ├── log/
│   │   │   │   └── log.cc
│   │   │   ├── mem/
│   │   │   │   ├── memory_pool.cc
│   │   │   │   └── slab.cc
│   │   │   ├── status/
│   │   │   │   └── status.cc
│   │   │   ├── thread_pool/
│   │   │   │   └── thread_pool.cc
│   │   │   ├── timer/
│   │   │   │   └── timer.cc
│   │   │   └── utils/
│   │   │       ├── any.cc
│   │   │       ├── crypto.cc
│   │   │       ├── json_toml_convert.cc
│   │   │       ├── popen.cc
│   │   │       ├── refcache.cc
│   │   │       ├── utils.cc
│   │   │       └── uuid.cc
│   │   ├── config.h.in
│   │   ├── engine/
│   │   │   ├── api/
│   │   │   │   ├── flow_graph_desc.cc
│   │   │   │   ├── flow_node_desc.cc
│   │   │   │   └── flowunit_builder.cc
│   │   │   ├── buffer.cc
│   │   │   ├── buffer_index_info.cc
│   │   │   ├── buffer_list.cc
│   │   │   ├── buffer_type.cc
│   │   │   ├── common/
│   │   │   │   ├── data_hub.cc
│   │   │   │   └── data_hub.h
│   │   │   ├── data_context.cc
│   │   │   ├── dynamic_graph/
│   │   │   │   ├── context.cc
│   │   │   │   ├── data_handler.cc
│   │   │   │   └── modelbox_engine.cc
│   │   │   ├── error.cc
│   │   │   ├── external_data_map.cc
│   │   │   ├── external_data_simple.cc
│   │   │   ├── flow_stream_io.cc
│   │   │   ├── flowunit.cc
│   │   │   ├── flowunit_balancer.cc
│   │   │   ├── flowunit_data_executor.cc
│   │   │   ├── flowunit_group.cc
│   │   │   ├── flowunit_manager.cc
│   │   │   ├── graph/
│   │   │   │   └── graph_checker.cc
│   │   │   ├── graph.cc
│   │   │   ├── inner_event.cc
│   │   │   ├── match_stream.cc
│   │   │   ├── node.cc
│   │   │   ├── port.cc
│   │   │   ├── scheduler/
│   │   │   │   ├── flow_scheduler.cc
│   │   │   │   └── flow_scheduler.h
│   │   │   ├── session.cc
│   │   │   ├── session_context.cc
│   │   │   ├── single_node.cc
│   │   │   ├── stream.cc
│   │   │   ├── tensor.cc
│   │   │   ├── tensor_list.cc
│   │   │   ├── type.cc
│   │   │   └── virtual_node.cc
│   │   ├── flow/
│   │   │   └── flow.cc
│   │   ├── include/
│   │   │   └── modelbox/
│   │   │       ├── buffer.h
│   │   │       ├── buffer_index_info.h
│   │   │       ├── buffer_list.h
│   │   │       ├── buffer_type.h
│   │   │       ├── context.h
│   │   │       ├── data_context.h
│   │   │       ├── data_handler.h
│   │   │       ├── data_source_parser_plugin.h
│   │   │       ├── error.h
│   │   │       ├── external_data_map.h
│   │   │       ├── external_data_simple.h
│   │   │       ├── flow.h
│   │   │       ├── flow_graph_desc.h
│   │   │       ├── flow_node_desc.h
│   │   │       ├── flow_stream_io.h
│   │   │       ├── flowunit.h
│   │   │       ├── flowunit_api_helper.h
│   │   │       ├── flowunit_balancer.h
│   │   │       ├── flowunit_builder.h
│   │   │       ├── flowunit_data_executor.h
│   │   │       ├── flowunit_group.h
│   │   │       ├── graph.h
│   │   │       ├── graph_checker.h
│   │   │       ├── iam_auth.h
│   │   │       ├── inner_event.h
│   │   │       ├── match_stream.h
│   │   │       ├── modelbox.h
│   │   │       ├── modelbox_engine.h
│   │   │       ├── node.h
│   │   │       ├── obs_client.h
│   │   │       ├── output_broker_plugin.h
│   │   │       ├── port.h
│   │   │       ├── profiler.h
│   │   │       ├── scheduler.h
│   │   │       ├── session.h
│   │   │       ├── session_context.h
│   │   │       ├── single_node.h
│   │   │       ├── statistics.h
│   │   │       ├── stream.h
│   │   │       ├── tensor.h
│   │   │       ├── tensor_list.h
│   │   │       ├── token_header.h
│   │   │       ├── type.h
│   │   │       └── virtual_node.h
│   │   ├── libmodelbox.pc.in
│   │   └── profiling/
│   │       ├── performance.cc
│   │       ├── profiler.cc
│   │       ├── statistics.cc
│   │       └── trace.cc
│   ├── modelbox/
│   │   ├── CMakeLists.txt
│   │   ├── common/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── command.cc
│   │   │   ├── config.cc
│   │   │   ├── control_msg.cc
│   │   │   ├── flowuint_info.cc
│   │   │   ├── include/
│   │   │   │   └── modelbox/
│   │   │   │       └── common/
│   │   │   │           ├── command.h
│   │   │   │           ├── config.h
│   │   │   │           ├── control_msg.h
│   │   │   │           ├── flowunit_info.h
│   │   │   │           ├── log.h
│   │   │   │           └── utils.h
│   │   │   ├── log.cc
│   │   │   └── utils.cc
│   │   ├── manager/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── etc/
│   │   │   │   ├── init.d/
│   │   │   │   │   └── modelbox-manager.in
│   │   │   │   ├── manager-opts
│   │   │   │   ├── manager.conf.in
│   │   │   │   └── modelbox-manager.service.in
│   │   │   ├── include/
│   │   │   │   └── modelbox/
│   │   │   │       └── manager/
│   │   │   │           └── manager_monitor_client.h
│   │   │   └── src/
│   │   │       ├── common.c
│   │   │       ├── common.h
│   │   │       ├── conf.c
│   │   │       ├── conf.h
│   │   │       ├── hashtable.h
│   │   │       ├── list.h
│   │   │       ├── log.c
│   │   │       ├── log.h
│   │   │       ├── manager.c
│   │   │       ├── manager.h
│   │   │       ├── manager_common.h
│   │   │       ├── manager_conf.c
│   │   │       ├── manager_conf.h
│   │   │       ├── manager_monitor.c
│   │   │       ├── manager_monitor.h
│   │   │       ├── manager_monitor_client.c
│   │   │       ├── util.c
│   │   │       └── util.h
│   │   ├── server/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── bin/
│   │   │   │   └── develop
│   │   │   ├── config.cc
│   │   │   ├── config.h
│   │   │   ├── control-command.cc
│   │   │   ├── control-command.h
│   │   │   ├── control.cc
│   │   │   ├── control.h
│   │   │   ├── etc/
│   │   │   │   ├── init.d/
│   │   │   │   │   └── modelbox.in
│   │   │   │   ├── modelbox-dev.conf.in
│   │   │   │   ├── modelbox-opts
│   │   │   │   ├── modelbox-template.conf.in
│   │   │   │   ├── modelbox.conf.in
│   │   │   │   └── modelbox.service.in
│   │   │   ├── http_helper.cc
│   │   │   ├── include/
│   │   │   │   └── modelbox/
│   │   │   │       └── server/
│   │   │   │           ├── http_helper.h
│   │   │   │           ├── job.h
│   │   │   │           ├── job_manager.h
│   │   │   │           ├── plugin.h
│   │   │   │           ├── statistics.h
│   │   │   │           ├── task.h
│   │   │   │           ├── task_manager.h
│   │   │   │           ├── timer.h
│   │   │   │           └── utils.h
│   │   │   ├── job.cc
│   │   │   ├── job_manager.cc
│   │   │   ├── js_engine.cc
│   │   │   ├── js_engine.h
│   │   │   ├── main.cc
│   │   │   ├── misc/
│   │   │   │   └── modelbox-server-cmd.json.in
│   │   │   ├── plugin/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── editor/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── config.h.in
│   │   │   │   │   ├── editor_plugin.cc
│   │   │   │   │   └── editor_plugin.h
│   │   │   │   └── tasks/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── modelbox_plugin.cc
│   │   │   │       └── modelbox_plugin.h
│   │   │   ├── plugin.cc
│   │   │   ├── server.cc
│   │   │   ├── server.h
│   │   │   ├── server_plugin.cc
│   │   │   ├── server_plugin.h
│   │   │   ├── server_plugin_js.cc
│   │   │   ├── task.cc
│   │   │   ├── task_manager.cc
│   │   │   ├── timer.cc
│   │   │   └── utils.cc
│   │   ├── serving/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── main.cc
│   │   │   ├── serving.cc
│   │   │   ├── serving.h
│   │   │   └── test_file/
│   │   │       ├── custom_service.py.in
│   │   │       ├── model.toml.in
│   │   │       └── test_client.py.in
│   │   └── tool/
│   │       ├── CMakeLists.txt
│   │       ├── bin/
│   │       │   └── modelbox-python-debug
│   │       ├── driver.cc
│   │       ├── driver.h
│   │       ├── external_command.cc
│   │       ├── external_command.h
│   │       ├── flow.cc
│   │       ├── flow.h
│   │       ├── help.cc
│   │       ├── help.h
│   │       ├── key.cc
│   │       ├── key.h
│   │       ├── log.h
│   │       ├── main.cc
│   │       ├── server_command.cc
│   │       └── server_command.h
│   └── python/
│       ├── CMakeLists.txt
│       ├── MANIFEST.in
│       ├── include/
│       │   └── modelbox/
│       │       └── python/
│       │           └── log.h
│       ├── lib/
│       │   ├── log.cc
│       │   └── modelbox.cc
│       ├── modelbox/
│       │   └── __init__.py
│       ├── setup.py.in
│       └── test/
│           ├── __init__.py
│           ├── op/
│           │   ├── op_args/
│           │   │   ├── modelbox.op_args.in
│           │   │   └── op_args.py
│           │   ├── op_brightness/
│           │   │   ├── modelbox.op_brightness.in
│           │   │   └── op_brightness.py
│           │   ├── op_buffer/
│           │   │   ├── modelbox.op_buffer.in
│           │   │   └── op_buffer.py
│           │   ├── op_image/
│           │   │   ├── modelbox.op_image.in
│           │   │   └── op_image.py
│           │   ├── op_resize/
│           │   │   ├── modelbox.op_resize.in
│           │   │   └── op_resize.py
│           │   └── op_show/
│           │       ├── modelbox.op_show.in
│           │       └── op_show.py
│           ├── test_api_mode.py
│           ├── test_buffer.py
│           ├── test_config.py.in
│           ├── test_configuration.py
│           ├── test_dynamic_graph.py
│           ├── test_flow.py
│           ├── test_log.py
│           ├── test_model.py
│           ├── test_modelbox.py
│           ├── test_session.py
│           └── test_status.py
├── test/
│   ├── CMakeLists.txt
│   ├── assets/
│   │   ├── ascend_crop_yuv
│   │   ├── ascend_padding_yuv
│   │   ├── ascend_resize_yuv
│   │   ├── atc_inference/
│   │   │   ├── 2d_2048_w_stage1_pad0.om
│   │   │   └── 2d_2048_w_stage1_pad0_en.om
│   │   ├── auth/
│   │   │   └── auth_info.toml
│   │   ├── mindspore_inference/
│   │   │   ├── tensor_add.mindir
│   │   │   ├── tensor_add.ms
│   │   │   ├── tensor_add_en.mindir
│   │   │   └── tensor_add_en.ms
│   │   ├── obs/
│   │   │   ├── obs_download.toml
│   │   │   └── obs_upload.toml
│   │   ├── resize_cpu/
│   │   │   └── virtual_python_test.toml
│   │   ├── rockchip_112x110_bgr
│   │   ├── rockchip_160x120_bgr
│   │   ├── rockchip_640x480_bgr
│   │   ├── rockchip_crop_bgr
│   │   ├── rockchip_decoder_test_bgr
│   │   ├── tensorflow/
│   │   │   ├── 1.13.1/
│   │   │   │   ├── tensorflow_pb/
│   │   │   │   │   └── frozen_model.pb
│   │   │   │   └── tensorflow_save_model/
│   │   │   │       ├── saved_model.pb
│   │   │   │       └── variables/
│   │   │   │           ├── variables.data-00000-of-00001
│   │   │   │           └── variables.index
│   │   │   ├── 1.15.0/
│   │   │   │   ├── tensorflow_pb/
│   │   │   │   │   ├── frozen_model.pb
│   │   │   │   │   └── frozen_model_en.pb
│   │   │   │   └── tensorflow_save_model/
│   │   │   │       ├── saved_model.pb
│   │   │   │       └── variables/
│   │   │   │           ├── variables.data-00000-of-00001
│   │   │   │           └── variables.index
│   │   │   └── 2.6.0-dev20210809/
│   │   │       ├── tensorflow_pb/
│   │   │       │   └── frozen_model.pb
│   │   │       └── tensorflow_save_model/
│   │   │           ├── saved_model.pb
│   │   │           └── variables/
│   │   │               ├── variables.data-00000-of-00001
│   │   │               └── variables.index
│   │   ├── tensorrt/
│   │   │   ├── model.onnx
│   │   │   └── model_en.onnx
│   │   ├── test_inference/
│   │   │   └── virtual_model_test.toml
│   │   ├── test_model/
│   │   │   └── test_dynamic.onnx
│   │   ├── torch/
│   │   │   ├── pytorch_example.pt
│   │   │   ├── pytorch_example_2.pt
│   │   │   └── pytorch_example_en.pt
│   │   ├── video/
│   │   │   ├── rgb_460800_480x320_a.data
│   │   │   └── rgb_460800_480x320_b.data
│   │   └── yolobox/
│   │       ├── data_144000_0
│   │       └── data_36000_0
│   ├── drivers/
│   │   ├── CMakeLists.txt
│   │   ├── common/
│   │   │   ├── mock_cert.cc
│   │   │   ├── mock_cert.h
│   │   │   ├── tensorflow_inference/
│   │   │   │   ├── tensorflow_inference_mock.cc
│   │   │   │   └── tensorflow_inference_mock.h
│   │   │   └── video_decoder/
│   │   │       ├── video_decoder_mock.cc
│   │   │       └── video_decoder_mock.h
│   │   ├── driver_flow_test.cc
│   │   └── driver_flow_test.h
│   ├── function/
│   │   ├── CMakeLists.txt
│   │   ├── api_test.cc
│   │   ├── car_detection/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── car_flow.cc
│   │   │   ├── car_flow.h
│   │   │   └── car_flow_test.cc
│   │   ├── demo_test.cc
│   │   └── dynamic_graph_test.cc
│   ├── manager/
│   │   ├── CMakeLists.txt
│   │   ├── manager_test.cc
│   │   └── test_main.cc
│   ├── mock/
│   │   ├── CMakeLists.txt
│   │   ├── drivers/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── device_mockdevice/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── device_mockdevice.cc
│   │   │   │   ├── driver_desc.cc
│   │   │   │   ├── driver_desc.h
│   │   │   │   ├── include/
│   │   │   │   │   └── modelbox/
│   │   │   │   │       └── device/
│   │   │   │   │           └── mockdevice/
│   │   │   │   │               └── device_mockdevice.h
│   │   │   │   └── libmodelbox-device-mockdevice.pc.in
│   │   │   ├── flowunit_mockflowunit/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── flowunit_desc.cc
│   │   │   │   ├── flowunit_desc.h
│   │   │   │   ├── flowunit_mockflowunit.cc
│   │   │   │   └── flowunit_mockflowunit.h
│   │   │   ├── graph_conf_mockgraphconf/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── graph_conf_desc.cc
│   │   │   │   ├── graph_conf_desc.h
│   │   │   │   ├── graph_conf_mockgraphconf.cc
│   │   │   │   └── graph_conf_mockgraphconf.h
│   │   │   ├── mock_driver_ctl.cc
│   │   │   └── mock_driver_ctl.h
│   │   ├── flowunit/
│   │   │   ├── CMakeLists.txt
│   │   │   └── passthrouth/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── passthrouth.cc
│   │   │       └── passthrouth.h
│   │   └── minimodelbox/
│   │       ├── CMakeLists.txt
│   │       ├── mock_server.cc
│   │       ├── mock_server.h
│   │       ├── mock_tool.cc
│   │       ├── mock_tool.h
│   │       ├── mockflow.cc
│   │       └── mockflow.h
│   ├── test_config.h.in
│   ├── test_main.cc
│   └── unit/
│       ├── CMakeLists.txt
│       ├── libmodelbox/
│       │   ├── base/
│       │   │   ├── blocking_queue_test.cc
│       │   │   ├── configuration_test.cc
│       │   │   ├── crypto_test.cc
│       │   │   ├── device_test.cc
│       │   │   ├── driver_test.cc
│       │   │   ├── graph_manager_test.cc
│       │   │   ├── list_test.cc
│       │   │   ├── log_test.cc
│       │   │   ├── memory_pool_test.cc
│       │   │   ├── memory_statistic_test.cc
│       │   │   ├── os_stats_test.cc
│       │   │   ├── popen_test.cc
│       │   │   ├── refcache_test.cc
│       │   │   ├── slab_test.cc
│       │   │   ├── status_test.cc
│       │   │   ├── thread_pool_test.cc
│       │   │   ├── timer_test.cc
│       │   │   └── utils_test.cc
│       │   ├── engine/
│       │   │   ├── buffer_index_info_test.cc
│       │   │   ├── buffer_list_test.cc
│       │   │   ├── buffer_test.cc
│       │   │   ├── buffer_type_test.cc
│       │   │   ├── data_context_test.cc
│       │   │   ├── data_hub_test.cc
│       │   │   ├── flow_graph_desc_test.cc
│       │   │   ├── flow_scheduler_test.cc
│       │   │   ├── flowunit_balancer_test.cc
│       │   │   ├── flowunit_data_executor_test.cc
│       │   │   ├── flowunit_group_test.cc
│       │   │   ├── flowunit_test.cc
│       │   │   ├── graph_checker_test.cc
│       │   │   ├── graph_test.cc
│       │   │   ├── match_stream_test.cc
│       │   │   ├── node_test.cc
│       │   │   ├── port_test.cc
│       │   │   ├── session_test.cc
│       │   │   ├── stream_test.cc
│       │   │   ├── tensor_list_test.cc
│       │   │   ├── type_test.cc
│       │   │   └── virtual_node_test.cc
│       │   ├── flow_test.cc
│       │   └── profiling/
│       │       └── profiler_test.cc
│       ├── modelbox/
│       │   ├── server_test.cc
│       │   ├── serving_test.cc
│       │   └── utils_test.cc
│       └── plugin/
│           └── task_manger_test.cc
└── thirdparty/
    ├── CMake/
    │   ├── APIGW_CPP_CMakeList.in
    │   ├── Demo_Files_CMakeList.in
    │   ├── Huawei_Secure_C_CMakeList.in
    │   ├── cpp_httplib_cmakelist.in
    │   ├── local-package.in
    │   ├── pre-download.in
    │   └── tlog_cmakelist.in
    └── CMakeLists.txt

================================================
FILE CONTENTS
================================================

================================================
FILE: .clang-format
================================================
# Use the Google style in this project.
BasedOnStyle: Google


================================================
FILE: .clang-tidy
================================================
#
# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# clang-tidy checks
# https://clang.llvm.org/extra/clang-tidy/checks/list.html

Checks: >
  -*,
  modernize-*,
  bugprone-*,
  concurrency-*,
  misc-*,
  readability-*,
  performance-*,
  portability-*,
  google-*,
  -modernize-use-trailing-return-type,
  -modernize-avoid-c-arrays,
  -modernize-make-unique,
  -modernize-use-using,
  -modernize-use-equals-delete,
  -modernize-use-nodiscard,
  -modernize-use-transparent-functors,
  -modernize-deprecated-headers,
  -bugprone-lambda-function-name,
  -bugprone-narrowing-conversions,
  -bugprone-branch-clone,
  -bugprone-reserved-identifier,
  -concurrency-mt-unsafe,
  -misc-non-private-member-variables-in-classes,
  -misc-unused-parameters,
  -misc-lambda-function-name,
  -misc-misplaced-widening-cast,
  -misc-no-recursion,
  -readability-simplify-boolean-expr,
  -readability-container-size-empty,
  -readability-convert-member-functions-to-static,
  -readability-implicit-bool-conversion,
  -readability-make-member-function-const,
  -readability-magic-numbers,
  -readability-use-anyofallof,
  -readability-function-cognitive-complexity,
  -google-readability-avoid-underscore-in-googletest-name,
  -google-default-arguments,
  -google-runtime-int,
  -google-runtime-references,
  -google-readability-casting,
  -google-readability-todo,
  -google-explicit-constructor,
  

# enable this when required
  # clang-analyzer-*,
  # clang-analyzer-deadcode.DeadStores,
  # clang-analyzer-optin.performance.Padding,
  # clang-analyzer-optin.cplusplus.VirtualCall,

# Turn all the warnings from the checks above into errors.
HeaderFilterRegex: '((?!build/)src|test/unit|test/drivers|test/function|test/mock)/*'
FormatStyle: file


================================================
FILE: .github/ISSUE_TEMPLATE/feature.md
================================================
---
name: 需求建议 | Feature Request
about: 需求建议描述 | Use this template for raising a feature request
title: ''
labels: type:feature
assignees: ''

---

请确认提交的需求,而不是问题或求助。  
Please make sure that this is a feature request.

**运行环境信息 | System information** (请提供足够详细的信息 | Please provide as much relevant information as possible)

- 操作系统信息 | Operation System information
- GPU或加速卡信息 | GPU or NPU information
- 使用的推理引擎 | Inference engine information
- 编程语言 | Programming language (C++, Python, Java)
- 是否愿意贡献此需求 | Are you willing to contribute it(Yes/No)

**需求应用场景 | Describe the feature**

**是否修改当前API接口,怎么修改 | Will this change the current api? How?**

**特性受益用户 | Benefit users**

**建议的方案 | Suggest solution**

**其他补充信息 | Other info**

---


================================================
FILE: .github/ISSUE_TEMPLATE/issue.md
================================================
---
name: "问题报告 | Bug Issue"
about: "问题报告说明 | Use this template for reporting a bug"
labels: type:bug

---

在提交BUG之前,请阅读帮助文档的FAQ,或在现有issue中搜索是否有类似问题。  
Before submitting a bug, please read the FAQ of the help documentation, or search for similar issues in existing issues.

**运行环境信息 | System information** (请提供足够详细的信息 | Please provide as much relevant information as possible)

- 操作系统信息 | Operation System information
- 设备信息 | Device information
- ModelBox版本 | ModelBox version
- GPU或加速卡信息 | GPU or NPU information
- 使用的推理引擎 | Inference engine information
- 编程语言 | Programming language (C++, Python, Java)

**描述问题 | Describe the current behavior:**

**期望的行为 | Describe the expected behavior:**

**重现步骤描述 | Standalone code to reproduce the issue:**

提供具体重现问题的步骤,如果可能,提供相关的截图信息,日志信息。  
Provide a reproducible test case that is the bare minimum necessary to replicate the problem.

**日志信息 | Logs**

收集ModelBox的运行日志,路径为/var/log/modelbox
Please Provide modleobx logs, log path /var/log/modelbox

**其他信息 | Other Info.**


================================================
FILE: .github/workflows/gitee-mirror.yml
================================================
name: Mirror-To-Gitee

on:
  workflow_dispatch:
  schedule:
    - cron: '45 17 * * *'

concurrency:
  group: git-mirror

jobs:
  git-mirror:
    runs-on: ubuntu-latest
    if: github.repository == 'modelbox-ai/modelbox'
    steps:
      - uses: wearerequired/git-mirror-action@v1
        env:
          SSH_PRIVATE_KEY: ${{ secrets.GITEE_SSH_PRIVATE_KEY }}
        with:
          source-repo: 'https://github.com/modelbox-ai/modelbox.git'
          destination-repo: 'git@gitee.com:modelbox/modelbox.git'


================================================
FILE: .github/workflows/manual-build-with-image.yml
================================================
name: Build With Specific Images

on:
  workflow_dispatch:
    inputs:
      images_name:
        type: choice
        description: Images Lists
        options: 
        - modelbox/modelbox-develop-tensorrt_8.4.2-cuda_11.2-ubuntu-x86_64
        - modelbox/modelbox-develop-tensorflow_2.6.0-cuda_11.2-ubuntu-x86_64
        - modelbox/modelbox-develop-libtorch_1.9.1-cuda_10.2-ubuntu-x86_64
        - modelbox/modelbox-develop-tensorrt_7.1.3-cuda_10.2-ubuntu-x86_64
        - modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-ubuntu-x86_64
        - modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-d310p-ubuntu-x86_64
        - modelbox/modelbox-develop-tensorrt_8.4.2-cuda_11.2-openeuler-x86_64
        - modelbox/modelbox-develop-tensorflow_2.6.0-cuda_11.2-openeuler-x86_64
        - modelbox/modelbox-develop-libtorch_1.9.1-cuda_10.2-openeuler-x86_64
        - modelbox/modelbox-develop-tensorrt_7.1.3-cuda_10.2-openeuler-x86_64
        - modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-openeuler-x86_64
        - modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-d310p-openeuler-x86_64

env:
  BUILD_TYPE: Release

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: ${{ github.event.inputs.images_name }}
    steps:
    - name: Checkout
      uses: actions/checkout@v3
    - name: Configure CMake
      run: |
        mkdir build
        cd build
        cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
    - name: Build
      working-directory: build
      run: make package -j8
    - name: Release check
      run: ./docker/artifact_check.sh
      shell: bash
    - name: Test
      working-directory: build
      run: |
        dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}') || true
        rpm -e $(rpm -qa|grep modelbox) || true
        make build-test -j8
        unset LD_LIBRARY_PATH
        make unittest


================================================
FILE: .github/workflows/manual-build-with-rockchip-images.yml
================================================
name: Build With rockchip images
on:
  workflow_dispatch:
    inputs:
      images_rk_name:
        type: choice
        description: Rockchip Images Lists
        options: 
        - 356x
        - 3588
      version:
        description: 'new image tag(e.g. v1.1.0)'
        required: true
        default: 'latest'

jobs:
  complie_rockchip_rknnrt_build_ubuntu_image:
    runs-on: [rockchip-unit, Linux, ARM64]
    outputs:
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_VERSION: ${{ steps.env.outputs.IMAGE_VERSION }}
    name: Build on ${{ matrix.distro }} ${{ matrix.arch }}

    strategy:
      matrix:
        include:
          - arch: aarch64
            distro: ubuntu20.04
    steps:
      - name: Set-env
        id: env
        run: |
          echo "::set-output name=IMAGE_NAME_DEV::modelbox/modelbox-build-rockchip-rknnrt-${{ github.event.inputs.images_rk_name }}-ubuntu-aarch64"
          echo "::set-output name=IMAGE_VERSION::${{ github.event.inputs.version }}"
          echo "the docker name is ${{ steps.env.outputs.IMAGE_NAME_DEV }}."
          echo "the docker version is ${{ steps.env.outputs.IMAGE_VERSION }}."
      - name: Checkout
        uses: actions/checkout@v3.1.0
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2.0.0
      - name: Login to DockerHub
        uses: docker/login-action@v2.0.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download for rockchip package
        run: |
          echo "the arch is ${{ runner.arch }}."
          chmod +x ./docker/prepare_for_rockchip.sh
          ./docker/prepare_for_rockchip.sh ${{ github.event.inputs.images_rk_name }}
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@v3.1.1
        with:
          push: true
          context: .
          file: docker/Dockerfile.rknnrt.build.ubuntu
          tags: |
            ${{ steps.env.outputs.IMAGE_NAME_DEV }}:latest
            ${{ steps.env.outputs.IMAGE_NAME_DEV }}:${{ steps.env.outputs.IMAGE_VERSION }}

================================================
FILE: .github/workflows/merge-request-ascend.yml
================================================
name: Merge Request Ascend

on:
  pull_request:
    branches: 
      - main

concurrency: 
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  BUILD_TYPE: Release

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-ubuntu-x86_64
    steps:
    - uses: actions/checkout@v3
    - run: apt update
    - name: Set up JDK 11
      uses: actions/setup-java@v1
      with:
        java-version: 11
        maven-version: '3.6.2'
        cache: 'maven'
    - name: Set up Maven
      uses: stCarolas/setup-maven@v4.4
      with:
        maven-version: 3.8.2
    - uses: actions/cache@v1
      with:
        path: /root/.m2/repository
        key: ${{ runner.os }}-maven-${{ hashFiles('src/java/pom.xml') }}
        restore-keys: |
          ${{ runner.os }}-maven-
    - name: ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: ubuntu-latest-x86_64
        max-size: 512M
    - name: Remove old modelbox
      continue-on-error: true
      run: |
        dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}')

    - name: Configure CMake
      run: |
        mkdir build
        cd build
        cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_WEBUI=off -DCLANG_TIDY=on -DCLANG_TIDY_AS_ERROR=on -DWITH_JAVA=on

    - name: Build
      working-directory: build
      run: |
        make package -j8

    - name: Test
      working-directory: build
      run: |
        make build-test -j8
        unset LD_LIBRARY_PATH
        make unittest


================================================
FILE: .github/workflows/merge-request-cuda.yml
================================================
name: Merge Request CUDA

on:
  pull_request:
    branches: 
      - main

concurrency: 
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  BUILD_TYPE: Release

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: modelbox/modelbox-develop-tensorflow_2.6.0-cuda_11.2-ubuntu-x86_64

    steps:
    - uses: actions/checkout@v3
    - run: apt update
    - name: Set up JDK 11
      uses: actions/setup-java@v1
      with:
        java-version: 11
        maven-version: '3.6.2'
        cache: 'maven'
    - name: Set up Maven
      uses: stCarolas/setup-maven@v4.4
      with:
        maven-version: 3.8.2
    - uses: actions/cache@v1
      with:
        path: /root/.m2/repository
        key: ${{ runner.os }}-maven-${{ hashFiles('src/java/pom.xml') }}
        restore-keys: |
          ${{ runner.os }}-maven-
    - name: ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: ubuntu-latest-x86_64
        max-size: 512M
    - name: Remove old modelbox
      continue-on-error: true
      run: |
        dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}')

    - name: Configure CMake
      run: |
        mkdir build
        cd build
        cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_WEBUI=off -DCLANG_TIDY=on -DCLANG_TIDY_AS_ERROR=on -DWITH_JAVA=on

    - name: Build
      working-directory: build
      run: |
        make package -j8

    - name: Test
      working-directory: build
      run: |
        make build-test -j8
        unset LD_LIBRARY_PATH
        make unittest


================================================
FILE: .github/workflows/merge-request-rockchip.yml
================================================
name: Merge Request RockChip
on:
  pull_request:
    branches:
      - main

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  BUILD_TYPE: Release
  
jobs:
  build:
    runs-on: [rockchip-build, Linux, ARM64]

    steps:
      - run: echo "the build begin"
      - name: Checkout
        uses: actions/checkout@v3
      
      - name: ccache
        uses: hendrikmuhs/ccache-action@v1.2
        with:
          key: ubuntu-latest-arm64
          max-size: 1024M

      - name: Remove old modelbox
        continue-on-error: true
        run: |
          dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}')

      - name: Configure CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_WEBUI=off -DCLANG_TIDY=on -DCLANG_TIDY_AS_ERROR=on

      - name: build
        working-directory: build
        run: |
          make package -j8

      - name: show result
        working-directory: build
        run: |
          ls -l src/drivers/devices/rockchip/core
          ls -l release

      - name: Finish
        run: echo "the build finish"


================================================
FILE: .github/workflows/publish-modelbox-images.yml
================================================
name: Publish modelbox images
on:
  workflow_dispatch:
    inputs:
      version:
        description: 'new image tag(e.g. v1.1.0)'
        required: true
        default: 'latest'

env:
  BUILD_TYPE: Release
  IMAGE_VERSION: ${{ github.event.inputs.version }}

jobs:
  compile_cuda112_trt_ubuntu:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-tensorrt_8.4.2-cuda_11.2-ubuntu-x86_64
    outputs:
      CUDA_VER: ${{ steps.env.outputs.CUDA_VER }}
      CUDA_VERSION: ${{ steps.env.outputs.CUDA_VERSION }}
      CUDA_CUDART_VERSION: ${{ steps.env.outputs.CUDA_CUDART_VERSION }}
      TRT_VERSION: ${{ steps.env.outputs.TRT_VERSION }}
      NVIDIA_CUDA_VERSION: ${{ steps.env.outputs.NVIDIA_CUDA_VERSION }}
      NVIDIA_REQUIRE_CUDA: ${{ steps.env.outputs.NVIDIA_REQUIRE_CUDA }}
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "CUDA_VER=11-2" >> $GITHUB_OUTPUT
          echo "CUDA_VERSION=11.2" >> $GITHUB_OUTPUT
          echo "CUDA_CUDART_VERSION=11.2.152-1" >> $GITHUB_OUTPUT
          echo "TRT_VERSION=8.4.2.4" >> $GITHUB_OUTPUT
          echo "NVIDIA_CUDA_VERSION=11.2.2" >> $GITHUB_OUTPUT
          echo "NVIDIA_REQUIRE_CUDA=cuda>=11.2 brand=tesla,driver>=418,driver<419 brand=tesla,driver>=440,driver<441" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-tensorrt_8.4.2-cuda_11.2-ubuntu-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-tensorrt_8.4.2-cuda_11.2-ubuntu-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_cuda112_trt_ubuntu
          path: artifact

  build_cuda112_trt_ubuntu_develop_image:
    runs-on: ubuntu-20.04
    needs: compile_cuda112_trt_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda112_trt_ubuntu
          path: .
      - name: Download for dev package
        run: ./docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.develop.ubuntu
          build-args: |
            CUDA_VER=${{ needs.compile_cuda112_trt_ubuntu.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda112_trt_ubuntu.outputs.CUDA_VERSION }}
            TRT_VERSION=${{ needs.compile_cuda112_trt_ubuntu.outputs.TRT_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda112_trt_ubuntu.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda112_trt_ubuntu.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda112_trt_ubuntu.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda112_trt_ubuntu.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_cuda112_trt_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_cuda112_trt_ubuntu_runtime_image:
    runs-on: ubuntu-20.04
    needs: compile_cuda112_trt_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda112_trt_ubuntu
          path: .
      - name: Download for run package
        run: ./docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.runtime.ubuntu
          build-args: |
            CUDA_VER=${{ needs.compile_cuda112_trt_ubuntu.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda112_trt_ubuntu.outputs.CUDA_VERSION }}
            TRT_VERSION=${{ needs.compile_cuda112_trt_ubuntu.outputs.TRT_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda112_trt_ubuntu.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda112_trt_ubuntu.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda112_trt_ubuntu.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda112_trt_ubuntu.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_cuda112_trt_ubuntu.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_cuda112_trt_ubuntu:
    runs-on: ubuntu-latest
    needs: [compile_cuda112_trt_ubuntu,build_cuda112_trt_ubuntu_develop_image]
    container:
      image: ${{ needs.compile_cuda112_trt_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}')
          make build-test -j8
          make unittest

  compile_cuda112_tf_ubuntu:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-tensorflow_2.6.0-cuda_11.2-ubuntu-x86_64
    outputs:
      CUDA_VER: ${{ steps.env.outputs.CUDA_VER }}
      TF_VERSION: ${{ steps.env.outputs.TF_VERSION }}
      CUDA_VERSION: ${{ steps.env.outputs.CUDA_VERSION }}
      CUDA_CUDART_VERSION: ${{ steps.env.outputs.CUDA_CUDART_VERSION }}
      NVIDIA_CUDA_VERSION: ${{ steps.env.outputs.NVIDIA_CUDA_VERSION }}
      NVIDIA_REQUIRE_CUDA: ${{ steps.env.outputs.NVIDIA_REQUIRE_CUDA }}
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "CUDA_VER=11-2" >> $GITHUB_OUTPUT
          echo "TF_VERSION=2.6.0" >> $GITHUB_OUTPUT
          echo "CUDA_VERSION=11.2" >> $GITHUB_OUTPUT
          echo "CUDA_CUDART_VERSION=11.2.152-1" >> $GITHUB_OUTPUT
          echo "NVIDIA_CUDA_VERSION=11.2.2" >> $GITHUB_OUTPUT
          echo "NVIDIA_REQUIRE_CUDA=cuda>=11.2 brand=tesla,driver>=418,driver<419 brand=tesla,driver>=450,driver<451" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-tensorflow_2.6.0-cuda_11.2-ubuntu-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-tensorflow_2.6.0-cuda_11.2-ubuntu-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_cuda112_tf_ubuntu
          path: artifact
          
  build_cuda112_tf_ubuntu_develop_image:
    runs-on: ubuntu-20.04
    needs: compile_cuda112_tf_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda112_tf_ubuntu
          path: .
      - name: Download for dev package
        run: ./docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.develop.ubuntu
          build-args: |
            CUDA_VER=${{ needs.compile_cuda112_tf_ubuntu.outputs.CUDA_VER }}
            TF_VERSION=${{ needs.compile_cuda112_tf_ubuntu.outputs.TF_VERSION }}
            CUDA_VERSION=${{ needs.compile_cuda112_tf_ubuntu.outputs.CUDA_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda112_tf_ubuntu.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda112_tf_ubuntu.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda112_tf_ubuntu.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda112_tf_ubuntu.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_cuda112_tf_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_cuda112_tf_ubuntu_runtime_image:
    runs-on: ubuntu-20.04
    needs: compile_cuda112_tf_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda112_tf_ubuntu
          path: .
      - name: Download for run package
        run: ./docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.runtime.ubuntu
          build-args: |
            CUDA_VER=${{ needs.compile_cuda112_tf_ubuntu.outputs.CUDA_VER }}
            TF_VERSION=${{ needs.compile_cuda112_tf_ubuntu.outputs.TF_VERSION }}
            CUDA_VERSION=${{ needs.compile_cuda112_tf_ubuntu.outputs.CUDA_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda112_tf_ubuntu.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda112_tf_ubuntu.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda112_tf_ubuntu.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda112_tf_ubuntu.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_cuda112_tf_ubuntu.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_cuda112_tf_ubuntu:
    runs-on: ubuntu-latest
    needs: [compile_cuda112_tf_ubuntu,build_cuda112_tf_ubuntu_develop_image]
    container:
      image: ${{ needs.compile_cuda112_tf_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}')
          make build-test -j8
          make unittest

  compile_cuda102_trt_ubuntu:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-tensorrt_7.1.3-cuda_10.2-ubuntu-x86_64
    outputs:
      CUDA_VER: ${{ steps.env.outputs.CUDA_VER }}
      CUDA_VERSION: ${{ steps.env.outputs.CUDA_VERSION }}
      CUDA_CUDART_VERSION: ${{ steps.env.outputs.CUDA_CUDART_VERSION }}
      TRT_VERSION: ${{ steps.env.outputs.TRT_VERSION }}
      NVIDIA_CUDA_VERSION: ${{ steps.env.outputs.NVIDIA_CUDA_VERSION }}
      NVIDIA_REQUIRE_CUDA: ${{ steps.env.outputs.NVIDIA_REQUIRE_CUDA }}
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "CUDA_VER=10-2" >> $GITHUB_OUTPUT
          echo "CUDA_VERSION=10.2" >> $GITHUB_OUTPUT
          echo "CUDA_CUDART_VERSION=10.2.89-1" >> $GITHUB_OUTPUT
          echo "TRT_VERSION=7.1.3.4" >> $GITHUB_OUTPUT
          echo "NVIDIA_CUDA_VERSION=10.2.89" >> $GITHUB_OUTPUT
          echo "NVIDIA_REQUIRE_CUDA=cuda>=10.2 brand=tesla,driver>=418,driver<419" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-tensorrt_7.1.3-cuda_10.2-ubuntu-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-tensorrt_7.1.3-cuda_10.2-ubuntu-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_cuda102_trt_ubuntu
          path: artifact

  build_cuda102_trt_ubuntu_develop_image:
    runs-on: ubuntu-22.04
    needs: compile_cuda102_trt_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda102_trt_ubuntu
          path: .
      - name: Download for dev package
        run: |
          sed -i 's/python3.8/python3.7/g' docker/Dockerfile.cuda.develop.ubuntu
          sed -i 's/ubuntu2004/ubuntu1804/g' docker/Dockerfile.cuda.develop.ubuntu
          bash docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.develop.ubuntu
          build-args: |
            BASE_IMAGE=ubuntu:18.04
            CUDA_VER=${{ needs.compile_cuda102_trt_ubuntu.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda102_trt_ubuntu.outputs.CUDA_VERSION }}
            TRT_VERSION=${{ needs.compile_cuda102_trt_ubuntu.outputs.TRT_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda102_trt_ubuntu.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda102_trt_ubuntu.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda102_trt_ubuntu.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda102_trt_ubuntu.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_cuda102_trt_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_cuda102_trt_ubuntu_runtime_image:
    runs-on: ubuntu-22.04
    needs: compile_cuda102_trt_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda102_trt_ubuntu
          path: .
      - name: Download for run package
        run: |
          sed -i 's/python3.8/python3.7/g' docker/Dockerfile.cuda.runtime.ubuntu
          sed -i 's/libduktape205/libduktape202/g' docker/Dockerfile.cuda.runtime.ubuntu
          sed -i 's/ubuntu2004/ubuntu1804/g' docker/Dockerfile.cuda.runtime.ubuntu
          bash docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.runtime.ubuntu
          build-args: |
            BASE_IMAGE=ubuntu:18.04
            CUDA_VER=${{ needs.compile_cuda102_trt_ubuntu.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda102_trt_ubuntu.outputs.CUDA_VERSION }}
            TRT_VERSION=${{ needs.compile_cuda102_trt_ubuntu.outputs.TRT_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda102_trt_ubuntu.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda102_trt_ubuntu.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda102_trt_ubuntu.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda102_trt_ubuntu.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_cuda102_trt_ubuntu.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_cuda102_trt_ubuntu:
    runs-on: ubuntu-latest
    needs: [compile_cuda102_trt_ubuntu,build_cuda102_trt_ubuntu_develop_image]
    container:
      image: ${{ needs.compile_cuda102_trt_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}')
          make build-test -j8
          make unittest

  compile_cuda102_torch_ubuntu:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-libtorch_1.9.1-cuda_10.2-ubuntu-x86_64
    outputs:
      CUDA_VER: ${{ steps.env.outputs.CUDA_VER }}
      CUDA_VERSION: ${{ steps.env.outputs.CUDA_VERSION }}
      CUDA_CUDART_VERSION: ${{ steps.env.outputs.CUDA_CUDART_VERSION }}
      TORCH_VERSION: ${{ steps.env.outputs.TORCH_VERSION }}
      NVIDIA_CUDA_VERSION: ${{ steps.env.outputs.NVIDIA_CUDA_VERSION }}
      NVIDIA_REQUIRE_CUDA: ${{ steps.env.outputs.NVIDIA_REQUIRE_CUDA }}
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "CUDA_VER=10-2" >> $GITHUB_OUTPUT
          echo "CUDA_VERSION=10.2" >> $GITHUB_OUTPUT
          echo "CUDA_CUDART_VERSION=10.2.89-1" >> $GITHUB_OUTPUT
          echo "TORCH_VERSION=1.9.1" >> $GITHUB_OUTPUT
          echo "NVIDIA_CUDA_VERSION=10.2.89" >> $GITHUB_OUTPUT
          echo "NVIDIA_REQUIRE_CUDA=cuda>=10.2 brand=tesla,driver>=418,driver<419" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-libtorch_1.9.1-cuda_10.2-ubuntu-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-libtorch_1.9.1-cuda_10.2-ubuntu-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_cuda102_torch_ubuntu
          path: artifact

  build_cuda102_torch_ubuntu_develop_image:
    runs-on: ubuntu-22.04
    needs: compile_cuda102_torch_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda102_torch_ubuntu
          path: .
      - name: Download for dev package
        run: |
          sed -i 's/python3.8/python3.7/g' docker/Dockerfile.cuda.develop.ubuntu
          sed -i 's/ubuntu2004/ubuntu1804/g' docker/Dockerfile.cuda.develop.ubuntu
          bash docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.develop.ubuntu
          build-args: |
            BASE_IMAGE=ubuntu:18.04
            CUDA_VER=${{ needs.compile_cuda102_torch_ubuntu.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda102_torch_ubuntu.outputs.CUDA_VERSION }}
            TORCH_VERSION=${{ needs.compile_cuda102_torch_ubuntu.outputs.TORCH_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda102_torch_ubuntu.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda102_torch_ubuntu.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda102_torch_ubuntu.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda102_torch_ubuntu.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_cuda102_torch_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_cuda102_torch_ubuntu_runtime_image:
    runs-on: ubuntu-22.04
    needs: compile_cuda102_torch_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda102_torch_ubuntu
          path: .
      - name: Download for run package
        run: |
          sed -i 's/python3.8/python3.7/g' docker/Dockerfile.cuda.runtime.ubuntu
          sed -i 's/libduktape205/libduktape202/g' docker/Dockerfile.cuda.runtime.ubuntu
          sed -i 's/ubuntu2004/ubuntu1804/g' docker/Dockerfile.cuda.runtime.ubuntu
          bash docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.runtime.ubuntu
          build-args: |
            BASE_IMAGE=ubuntu:18.04
            CUDA_VER=${{ needs.compile_cuda102_torch_ubuntu.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda102_torch_ubuntu.outputs.CUDA_VERSION }}
            TORCH_VERSION=${{ needs.compile_cuda102_torch_ubuntu.outputs.TORCH_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda102_torch_ubuntu.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda102_torch_ubuntu.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda102_torch_ubuntu.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda102_torch_ubuntu.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_cuda102_torch_ubuntu.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_cuda102_torch_ubuntu:
    runs-on: ubuntu-latest
    needs: [compile_cuda102_torch_ubuntu,build_cuda102_torch_ubuntu_develop_image]
    container:
      image: ${{ needs.compile_cuda102_torch_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}')
          make build-test -j8
          make unittest

  compile_x86d_ubuntu:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-ubuntu-x86_64
    outputs:
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-ubuntu-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-mindspore_1.9.0-cann_6.0.1-ubuntu-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_x86d_ubuntu
          path: artifact

  build_x86d_ubuntu_develop_image:
    runs-on: ubuntu-20.04
    needs: compile_x86d_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_x86d_ubuntu
          path: .
      - name: Download for dev package
        run: ./docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.ascend.develop.ubuntu
          build-args: dtype=310
          tags: |
            ${{ needs.compile_x86d_ubuntu.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_x86d_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_x86d_ubuntu_runtime_image:
    runs-on: ubuntu-20.04
    needs: compile_x86d_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_x86d_ubuntu
          path: .
      - name: Download for run package
        run: ./docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.ascend.runtime.ubuntu
          build-args: dtype=310
          tags: |
            ${{ needs.compile_x86d_ubuntu.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_x86d_ubuntu.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_x86d_ubuntu:
    runs-on: ubuntu-latest
    needs: [compile_x86d_ubuntu,build_x86d_ubuntu_develop_image]
    container:
      image: ${{ needs.compile_x86d_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}')
          make build-test -j8
          make unittest

  compile_armd_ubuntu:
    runs-on: ubuntu
    outputs:
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-ubuntu-aarch64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-mindspore_1.9.0-cann_6.0.1-ubuntu-aarch64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          sed -i -e '107,116'H -e '116'G thirdparty/CMake/local-package.in
          sed -i '118,120s@APIGW_Cpp@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -i '121s@APIGW-cpp-sdk@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -i '122s@APIGW-cpp-sdk-1.0.2@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -n '118,127p' thirdparty/CMake/local-package.in
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on -DLOCAL_PACKAGE_PATH=/opt/thirdparty/source
      - name: Build
        working-directory: build
        run: |
          npm cache clean --force
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_armd_ubuntu
          path: artifact

  build_armd_ubuntu_develop_image:
    runs-on: ubuntu-latest
    needs: compile_armd_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_armd_ubuntu
          path: .
      - name: Download for dev package
        run: |
          sed -i '5s/PLATFROM=.*/PLATFROM=aarch64/' docker/prepare_for_dev.sh
          ./docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        run: |
          docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
          docker buildx create --name cibuilder --driver docker-container --use
          docker buildx ls
          docker buildx inspect --bootstrap
          docker buildx build --platform linux/arm64 \
                 --build-arg dtype=310 \
                 --file docker/Dockerfile.ascend.develop.ubuntu \
                 --tag ${{ needs.compile_armd_ubuntu.outputs.IMAGE_NAME_DEV }}:latest \
                 --tag ${{ needs.compile_armd_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }} \
                 --push .

  build_armd_ubuntu_runtime_image:
    runs-on: ubuntu-latest
    needs: compile_armd_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_armd_ubuntu
          path: .
      - name: Download for run package
        run: |
          sed -i '5s/PLATFROM=.*/PLATFROM=aarch64/' docker/prepare_for_run.sh
          ./docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        run: |
          docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
          docker buildx create --name cibuilder --driver docker-container --use
          docker buildx ls
          docker buildx inspect --bootstrap
          docker buildx build --platform linux/arm64 \
                 --build-arg dtype=310 \
                 --file docker/Dockerfile.ascend.runtime.ubuntu \
                 --tag ${{ needs.compile_armd_ubuntu.outputs.IMAGE_NAME_RUN }}:latest \
                 --tag ${{ needs.compile_armd_ubuntu.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }} \
                 --push .

  test_armd_ubuntu:
    runs-on: ubuntu
    needs: compile_armd_ubuntu
    steps:
      - name: Test
        working-directory: build
        run: |
          dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}') || true
          export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1
          make build-test -j8
          make unittest

  compile_x86d310p_ubuntu:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-d310p-ubuntu-x86_64
    outputs:
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-d310p-ubuntu-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-mindspore_1.9.0-cann_6.0.1-d310p-ubuntu-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_x86d310p_ubuntu
          path: artifact

  build_x86d310p_ubuntu_develop_image:
    runs-on: ubuntu-20.04
    needs: compile_x86d310p_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_x86d310p_ubuntu
          path: .
      - name: Download for dev package
        run: ./docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.ascend.develop.ubuntu
          build-args: dtype=710
          tags: |
            ${{ needs.compile_x86d310p_ubuntu.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_x86d310p_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_x86d310p_ubuntu_runtime_image:
    runs-on: ubuntu-20.04
    needs: compile_x86d310p_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_x86d310p_ubuntu
          path: .
      - name: Download for run package
        run: ./docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.ascend.runtime.ubuntu
          build-args: dtype=710
          tags: |
            ${{ needs.compile_x86d310p_ubuntu.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_x86d310p_ubuntu.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_x86d310p_ubuntu:
    runs-on: ubuntu-latest
    needs: [compile_x86d310p_ubuntu,build_x86d310p_ubuntu_develop_image]
    container:
      image: ${{ needs.compile_x86d310p_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}')
          make build-test -j8
          make unittest

  compile_armd310p_ubuntu:
    runs-on: ubuntu-d310p
    needs: compile_armd_ubuntu
    outputs:
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-d310p-ubuntu-aarch64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-mindspore_1.9.0-cann_6.0.1-d310p-ubuntu-aarch64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          sed -i -e '107,116'H -e '116'G thirdparty/CMake/local-package.in
          sed -i '118,120s@APIGW_Cpp@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -i '121s@APIGW-cpp-sdk@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -i '122s@APIGW-cpp-sdk-1.0.2@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -n '118,127p' thirdparty/CMake/local-package.in
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on -DLOCAL_PACKAGE_PATH=/opt/thirdparty/source
      - name: Build
        working-directory: build
        run: |
          npm cache clean --force
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_armd310p_ubuntu
          path: artifact

  build_armd310p_ubuntu_develop_image:
    runs-on: ubuntu-latest
    needs: compile_armd310p_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_armd310p_ubuntu
          path: .
      - name: Download for dev package
        run: |
          sed -i '5s/PLATFROM=.*/PLATFROM=aarch64/' docker/prepare_for_dev.sh
          ./docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        run: |
          docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
          docker buildx create --name cibuilder --driver docker-container --use
          docker buildx ls
          docker buildx inspect --bootstrap
          docker buildx build --platform linux/arm64 \
                 --build-arg dtype=710 \
                 --file docker/Dockerfile.ascend.develop.ubuntu \
                 --tag ${{ needs.compile_armd310p_ubuntu.outputs.IMAGE_NAME_DEV }}:latest \
                 --tag ${{ needs.compile_armd310p_ubuntu.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }} \
                 --push .

  build_armd310p_ubuntu_runtime_image:
    runs-on: ubuntu-latest
    needs: compile_armd310p_ubuntu
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_armd310p_ubuntu
          path: .
      - name: Download for run package
        run: |
          sed -i '5s/PLATFROM=.*/PLATFROM=aarch64/' docker/prepare_for_run.sh
          ./docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        run: |
          docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
          docker buildx create --name cibuilder --driver docker-container --use
          docker buildx ls
          docker buildx inspect --bootstrap
          docker buildx build --platform linux/arm64 \
                 --build-arg dtype=710 \
                 --file docker/Dockerfile.ascend.runtime.ubuntu \
                 --tag ${{ needs.compile_armd310p_ubuntu.outputs.IMAGE_NAME_RUN }}:latest \
                 --tag ${{ needs.compile_armd310p_ubuntu.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }} \
                 --push .

  test_armd310p_ubuntu:
    runs-on: ubuntu-d310p
    needs: compile_armd310p_ubuntu
    steps:
      - name: Test
        working-directory: build
        run: |
          dpkg -r $(dpkg -l|grep  modelbox|awk '{print $2}') || true
          export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1
          make build-test -j8
          make unittest

  compile_cuda112_trt_openeuler:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-tensorrt_8.4.2-cuda_11.2-openeuler-x86_64
    outputs:
      CUDA_VER: ${{ steps.env.outputs.CUDA_VER }}
      CUDA_VERSION: ${{ steps.env.outputs.CUDA_VERSION }}
      CUDA_CUDART_VERSION: ${{ steps.env.outputs.CUDA_CUDART_VERSION }}
      TRT_VERSION: ${{ steps.env.outputs.TRT_VERSION }}
      NVIDIA_CUDA_VERSION: ${{ steps.env.outputs.NVIDIA_CUDA_VERSION }}
      NVIDIA_REQUIRE_CUDA: ${{ steps.env.outputs.NVIDIA_REQUIRE_CUDA }}
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "CUDA_VER=11-2" >> $GITHUB_OUTPUT
          echo "CUDA_VERSION=11.2" >> $GITHUB_OUTPUT
          echo "CUDA_CUDART_VERSION=11.2.152-1" >> $GITHUB_OUTPUT
          echo "TRT_VERSION=8.4.2.4" >> $GITHUB_OUTPUT
          echo "NVIDIA_CUDA_VERSION=11.2.2" >> $GITHUB_OUTPUT
          echo "NVIDIA_REQUIRE_CUDA=cuda>=11.2 brand=tesla,driver>=418,driver<419 brand=tesla,driver>=440,driver<441" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-tensorrt_8.4.2-cuda_11.2-openeuler-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-tensorrt_8.4.2-cuda_11.2-openeuler-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_cuda112_trt_openeuler
          path: artifact

  build_cuda112_trt_openeuler_develop_image:
    runs-on: ubuntu-20.04
    needs: compile_cuda112_trt_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda112_trt_openeuler
          path: .
      - name: Download for dev package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_dev.sh
          bash docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.develop.openeuler
          build-args: |
            CUDA_VER=${{ needs.compile_cuda112_trt_openeuler.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda112_trt_openeuler.outputs.CUDA_VERSION }}
            TRT_VERSION=${{ needs.compile_cuda112_trt_openeuler.outputs.TRT_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda112_trt_openeuler.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda112_trt_openeuler.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda112_trt_openeuler.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda112_trt_openeuler.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_cuda112_trt_openeuler.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_cuda112_trt_openeuler_runtime_image:
    runs-on: ubuntu-20.04
    needs: compile_cuda112_trt_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda112_trt_openeuler
          path: .
      - name: Download for run package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_run.sh
          bash docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.runtime.openeuler
          build-args: |
            CUDA_VER=${{ needs.compile_cuda112_trt_openeuler.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda112_trt_openeuler.outputs.CUDA_VERSION }}
            TRT_VERSION=${{ needs.compile_cuda112_trt_openeuler.outputs.TRT_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda112_trt_openeuler.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda112_trt_openeuler.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda112_trt_openeuler.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda112_trt_openeuler.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_cuda112_trt_openeuler.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_cuda112_trt_openeuler:
    runs-on: ubuntu-latest
    needs: [compile_cuda112_trt_openeuler,build_cuda112_trt_openeuler_develop_image]
    container:
      image: ${{ needs.compile_cuda112_trt_openeuler.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          rpm -e $(rpm -qa|grep modelbox)
          make build-test -j8
          make unittest

  compile_cuda112_tf_openeuler:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-tensorflow_2.6.0-cuda_11.2-openeuler-x86_64
    outputs:
      CUDA_VER: ${{ steps.env.outputs.CUDA_VER }}
      TF_VERSION: ${{ steps.env.outputs.TF_VERSION }}
      CUDA_VERSION: ${{ steps.env.outputs.CUDA_VERSION }}
      CUDA_CUDART_VERSION: ${{ steps.env.outputs.CUDA_CUDART_VERSION }}
      NVIDIA_CUDA_VERSION: ${{ steps.env.outputs.NVIDIA_CUDA_VERSION }}
      NVIDIA_REQUIRE_CUDA: ${{ steps.env.outputs.NVIDIA_REQUIRE_CUDA }}
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "CUDA_VER=11-2" >> $GITHUB_OUTPUT
          echo "TF_VERSION=2.6.0" >> $GITHUB_OUTPUT
          echo "CUDA_VERSION=11.2" >> $GITHUB_OUTPUT
          echo "CUDA_CUDART_VERSION=11.2.152-1" >> $GITHUB_OUTPUT
          echo "NVIDIA_CUDA_VERSION=11.2.2" >> $GITHUB_OUTPUT
          echo "NVIDIA_REQUIRE_CUDA=cuda>=11.2 brand=tesla,driver>=418,driver<419 brand=tesla,driver>=450,driver<451" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-tensorflow_2.6.0-cuda_11.2-openeuler-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-tensorflow_2.6.0-cuda_11.2-openeuler-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_cuda112_tf_openeuler
          path: artifact
          
  build_cuda112_tf_openeuler_develop_image:
    runs-on: ubuntu-20.04
    needs: compile_cuda112_tf_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda112_tf_openeuler
          path: .
      - name: Download for dev package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_dev.sh
          bash docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.develop.openeuler
          build-args: |
            CUDA_VER=${{ needs.compile_cuda112_tf_openeuler.outputs.CUDA_VER }}
            TF_VERSION=${{ needs.compile_cuda112_tf_openeuler.outputs.TF_VERSION }}
            CUDA_VERSION=${{ needs.compile_cuda112_tf_openeuler.outputs.CUDA_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda112_tf_openeuler.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda112_tf_openeuler.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda112_tf_openeuler.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda112_tf_openeuler.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_cuda112_tf_openeuler.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_cuda112_tf_openeuler_runtime_image:
    runs-on: ubuntu-20.04
    needs: compile_cuda112_tf_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda112_tf_openeuler
          path: .
      - name: Download for run package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_run.sh
          bash docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.runtime.openeuler
          build-args: |
            CUDA_VER=${{ needs.compile_cuda112_tf_openeuler.outputs.CUDA_VER }}
            TF_VERSION=${{ needs.compile_cuda112_tf_openeuler.outputs.TF_VERSION }}
            CUDA_VERSION=${{ needs.compile_cuda112_tf_openeuler.outputs.CUDA_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda112_tf_openeuler.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda112_tf_openeuler.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda112_tf_openeuler.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda112_tf_openeuler.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_cuda112_tf_openeuler.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_cuda112_tf_openeuler:
    runs-on: ubuntu-latest
    needs: [compile_cuda112_tf_openeuler,build_cuda112_tf_openeuler_develop_image]
    container:
      image: ${{ needs.compile_cuda112_tf_openeuler.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          rpm -e $(rpm -qa|grep modelbox)
          make build-test -j8
          make unittest

  compile_cuda102_trt_openeuler:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-tensorrt_7.1.3-cuda_10.2-openeuler-x86_64
    outputs:
      CUDA_VER: ${{ steps.env.outputs.CUDA_VER }}
      CUDA_VERSION: ${{ steps.env.outputs.CUDA_VERSION }}
      CUDA_CUDART_VERSION: ${{ steps.env.outputs.CUDA_CUDART_VERSION }}
      TRT_VERSION: ${{ steps.env.outputs.TRT_VERSION }}
      NVIDIA_CUDA_VERSION: ${{ steps.env.outputs.NVIDIA_CUDA_VERSION }}
      NVIDIA_REQUIRE_CUDA: ${{ steps.env.outputs.NVIDIA_REQUIRE_CUDA }}
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "CUDA_VER=10-2" >> $GITHUB_OUTPUT
          echo "CUDA_VERSION=10.2" >> $GITHUB_OUTPUT
          echo "CUDA_CUDART_VERSION=10.2.89-1" >> $GITHUB_OUTPUT
          echo "TRT_VERSION=7.1.3.4" >> $GITHUB_OUTPUT
          echo "NVIDIA_CUDA_VERSION=10.2.89" >> $GITHUB_OUTPUT
          echo "NVIDIA_REQUIRE_CUDA=cuda>=10.2 brand=tesla,driver>=418,driver<419" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-tensorrt_7.1.3-cuda_10.2-openeuler-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-tensorrt_7.1.3-cuda_10.2-openeuler-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_cuda102_trt_openeuler
          path: artifact

  build_cuda102_trt_openeuler_develop_image:
    runs-on: ubuntu-latest
    needs: compile_cuda102_trt_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda102_trt_openeuler
          path: .
      - name: Download for dev package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_dev.sh
          bash docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.develop.openeuler
          build-args: |
            CUDA_VER=${{ needs.compile_cuda102_trt_openeuler.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda102_trt_openeuler.outputs.CUDA_VERSION }}
            TRT_VERSION=${{ needs.compile_cuda102_trt_openeuler.outputs.TRT_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda102_trt_openeuler.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda102_trt_openeuler.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda102_trt_openeuler.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda102_trt_openeuler.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_cuda102_trt_openeuler.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_cuda102_trt_openeuler_runtime_image:
    runs-on: ubuntu-latest
    needs: compile_cuda102_trt_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda102_trt_openeuler
          path: .
      - name: Download for run package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_run.sh
          bash docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.runtime.openeuler
          build-args: |
            CUDA_VER=${{ needs.compile_cuda102_trt_openeuler.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda102_trt_openeuler.outputs.CUDA_VERSION }}
            TRT_VERSION=${{ needs.compile_cuda102_trt_openeuler.outputs.TRT_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda102_trt_openeuler.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda102_trt_openeuler.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda102_trt_openeuler.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda102_trt_openeuler.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_cuda102_trt_openeuler.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}
  
  test_cuda102_trt_openeuler:
    runs-on: ubuntu-latest
    needs: [compile_cuda102_trt_openeuler,build_cuda102_trt_openeuler_develop_image]
    container:
      image: ${{ needs.compile_cuda102_trt_openeuler.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          rpm -e $(rpm -qa|grep modelbox)
          make build-test -j8
          make unittest

  compile_cuda102_torch_openeuler:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-libtorch_1.9.1-cuda_10.2-openeuler-x86_64
    outputs:
      CUDA_VER: ${{ steps.env.outputs.CUDA_VER }}
      CUDA_VERSION: ${{ steps.env.outputs.CUDA_VERSION }}
      CUDA_CUDART_VERSION: ${{ steps.env.outputs.CUDA_CUDART_VERSION }}
      TORCH_VERSION: ${{ steps.env.outputs.TORCH_VERSION }}
      NVIDIA_CUDA_VERSION: ${{ steps.env.outputs.NVIDIA_CUDA_VERSION }}
      NVIDIA_REQUIRE_CUDA: ${{ steps.env.outputs.NVIDIA_REQUIRE_CUDA }}
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "CUDA_VER=10-2" >> $GITHUB_OUTPUT
          echo "CUDA_VERSION=10.2" >> $GITHUB_OUTPUT
          echo "CUDA_CUDART_VERSION=10.2.89-1" >> $GITHUB_OUTPUT
          echo "TORCH_VERSION=1.9.1" >> $GITHUB_OUTPUT
          echo "NVIDIA_CUDA_VERSION=10.2.89" >> $GITHUB_OUTPUT
          echo "NVIDIA_REQUIRE_CUDA=cuda>=10.2 brand=tesla,driver>=418,driver<419" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-libtorch_1.9.1-cuda_10.2-openeuler-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-libtorch_1.9.1-cuda_10.2-openeuler-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_cuda102_torch_openeuler
          path: artifact

  build_cuda102_torch_openeuler_develop_image:
    runs-on: ubuntu-latest
    needs: compile_cuda102_torch_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda102_torch_openeuler
          path: .
      - name: Download for dev package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_dev.sh
          bash docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.develop.openeuler
          build-args: |
            CUDA_VER=${{ needs.compile_cuda102_torch_openeuler.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda102_torch_openeuler.outputs.CUDA_VERSION }}
            TORCH_VERSION=${{ needs.compile_cuda102_torch_openeuler.outputs.TORCH_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda102_torch_openeuler.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda102_torch_openeuler.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda102_torch_openeuler.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda102_torch_openeuler.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_cuda102_torch_openeuler.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_cuda102_torch_openeuler_runtime_image:
    runs-on: ubuntu-latest
    needs: compile_cuda102_torch_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_cuda102_torch_openeuler
          path: .
      - name: Download for run package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_run.sh
          bash docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.cuda.runtime.openeuler
          build-args: |
            CUDA_VER=${{ needs.compile_cuda102_torch_openeuler.outputs.CUDA_VER }}
            CUDA_VERSION=${{ needs.compile_cuda102_torch_openeuler.outputs.CUDA_VERSION }}
            TORCH_VERSION=${{ needs.compile_cuda102_torch_openeuler.outputs.TORCH_VERSION }}
            CUDA_CUDART_VERSION=${{ needs.compile_cuda102_torch_openeuler.outputs.CUDA_CUDART_VERSION }}
            NVIDIA_CUDA_VERSION=${{ needs.compile_cuda102_torch_openeuler.outputs.NVIDIA_CUDA_VERSION }}
            NVIDIA_REQUIRE_CUDA=${{ needs.compile_cuda102_torch_openeuler.outputs.NVIDIA_REQUIRE_CUDA }}
          tags: |
            ${{ needs.compile_cuda102_torch_openeuler.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_cuda102_torch_openeuler.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_cuda102_torch_openeuler:
    runs-on: ubuntu-latest
    needs: [compile_cuda102_torch_openeuler,build_cuda102_torch_openeuler_develop_image]
    container:
      image: ${{ needs.compile_cuda102_torch_openeuler.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          rpm -e $(rpm -qa|grep modelbox)
          make build-test -j8
          make unittest

  compile_x86d_openeuler:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-openeuler-x86_64
    outputs:
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-openeuler-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-mindspore_1.9.0-cann_6.0.1-openeuler-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_x86d_openeuler
          path: artifact

  build_x86d_openeuler_develop_image:
    runs-on: ubuntu-latest
    needs: compile_x86d_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_x86d_openeuler
          path: .
      - name: Download for dev package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_dev.sh
          bash docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.ascend.develop.openeuler
          build-args: dtype=310
          tags: |
            ${{ needs.compile_x86d_openeuler.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_x86d_openeuler.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_x86d_openeuler_runtime_image:
    runs-on: ubuntu-latest
    needs: compile_x86d_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_x86d_openeuler
          path: .
      - name: Download for run package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_run.sh
          bash docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.ascend.runtime.openeuler
          build-args: dtype=310
          tags: |
            ${{ needs.compile_x86d_openeuler.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_x86d_openeuler.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_x86d_openeuler:
    runs-on: ubuntu-latest
    needs: [compile_x86d_openeuler,build_x86d_openeuler_develop_image]
    container:
      image: ${{ needs.compile_x86d_openeuler.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          rpm -e $(rpm -qa|grep modelbox)
          make build-test -j8
          make unittest

  compile_armd_openeuler:
    runs-on: openeuler
    needs: compile_armd310p_ubuntu
    outputs:
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-openeuler-aarch64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-mindspore_1.9.0-cann_6.0.1-openeuler-aarch64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          sed -i -e '107,116'H -e '116'G thirdparty/CMake/local-package.in
          sed -i '118,120s@APIGW_Cpp@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -i '121s@APIGW-cpp-sdk@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -i '122s@APIGW-cpp-sdk-1.0.2@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -n '118,127p' thirdparty/CMake/local-package.in
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on -DLOCAL_PACKAGE_PATH=/opt/thirdparty/source
      - name: Build
        working-directory: build
        run: |
          npm cache clean --force
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_armd_openeuler
          path: artifact

  build_armd_openeuler_develop_image:
    runs-on: ubuntu-latest
    needs: compile_armd_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_armd_openeuler
          path: .
      - name: Download for dev package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_dev.sh
          sed -i '5s/PLATFROM=.*/PLATFROM=aarch64/' docker/prepare_for_dev.sh
          ./docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        run: |
          docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
          docker buildx create --name cibuilder --driver docker-container --use
          docker buildx ls
          docker buildx inspect --bootstrap
          docker buildx build --platform linux/arm64 \
                 --build-arg dtype=310 \
                 --file docker/Dockerfile.ascend.develop.openeuler \
                 --tag ${{ needs.compile_armd_openeuler.outputs.IMAGE_NAME_DEV }}:latest \
                 --tag ${{ needs.compile_armd_openeuler.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }} \
                 --push .

  build_armd_openeuler_runtime_image:
    runs-on: ubuntu-latest
    needs: compile_armd_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_armd_openeuler
          path: .
      - name: Download for run package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_run.sh
          sed -i '5s/PLATFROM=.*/PLATFROM=aarch64/' docker/prepare_for_run.sh
          ./docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        run: |
          docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
          docker buildx create --name cibuilder --driver docker-container --use
          docker buildx ls
          docker buildx inspect --bootstrap
          docker buildx build --platform linux/arm64 \
                 --build-arg dtype=310 \
                 --file docker/Dockerfile.ascend.runtime.openeuler \
                 --tag ${{ needs.compile_armd_openeuler.outputs.IMAGE_NAME_RUN }}:latest \
                 --tag ${{ needs.compile_armd_openeuler.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }} \
                 --push .

  test_armd_openeuler:
    runs-on: openeuler
    needs: compile_armd_openeuler
    steps:
      - name: Test
        working-directory: build
        run: |
          rpm -e $(rpm -qa|grep modelbox) || true
          make build-test -j8
          make unittest

  compile_x86d310p_openeuler:
    runs-on: ubuntu-latest
    container: modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-d310p-openeuler-x86_64
    outputs:
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-d310p-openeuler-x86_64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-mindspore_1.9.0-cann_6.0.1-d310p-openeuler-x86_64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Build
        working-directory: build
        run: |
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_x86d310p_openeuler
          path: artifact

  build_x86d310p_openeuler_develop_image:
    runs-on: ubuntu-latest
    needs: compile_x86d310p_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_x86d310p_openeuler
          path: .
      - name: Download for dev package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_dev.sh
          bash docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.ascend.develop.openeuler
          build-args: dtype=710
          tags: |
            ${{ needs.compile_x86d310p_openeuler.outputs.IMAGE_NAME_DEV }}:latest
            ${{ needs.compile_x86d310p_openeuler.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }}

  build_x86d310p_openeuler_runtime_image:
    runs-on: ubuntu-latest
    needs: compile_x86d310p_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_x86d310p_openeuler
          path: .
      - name: Download for run package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_run.sh
          bash docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        uses: docker/build-push-action@master
        with:
          push: true
          context: .
          file: docker/Dockerfile.ascend.runtime.openeuler
          build-args: dtype=710
          tags: |
            ${{ needs.compile_x86d310p_openeuler.outputs.IMAGE_NAME_RUN }}:latest
            ${{ needs.compile_x86d310p_openeuler.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }}

  test_x86d310p_openeuler:
    runs-on: ubuntu-latest
    needs: [compile_x86d310p_openeuler,build_x86d310p_openeuler_develop_image]
    container:
      image: ${{ needs.compile_x86d310p_openeuler.outputs.IMAGE_NAME_DEV }}:${{ github.event.inputs.version }}
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on
      - name: Test
        working-directory: build
        run: |
          rpm -e $(rpm -qa|grep modelbox)
          make build-test -j8
          make unittest

  compile_armd310p_openeuler:
    runs-on: openeuler-d310p
    needs: compile_armd_openeuler
    outputs:
      IMAGE_NAME_DEV: ${{ steps.env.outputs.IMAGE_NAME_DEV }}
      IMAGE_NAME_RUN: ${{ steps.env.outputs.IMAGE_NAME_RUN }}
    steps:
      - name: Set-env
        id: env
        run: |
          echo "IMAGE_NAME_DEV=modelbox/modelbox-develop-mindspore_1.9.0-cann_6.0.1-d310p-openeuler-aarch64" >> $GITHUB_OUTPUT
          echo "IMAGE_NAME_RUN=modelbox/modelbox-runtime-mindspore_1.9.0-cann_6.0.1-d310p-openeuler-aarch64" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@main
      - name: CMake
        run: |
          sed -i -e '107,116'H -e '116'G thirdparty/CMake/local-package.in
          sed -i '118,120s@APIGW_Cpp@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -i '121s@APIGW-cpp-sdk@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -i '122s@APIGW-cpp-sdk-1.0.2@modelbox-webui@g' thirdparty/CMake/local-package.in
          sed -n '118,127p' thirdparty/CMake/local-package.in
          mkdir build
          cd build
          cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_ALL_DEMO=on -DWITH_WEBUI=on -DLOCAL_PACKAGE_PATH=/opt/thirdparty/source
      - name: Build
        working-directory: build
        run: |
          npm cache clean --force
          make package -j8
      - name: Release check
        run: ./docker/artifact_check.sh
        shell: bash
      - name: Prepare Artifact
        run: |
          mkdir artifact
          cp -af build/release artifact/
          ls -lh artifact
      - name: Upload Artifact
        uses: actions/upload-artifact@main
        with:
          name: modelbox_armd310p_openeuler
          path: artifact

  build_armd310p_openeuler_develop_image:
    runs-on: ubuntu-latest
    needs: compile_armd310p_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_armd310p_openeuler
          path: .
      - name: Download for dev package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_dev.sh
          sed -i '5s/PLATFROM=.*/PLATFROM=aarch64/' docker/prepare_for_dev.sh
          ./docker/prepare_for_dev.sh
        shell: bash
      - name: Build and Push
        run: |
          docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
          docker buildx create --name cibuilder --driver docker-container --use
          docker buildx ls
          docker buildx inspect --bootstrap
          docker buildx build --platform linux/arm64 \
                 --build-arg dtype=710 \
                 --file docker/Dockerfile.ascend.develop.openeuler \
                 --tag ${{ needs.compile_armd310p_openeuler.outputs.IMAGE_NAME_DEV }}:latest \
                 --tag ${{ needs.compile_armd310p_openeuler.outputs.IMAGE_NAME_DEV }}:${{ env.IMAGE_VERSION }} \
                 --push .

  build_armd310p_openeuler_runtime_image:
    runs-on: ubuntu-latest
    needs: compile_armd310p_openeuler
    steps:
      - name: Checkout
        uses: actions/checkout@main
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@master
      - name: Login to DockerHub
        uses: docker/login-action@master
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Download Artifact
        uses: actions/download-artifact@main
        with:
          name: modelbox_armd310p_openeuler
          path: .
      - name: Download for run package
        run: |
          sed -i '3s/OS_NAME=.*/OS_NAME=openEuler/' docker/prepare_for_run.sh
          sed -i '5s/PLATFROM=.*/PLATFROM=aarch64/' docker/prepare_for_run.sh
          ./docker/prepare_for_run.sh
        shell: bash
      - name: Build and Push
        run: |
          docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
          docker buildx create --name cibuilder --driver docker-container --use
          docker buildx ls
          docker buildx inspect --bootstrap
          docker buildx build --platform linux/arm64 \
                 --build-arg dtype=710 \
                 --file docker/Dockerfile.ascend.runtime.openeuler \
                 --tag ${{ needs.compile_armd310p_openeuler.outputs.IMAGE_NAME_RUN }}:latest \
                 --tag ${{ needs.compile_armd310p_openeuler.outputs.IMAGE_NAME_RUN }}:${{ env.IMAGE_VERSION }} \
                 --push .

  test_armd310p_openeuler:
    runs-on: openeuler-d310p
    needs: compile_armd310p_openeuler
    steps:
      - name: Test
        working-directory: build
        run: |
          rpm -e $(rpm -qa|grep modelbox) || true
          make build-test -j8
          make unittest


================================================
FILE: .github/workflows/unit-test-daily-on-device.yml
================================================
name: Daily Unit Test On Device

on:
  workflow_dispatch:
  schedule:
    - cron: '0 18 * * *'  

env:
  BUILD_TYPE: Debug

jobs:
  build:
    runs-on: ${{ matrix.devices }}
    if: github.repository == 'modelbox-ai/modelbox'
    strategy:
      max-parallel: 1
      matrix:
          devices: 
            - tensorrt
            - pytorch
            - tensorflow
            - ubuntu-d310p

    steps:
    - uses: actions/checkout@v3
    - name: Configure CMake
      run: |
        mkdir build
        cd build
        cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCLANG_TIDY=on -DCLANG_TIDY_AS_ERROR=on

    - name: Build
      working-directory: build
      run: |
        make package -j4

    - name: Test
      working-directory: build
      run: |
        dpkg -r $(dpkg -l|grep modelbox|awk '{print $2}') || true
        [ "$(arch)" == "aarch64" ] && export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1
        make build-test -j4
        unset LD_LIBRARY_PATH
        make unittest
      shell: bash


================================================
FILE: .github/workflows/unit-test-pull-requests-on-device.yml
================================================
name: Pull-Requests Unit Test On Device

on:
  workflow_dispatch:
    inputs:
      PullRequestId:
        description: Pull Request ID
        default: ""
        required: true
      maxParallel:
        type: choice
        description: Max Parallel
        default: 4
        options: 
        - 1
        - 2
        - 4
        - 6
        - 8
      WithWebUI:
        type: choice
        description: build with webui or not
        options:
        - OFF
        - ON
      WithClangTidy:
        type: choice
        description: build with clang-tidy or not
        options:
        - OFF
        - ON

env:
  BUILD_TYPE: Debug

jobs:
  build:
    runs-on: ${{ matrix.devices }}
    strategy:
      max-parallel: 2
      matrix:
          devices: 
            - tensorrt
            - pytorch
            - tensorflow
            - ubuntu-d310p

    steps:
    - uses: actions/checkout@v3
      with:
        ref: pull/${{github.event.inputs.PullRequestId}}/head
    - name: Configure CMake
      run: |
        mkdir build
        cd build
        cmake .. -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_WEBUI=${{github.event.inputs.WithWebUI}} -DCLANG_TIDY=${{github.event.inputs.WithClangTidy}} -DCLANG_TIDY_AS_ERROR=on

    - name: Build
      working-directory: build
      run: |
        make package -j${{github.event.inputs.maxParallel}}

    - name: Test
      working-directory: build
      run: |
        dpkg -r $(dpkg -l|grep modelbox|awk '{print $2}') || true
        export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1
        make build-test -j${{github.event.inputs.maxParallel}}
        unset LD_LIBRARY_PATH
        make unittest


================================================
FILE: .gitignore
================================================

# IDE product files
.idea
*.iml
*.ipr
*.iws
*.bin
*.exe
*.pyc

out
gen
target
.vscode
build
.settings
.classpath
.project

#clangd
.cache
compile_commands.json


================================================
FILE: CMake/Clang-tidy.cmake
================================================

find_program(CLANG_TIDY_BIN clang-tidy)

if(NOT CLANG_TIDY_BIN)
    message(STATUS "No clang-tidy found, skip lint")
    return()
endif()

if (NOT CLANG_TIDY_BIN)
    message(STATUS "clang-tidy disabled, skip lint")
    return()
endif()

if (NOT CLANG_TIDY)
    message(STATUS "disable clang-tidy")
    return()
endif()

if (CLANG_TIDY_FIX)
    set(CLANG_TIDY_FLAG "${CLANG_TIDY_FLAG};-fix;")
endif()

if (CLANG_TIDY_AS_ERROR)
    set(CLANG_TIDY_FLAG "${CLANG_TIDY_FLAG};-warnings-as-errors=*;")
endif()

message(STATUS "enable clang-tidy lint")
set(CMAKE_CXX_CLANG_TIDY 
   ${CMAKE_CURRENT_LIST_DIR}/clang-tidy-warp;${CLANG_TIDY_FLAG})


================================================
FILE: CMake/FindACL.cmake
================================================
set(HITS_DDK_PATH $ENV{DDK_PATH})
find_path(ACL_INCLUDE
  NAMES acl/acl.h
  HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR} ${HITS_DDK_PATH}/include
        /usr/local/Ascend/ascend-toolkit/latest/fwkacllib/include
)
mark_as_advanced(ACL_INCLUDE)

# Look for the library (sorted from most current/relevant entry to least).
set(ACL_LIBRARY_NAME ascendcl)
list(APPEND DDK_LIB_PATH ${HITS_DDK_PATH}/lib64)
list(APPEND DDK_LIB_PATH /usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64)

find_library(ACL_LIBRARY NAMES ascendcl HINTS ${CMAKE_INSTALL_FULL_LIBDIR} ${DDK_LIB_PATH})
find_library(ACL_DVPP_LIBRARY NAMES acl_dvpp HINTS ${CMAKE_INSTALL_FULL_LIBDIR} ${DDK_LIB_PATH})
find_library(ACL_CBLAS_LIBRARY NAMES acl_cblas HINTS ${CMAKE_INSTALL_FULL_LIBDIR} ${DDK_LIB_PATH})
find_library(ACL_RT_LIBRARY NAMES runtime HINTS ${CMAKE_INSTALL_FULL_LIBDIR} ${DDK_LIB_PATH})

mark_as_advanced(ACL_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ACL
                                  REQUIRED_VARS ACL_LIBRARY ACL_DVPP_LIBRARY ACL_CBLAS_LIBRARY ACL_RT_LIBRARY
                                  ACL_INCLUDE
                                  VERSION_VAR ACL_VERSION_STRING)

if(ACL_FOUND)
  set(ACL_LIBRARIES ${ACL_LIBRARY} ${ACL_DVPP_LIBRARY} ${ACL_CBLAS_LIBRARY} ${ACL_RT_LIBRARY})
  set(ACL_INCLUDE_DIR ${ACL_INCLUDE})
endif()


================================================
FILE: CMake/FindCPPREST.cmake
================================================
find_path(CPPREST_INCLUDE NAMES cpprest/http_client.h 
    HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR}
)
mark_as_advanced(CPPREST_INCLUDE)

# Look for the library (sorted from most current/relevant entry to least).
find_library(CPPREST_LIBRARY NAMES
    cpprest
    cpprestlib
    libcpprest_imp
    cpprestlib_static
    libcpprest
    HINTS ${CMAKE_INSTALL_FULL_LIBDIR}
)
mark_as_advanced(CPPREST_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CPPREST
                                  REQUIRED_VARS CPPREST_LIBRARY CPPREST_INCLUDE
                                  VERSION_VAR CPPREST_VERSION_STRING)

if(CPPREST_FOUND)
  set(CPPREST_LIBRARIES ${CPPREST_LIBRARY})
  set(CPPREST_INCLUDE_DIR ${CPPREST_INCLUDE})
endif()


================================================
FILE: CMake/FindCUDACUDA.cmake
================================================
if (CUDA_CUDA_LIBRARY) 
  return()
endif()

find_library(CUDA_CUDA_LIBRARY
  NAMES cuda
  HINTS ${CMAKE_INSTALL_FULL_LIBDIR} /usr/local/cuda/lib64/stubs /usr/local/cuda/lib/stubs 
)
mark_as_advanced(CUDA_CUDA_LIBRARY)


================================================
FILE: CMake/FindDIS.cmake
================================================
find_path(DIS_INCLUDE NAMES dis/dis.h 
    HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR}
)
mark_as_advanced(DIS_INCLUDE)
 
set(HINT_LIBS ${CMAKE_INSTALL_FULL_LIBDIR} /usr/lib64)
 
find_library(DIS_LIBRARY NAMES
    DISSDK
    HINTS ${HINT_LIBS}
)
mark_as_advanced(DIS_LIBRARY)

find_library(CURL_LIBRARY NAMES
    curl
    HINTS ${HINT_LIBS}
)
mark_as_advanced(CURL_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(DIS
                                  REQUIRED_VARS DIS_LIBRARY CURL_LIBRARY DIS_INCLUDE
                                  VERSION_VAR DIS_VERSION_STRING)
 
if(DIS_FOUND)
  set(DIS_LIBRARIES ${DIS_LIBRARY} ${CURL_LIBRARY})
  set(DIS_INCLUDE_DIR ${DIS_INCLUDE})
  message(STATUS "Dis dependency found, ${DIS_LIBRARIES} ${DIS_INCLUDE_DIR}")
endif()

================================================
FILE: CMake/FindDLENGINE.cmake
================================================
set(DLENGINE_PATH $ENV{DLENGINE_PATH})

if(NOT DLENGINE_PATH)
  find_package(PythonInterp QUIET)
  execute_process(
    COMMAND ${PYTHON_EXECUTABLE} "-c" "import re, dlengine; print(re.compile('/__init__.py.*').sub('', dlengine.__file__))"
    RESULT_VARIABLE DLENGINE_STATUS
    OUTPUT_VARIABLE DLENGINE_PATH
    ERROR_QUIET
    OUTPUT_STRIP_TRAILING_WHITESPACE
  )
endif()

find_path(DLENGINE_INCLUDE
  NAMES dlengine.h
  HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR} ${DLENGINE_PATH}/include
)
mark_as_advanced(DLENGINE_INCLUDE)

find_library(DLENGINE_LIBRARY
  NAMES dlengine
  HINTS ${DLENGINE_PATH}
)
mark_as_advanced(DLENGINE_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(DLENGINE
                                  REQUIRED_VARS DLENGINE_PATH DLENGINE_LIBRARY DLENGINE_INCLUDE
                                  VERSION_VAR DLENGINE_VERSION_STRING)

if(DLENGINE_FOUND)
  set(DLENGINE_LIBRARIES ${DLENGINE_LIBRARY})
  set(DLENGINE_INCLUDE_DIR ${DLENGINE_INCLUDE})
  set(DLENGINE_BACKEND_ZOO_DIR ${DLENGINE_PATH}/backend_zoo)
endif()


================================================
FILE: CMake/FindDSMI.cmake
================================================
set(HITS_DRIVER_PATH $ENV{DRIVER_PATH})
find_path(DSMI_INCLUDE
  NAMES dsmi_common_interface.h
  HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR} 
        ${HITS_DRIVER_PATH}/include
        /usr/local/Ascend/driver/include
)
mark_as_advanced(DSMI_INCLUDE)

# Look for the library (sorted from most current/relevant entry to least).
set(DRIVER_LIB_PATH ${HITS_DRIVER_PATH}/lib64)
find_library(DSMI_LIBRARY NAMES
    drvdsmi_host
    HINTS ${CMAKE_INSTALL_FULL_LIBDIR} 
          ${DRIVER_LIB_PATH}
          ${DRIVER_LIB_PATH}/driver
          /usr/local/Ascend/driver/lib64
          /usr/local/Ascend/driver/lib64/driver
)
mark_as_advanced(DSMI_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(DSMI
                                  REQUIRED_VARS DSMI_LIBRARY DSMI_INCLUDE
                                  VERSION_VAR DSMI_VERSION_STRING)

if(DSMI_FOUND)
  set(DSMI_LIBRARIES ${DSMI_LIBRARY})
  set(DSMI_INCLUDE_DIR ${DSMI_INCLUDE})
endif()


================================================
FILE: CMake/FindDUKTAPE.cmake
================================================
find_path(DUKTAPE_INCLUDE NAMES duktape.h
  HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR}
)
mark_as_advanced(DUKTAPE_INCLUDE)

# Look for the library (sorted from most current/relevant entry to least).
set(DRIVER_LIB_PATH ${HITS_DRIVER_PATH}/lib64)
find_library(DUKTAPE_LIBRARY NAMES
    duktape
    HINTS ${CMAKE_INSTALL_FULL_LIBDIR}
)
mark_as_advanced(DUKTAPE_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(DUKTAPE
                                  REQUIRED_VARS DUKTAPE_LIBRARY DUKTAPE_INCLUDE
                                  VERSION_VAR DUKTAPE_VERSION_STRING)

if(DUKTAPE_FOUND)
  set(DUKTAPE_LIBRARIES ${DUKTAPE_LIBRARY})
  set(DUKTAPE_INCLUDE_DIR ${DUKTAPE_INCLUDE})
  message(STATUS "Duktape dependency found, ${DUKTAPE_LIBRARIES} ${DUKTAPE_INCLUDE_DIR}")
endif()

================================================
FILE: CMake/FindFFMPEG.cmake
================================================
find_path(FFMPEG_INCLUDE 
  NAMES libavformat/avformat.h libavcodec/avcodec.h libavutil/avutil.h libswscale/swscale.h
  HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR}
)
mark_as_advanced(FFMPEG_INCLUDE)

# Look for the library (sorted from most current/relevant entry to least).
set(FFMPEG_LIBRARY_NAME avutil avcodec avformat)
find_library(AVCODEC_LIBRARY NAMES avcodec HINTS ${CMAKE_INSTALL_FULL_LIBDIR})
find_library(AVUTIL_LIBRARY NAMES avutil HINTS ${CMAKE_INSTALL_FULL_LIBDIR})
find_library(AVFORMAT_LIBRARY NAMES avformat HINTS ${CMAKE_INSTALL_FULL_LIBDIR})
find_library(SWSCALE_LIBRARY NAMES swscale HINTS ${CMAKE_INSTALL_FULL_LIBDIR})
set(FFMPEG_LIBRARY ${AVCODEC_LIBRARY}
                   ${AVUTIL_LIBRARY}
                   ${AVFORMAT_LIBRARY}
                   ${SWSCALE_LIBRARY})
mark_as_advanced(FFMPEG_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFMPEG
                                  REQUIRED_VARS FFMPEG_LIBRARY AVCODEC_LIBRARY AVUTIL_LIBRARY AVFORMAT_LIBRARY SWSCALE_LIBRARY FFMPEG_INCLUDE
                                  VERSION_VAR FFMPEG_VERSION_STRING)

if(FFMPEG_FOUND)
  set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARY})
  set(FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE})
endif()


================================================
FILE: CMake/FindFUSE.cmake
================================================
find_path(FUSE_INCLUDE 
  NAMES fuse.h
  HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR}
)
mark_as_advanced(FUSE_INCLUDE)

# Look for the library (sorted from most current/relevant entry to least).
set(FUSE_LIBRARY_NAME fuse)
find_library(FUSE_LIBRARY NAMES fuse HINTS ${CMAKE_INSTALL_FULL_LIBDIR})
set(FUSE_LIBRARY ${FUSE_LIBRARY})
mark_as_advanced(FUSE_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(FUSE
                                  REQUIRED_VARS FUSE_LIBRARY FUSE_INCLUDE
                                  VERSION_VAR FUSE_VERSION_STRING)

if(FUSE_FOUND)
  set(FUSE_LIBRARIES ${FUSE_LIBRARY})
  set(FUSE_INCLUDE_DIR ${FUSE_INCLUDE})
endif()

================================================
FILE: CMake/FindMINDSPORE_LITE.cmake
================================================
set(HITS_MINDSPORE_LITE_PATH $ENV{MINDSPORE_LITE_PATH})

if (NOT WITH_MINDSPORE) 
  message(STATUS "not build with mindspore-lite, to enable please add -DWITH_MINDSPORE=on")
  return()
endif()

find_path(MINDSPORE_LITE_DIR NAMES 
  runtime/include/api/context.h 
  runtime/include/api/graph.h 
  runtime/include/api/model.h 
  HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR} ${HITS_MINDSPORE_LITE_PATH} /usr/local/mindspore-lite)
mark_as_advanced(MINDSPORE_LITE_DIR)

# Look for the library (sorted from most current/relevant entry to least).
find_library(MINDSPORE_LITE_LIBRARY NAMES
    mindspore-lite
    HINTS ${CMAKE_INSTALL_FULL_LIBDIR} ${HITS_MINDSPORE_LITE_PATH}/runtime/lib /usr/local/mindspore-lite/runtime/lib
)
mark_as_advanced(MINDSPORE_LITE_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(MINDSPORE_LITE
                                  REQUIRED_VARS MINDSPORE_LITE_LIBRARY MINDSPORE_LITE_DIR
                                  VERSION_VAR MINDSPORE_VERSION_STRING)

if(MINDSPORE_LITE_FOUND)
  set(MINDSPORE_LITE_LIBRARIES ${MINDSPORE_LITE_LIBRARY})
  set(MINDSPORE_LITE_INCLUDE_DIR ${MINDSPORE_LITE_DIR}/runtime)
  set(MINDSOPRE_LITE_LIB_DIR ${MINDSPORE_LITE_DIR}/runtime/lib)
endif()


================================================
FILE: CMake/FindNVCUVID.cmake
================================================
set(HITS_NVCUVID_PATH /usr/local/Video_Codec_SDK)
find_path(NVCUVID_INCLUDE NAMES nvcuvid.h HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR} ${HITS_NVCUVID_PATH}/include)
mark_as_advanced(NVCUVID_INCLUDE)

# Look for the library (sorted from most current/relevant entry to least).
find_library(NVCUVID_LIBRARY NAMES
    nvcuvid
    HINTS ${CMAKE_INSTALL_FULL_LIBDIR} ${HITS_NVCUVID_PATH}/lib
)
mark_as_advanced(NVCUVID_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(NVCUVID
                                  REQUIRED_VARS NVCUVID_LIBRARY NVCUVID_INCLUDE
                                  VERSION_VAR NVCUVID_VERSION_STRING)

if(NVCUVID_FOUND)
  set(NVCUVID_LIBRARIES ${NVCUVID_LIBRARY})
  set(NVCUVID_INCLUDE_DIR ${NVCUVID_INCLUDE})
endif()


================================================
FILE: CMake/FindOBS.cmake
================================================
find_path(OBS_INCLUDE NAMES eSDKOBS.h HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR})
mark_as_advanced(OBS_INCLUDE)

# Look for the library (sorted from most current/relevant entry to least).
find_library(OBS_LIBRARY NAMES 
                eSDKOBS 
                HINTS ${CMAKE_INSTALL_FULL_LIBDIR})
find_library(OBSAPI_LIBRARY NAMES 
                eSDKLogAPI 
                HINTS ${CMAKE_INSTALL_FULL_LIBDIR})

mark_as_advanced(OBSAPI_LIBRARY OBS_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OBS
                                  REQUIRED_VARS OBS_LIBRARY OBSAPI_LIBRARY OBS_INCLUDE
                                  VERSION_VAR OBS_VERSION_STRING)

if(OBS_FOUND)
  set(OBS_LIBRARIES ${OBS_LIBRARY} ${OBSAPI_LIBRARY})
  set(OBS_INCLUDE_DIR ${OBS_INCLUDE})
  message(STATUS "OBS dependency found, ${OBS_LIBRARIES} ${OBS_INCLUDE_DIR}")
endif()


================================================
FILE: CMake/FindROCKCHIP.cmake
================================================
if(DEFINED ENV{ROCKCHIP_PATH})
    set(HINTS_ROCKCHIP_PATH $ENV{ROCKCHIP_PATH})

    message(STATUS "DEFINED ${HINTS_ROCKCHIP_PATH}")
else()
    set(HINTS_ROCKCHIP_PATH "/opt/rockchip")

    message(STATUS "set default search path: /opt/rockchip")
endif()

find_path(ROCKCHIP_RGA_INCLUDE NAMES im2d.h rga.h
    HINTS ${HINTS_ROCKCHIP_PATH}/rk-rga/include)
mark_as_advanced(ROCKCHIP_RGA_INCLUDE)

find_path(ROCKCHIP_MPP_INCLUDE NAMES rk_mpi.h rk_type.h
    HINTS ${HINTS_ROCKCHIP_PATH}/rkmpp/include/rockchip)
mark_as_advanced(ROCKCHIP_MPP_INCLUDE)

find_path(RKNN_INCLUDE NAMES rknn_api.h
    HINTS ${HINTS_ROCKCHIP_PATH}/rknn/include)
mark_as_advanced(RKNN_INCLUDE)

find_path(RKNPU2_INCLUDE NAMES rknn_api.h
    HINTS ${HINTS_ROCKCHIP_PATH}/rknnrt/include)
mark_as_advanced(RKNPU2_INCLUDE)

find_library(RKNN_LIBRARY NAMES rknn_api HINTS ${HINTS_ROCKCHIP_PATH}/rknn/lib)
mark_as_advanced(RKNN_LIBRARY)

find_library(RKNPU2_LIBRARY NAMES rknnrt HINTS ${HINTS_ROCKCHIP_PATH}/rknnrt/lib)
mark_as_advanced(RKNPU2_LIBRARY)

find_library(RKRGA_LIBRARY NAMES rga HINTS ${HINTS_ROCKCHIP_PATH}/rk-rga/lib)
mark_as_advanced(RKRGA_LIBRARY)

find_library(RKMPP_LIBRARY NAMES rockchip_mpp HINTS ${HINTS_ROCKCHIP_PATH}/rkmpp/lib)
mark_as_advanced(RKMPP_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ROCKCHIP
    REQUIRED_VARS ROCKCHIP_RGA_INCLUDE ROCKCHIP_MPP_INCLUDE
    VERSION_VAR ROCKCHIP_VERSION_STRING)

if(ROCKCHIP_FOUND)
    set(RKNN_LIBRARIES ${RKNN_LIBRARY})
    set(RKNN_INCLUDE_DIR ${RKNN_INCLUDE})
    set(RKNPU2_INCLUDE_DIR ${RKNPU2_INCLUDE})
    set(RKNPU2_LIBRARIES ${RKNPU2_LIBRARY})
    set(RKRGA_LIBRARIES ${RKRGA_LIBRARY})
    set(RKMPP_LIBRARIES ${RKMPP_LIBRARY})
    set(ROCKCHIP_INCLUDE_DIR ${ROCKCHIP_RGA_INCLUDE} ${ROCKCHIP_MPP_INCLUDE})

    message(STATUS "rockchip dependency found, ${ROCKCHIP_INCLUDE_DIR}")
endif()

================================================
FILE: CMake/FindTENSORFLOW.cmake
================================================
find_path(TENSORFLOW_INCLUDE NAMES tensorflow/c/c_api.h HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR})
mark_as_advanced(TENSORFLOW_INCLUDE)

# Look for the library (sorted from most current/relevant entry to least).
find_library(TENSORFLOW_LIBRARY NAMES
    tensorflow
    HINTS ${CMAKE_INSTALL_FULL_LIBDIR}
)
mark_as_advanced(TENSORFLOW_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TENSORFLOW
                                  REQUIRED_VARS TENSORFLOW_LIBRARY TENSORFLOW_INCLUDE
                                  VERSION_VAR TENSORFLOW_VERSION_STRING)

if(TENSORFLOW_FOUND)
  set(TENSORFLOW_LIBRARIES ${TENSORFLOW_LIBRARY})
  set(TENSORFLOW_INCLUDE_DIR ${TENSORFLOW_INCLUDE})
endif()


================================================
FILE: CMake/FindTENSORRT.cmake
================================================
set(TRT_ROOT /tensorrt)
set(HINT_DIRS $ENV{TRT_RELEASE}/include ${CMAKE_INSTALL_FULL_INCLUDEDIR} ${TRT_ROOT}/include)
set(HINT_LIBS $ENV{TRT_RELEASE}/lib ${CMAKE_INSTALL_FULL_LIBDIR} ${TRT_ROOT}/lib)
find_path(TENSORRT_INCLUDE 
    NAMES NvCaffeParser.h
          NvInfer.h
          NvInferPlugin.h
          NvOnnxConfig.h
          NvOnnxParser.h
          NvOnnxParserRuntime.h
          NvUffParser.h
          NvUtils.h
          NvInferPluginUtils.h
          NvInferRuntimeCommon.h
          NvInferRuntime.h
          NvInferVersion.h
    HINTS ${HINT_DIRS})

mark_as_advanced(TENSORRT_INCLUDE)

find_library(TENSORRT_LIBRARY NAMES nvinfer HINTS ${HINT_LIBS})
find_library(TENSORRT_PLUGIN_LIBRARY NAMES nvinfer_plugin HINTS ${HINT_LIBS})
find_library(TRT_CAFFEPARSER_LIBRARY NAMES nvcaffe_parser nvparsers HINTS ${HINT_LIBS})
find_library(TRT_ONNXPARSER_LIBRARY NAMES nvonnxparser nvonnxparser_runtime HINTS ${HINT_LIBS})

mark_as_advanced(TENSORRT_LIBRARY)

if(TENSORRT_INCLUDE AND EXISTS "${TENSORRT_INCLUDE}/NvInfer.h")
    file(STRINGS "${TENSORRT_INCLUDE}/NvInfer.h" TensorRT_MAJOR REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$")
    file(STRINGS "${TENSORRT_INCLUDE}/NvInfer.h" TensorRT_MINOR REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$")
    file(STRINGS "${TENSORRT_INCLUDE}/NvInfer.h" TensorRT_PATCH REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$")

    string(REGEX REPLACE "^#define NV_TENSORRT_MAJOR ([0-9]+).*$" "\\1" TensorRT_VERSION_MAJOR "${TensorRT_MAJOR}")
    string(REGEX REPLACE "^#define NV_TENSORRT_MINOR ([0-9]+).*$" "\\1" TensorRT_VERSION_MINOR "${TensorRT_MINOR}")
    string(REGEX REPLACE "^#define NV_TENSORRT_PATCH ([0-9]+).*$" "\\1" TensorRT_VERSION_PATCH "${TensorRT_PATCH}")
    
    set(TENSORRT_VERSION "${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}")
    message("find tensorrt version: " ${TENSORRT_VERSION})
    set(TENSORRT_VERSION_STRING "${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}")
endif()

if(TENSORRT_INCLUDE AND EXISTS "${TENSORRT_INCLUDE}/NvInferVersion.h")
    file(STRINGS "${TENSORRT_INCLUDE}/NvInferVersion.h" TensorRT_MAJOR REGEX "^#define NV_TENSORRT_MAJOR [0-9]+.*$")
    file(STRINGS "${TENSORRT_INCLUDE}/NvInferVersion.h" TensorRT_MINOR REGEX "^#define NV_TENSORRT_MINOR [0-9]+.*$")
    file(STRINGS "${TENSORRT_INCLUDE}/NvInferVersion.h" TensorRT_PATCH REGEX "^#define NV_TENSORRT_PATCH [0-9]+.*$")

    string(REGEX REPLACE "^#define NV_TENSORRT_MAJOR ([0-9]+).*$" "\\1" TensorRT_VERSION_MAJOR "${TensorRT_MAJOR}")
    string(REGEX REPLACE "^#define NV_TENSORRT_MINOR ([0-9]+).*$" "\\1" TensorRT_VERSION_MINOR "${TensorRT_MINOR}")
    string(REGEX REPLACE "^#define NV_TENSORRT_PATCH ([0-9]+).*$" "\\1" TensorRT_VERSION_PATCH "${TensorRT_PATCH}")
    
    set(TENSORRT_VERSION "${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}")
    message("find tensorrt version: " ${TENSORRT_VERSION})
    set(TENSORRT_VERSION_STRING "${TensorRT_VERSION_MAJOR}.${TensorRT_VERSION_MINOR}.${TensorRT_VERSION_PATCH}")
endif()

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TENSORRT
                                  REQUIRED_VARS 
                                  TENSORRT_LIBRARY 
                                  TENSORRT_INCLUDE 
                                  TRT_CAFFEPARSER_LIBRARY 
                                  TRT_ONNXPARSER_LIBRARY 
                                  TENSORRT_PLUGIN_LIBRARY
                                  TENSORRT_VERSION_STRING
                                  VERSION_VAR TENSORRT_VERSION_STRING)

if(TENSORRT_FOUND)
  set(TENSORRT_LIBRARIES ${TENSORRT_LIBRARY} ${TRT_CAFFEPARSER_LIBRARY} ${TRT_ONNXPARSER_LIBRARY} ${TENSORRT_PLUGIN_LIBRARY})
  set(TENSORRT_INCLUDE_DIR ${TENSORRT_INCLUDE})
  set(TENSORRT_VERSION ${TENSORRT_VERSION_STRING})
endif()

================================================
FILE: CMake/FindVCN.cmake
================================================
find_path(VCN_INCLUDE 
    NAMES IVS_SDK.h 
        hwsdk.h
        ivs_error.h
    HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR})
mark_as_advanced(VCN_INCLUDE)

# Look for the library (sorted from most current/relevant entry to least).
find_library(VCN_LIBRARY NAMES 
                IVS_SDK 
                HINTS ${CMAKE_INSTALL_FULL_LIBDIR})

mark_as_advanced(VCN_LIBRARY)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VCN
                                  REQUIRED_VARS VCN_LIBRARY VCN_INCLUDE
                                  VERSION_VAR VCN_VERSION_STRING)

if(VCN_FOUND)
  set(VCN_LIBRARIES ${VCN_LIBRARY})
  set(VCN_INCLUDE_DIR ${VCN_INCLUDE})
  message(STATUS "VCN dependency found, ${VCN_LIBRARIES} ${VCN_INCLUDE_DIR}")
endif()


================================================
FILE: CMake/Function.cmake
================================================
macro(subdirlist result dir)
  file(GLOB children RELATIVE ${dir} ${dir}/*)
  set (file ${ARGN})
  set(dirs "")
  foreach(child ${children})
    if(IS_DIRECTORY ${dir}/${child})
        if(NOT ${file} STREQUAL "")
            if(NOT EXISTS ${dir}/${child}/${file})
                CONTINUE()
            endif()
        endif()
        set(dirs ${dirs} ${child})
    endif()
  endforeach()
  set(${result} ${dirs})
endmacro()

function (exclude_files_from_dir_in_list result filelist excludedir)
  foreach (ITR ${filelist})
    if ("${ITR}" MATCHES "(.*)${excludedir}(.*)")                   
      list (REMOVE_ITEM filelist ${ITR})                              
    endif ("${ITR}" MATCHES "(.*)${excludedir}(.*)")

  endforeach(ITR)
  set(${result} ${filelist} PARENT_SCOPE)                          
endfunction (exclude_files_from_dir_in_list)

function (group_source_test_files source test test_pattern filelist)
  set(list_var "${ARGN}")
  string(REPLACE "." "\\.*" test_pattern ${test_pattern})
  string(REPLACE "*" ".*" test_pattern ${test_pattern})
  foreach (ITR ${filelist} ${list_var})
    if ("${ITR}" MATCHES "(.*)${test_pattern}(.*)")                   
      list (APPEND test_list ${ITR})                 
    else()
      list (APPEND source_list ${ITR})              
    endif ()
  endforeach(ITR) 
  set(${source} ${source_list} PARENT_SCOPE)  
  set(${test} ${test_list} PARENT_SCOPE)  
endfunction(group_source_test_files)

function (group_files groupone grouptwo pattern filelist)
  set(list_var "${ARGN}")
  foreach (ITR ${filelist} ${list_var})
    if ("${ITR}" MATCHES "${pattern}")                   
      list (APPEND grouptwo_list ${ITR})                 
    else()
      list (APPEND groupone_list ${ITR})              
    endif ()
  endforeach(ITR) 
  set(${groupone} ${groupone_list} PARENT_SCOPE)  
  set(${grouptwo} ${grouptwo_list} PARENT_SCOPE)  
endfunction(group_files)


================================================
FILE: CMake/JavaJDK.cmake
================================================
if(${CMAKE_VERSION} VERSION_LESS "3.16.0") 
    find_library(JAVA_AWT_LIBRARY NAMES
        jawt
        HINTS $ENV{JAVA_HOME}
            $ENV{JAVA_HOME}/lib
            $ENV{JAVA_HOME}/lib/amd64
            $ENV{JAVA_HOME}/lib/aarch64
            $ENV{JDK_HOME}
            $ENV{JDK_HOME}/lib
            $ENV{JDK_HOME}/lib/amd64
            $ENV{JDK_HOME}/lib/aarch64
    )

    find_library(JAVA_JVM_LIBRARY NAMES
        jvm
        HINTS $ENV{JAVA_HOME}/lib/server
            $ENV{JAVA_HOME}/lib/amd64/server
            $ENV{JAVA_HOME}/lib/aarch64/server
            $ENV{JAVA_HOME}/jre/lib/server
            $ENV{JAVA_HOME}/jre/lib/amd64/server
            $ENV{JAVA_HOME}/jre/lib/aarch64/server
            $ENV{JDK_HOME}/lib/server
            $ENV{JDK_HOME}/lib/amd64/server
            $ENV{JDK_HOME}/lib/aarch64/server
    )

    find_path(JAVA_INCLUDE_PATH NAMES 
        jni.h
        HINTS $ENV{JAVA_HOME}/include
              $ENV{JDK_HOME}/include
    )
endif()

================================================
FILE: CMake/Options.cmake
================================================
#
# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


option(ENABLE_FRAME_POINTER "enable frame pointer on 64bit system with flag -fno-omit-frame-pointer, on 32bit system, it is always enabled" ON)

include (CheckFunctionExists)
check_function_exists(dladdr HAVE_DLADDR)
check_function_exists(nanosleep HAVE_NANOSLEEP)

option(STANDALONE "build standalone modelbox" OFF)
option(PYTHONE_DISABLED "Disable build python" OFF)
option(WITH_SECURE_C "include libsecurec.so" ON)
option(WITH_ALL_DEMO "build with all demo with large model file" OFF)
option(TEST_COVERAGE "build with coverage" OFF)
option(WITH_JAVA "build java support" OFF)
option(CLANG_TIDY "build with clang tidy" OFF)
option(CLANG_TIDY_FIX "do auto fix" ON)
option(CLANG_TIDY_AS_ERROR "make clang-tidy warning as error" OFF)
option(USE_CN_MIRROR "download from cn mirror" OFF)
option(WITH_WEBUI "build modelbox webui" ON)
option(WITH_MINDSPORE "build mindspore" OFF)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 


# speedup compilation
find_program(CCACHE ccache)
if(CCACHE)
    set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE})
    set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE})
    message(STATUS "Enable ccache")
endif(CCACHE)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fno-strict-aliasing")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fno-strict-aliasing")

if (TEST_COVERAGE)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
endif(TEST_COVERAGE)

if(ENABLE_FRAME_POINTER STREQUAL ON)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
endif(ENABLE_FRAME_POINTER STREQUAL ON) 

add_definitions(-D__STDC_FORMAT_MACROS)
add_definitions(-D_GNU_SOURCE)

if(OS_LINUX)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--export-dynamic")
endif(OS_LINUX)

set(CUDA_NVCC_FLAGS "-Xcompiler -Wall,-fno-strict-aliasing,${CMAKE_CXX_FLAGS_DEBUG}" CACHE INTERNAL "") 
set(CUDA_PROPAGATE_HOST_FLAGS OFF CACHE INTERNAL "")


================================================
FILE: CMake/ProjectEnvVars.cmake
================================================
#
# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


if(NOT TEST_WORKING_DIR)
	set(TEST_WORKING_DIR ${CMAKE_BINARY_DIR}/test/test-working-dir)
	file(MAKE_DIRECTORY ${TEST_WORKING_DIR})
endif()
set(TEST_WORKING_DATA_DIR "${TEST_WORKING_DIR}/data")
file(MAKE_DIRECTORY ${TEST_WORKING_DATA_DIR})
set(TEST_WORKING_LIB_DIR "${TEST_WORKING_DIR}/lib")
file(MAKE_DIRECTORY ${TEST_WORKING_LIB_DIR})
set(TEST_WORKING_BIN_DIR "${TEST_WORKING_DIR}/bin")
file(MAKE_DIRECTORY ${TEST_WORKING_BIN_DIR})
set(TEST_WORKING_DRIVERS_DIR "${TEST_WORKING_DIR}/drivers")
file(MAKE_DIRECTORY ${TEST_WORKING_DRIVERS_DIR})
set(TEST_ASSETS ${CMAKE_SOURCE_DIR}/test/assets)
set(TEST_SOURCE_DIR ${CMAKE_SOURCE_DIR}/test)
set(TEST_DEMO_DRIVERS_DIR "${TEST_WORKING_DIR}/demo")
file(MAKE_DIRECTORY ${TEST_DEMO_DRIVERS_DIR})

set(MODELBOX_TOOLS_PATH "${CMAKE_INSTALL_FULL_DATAROOTDIR}/modelbox/tools")
set(MODELBOX_DEMO_DIR "/opt/modelbox/demo")
set(MODELBOX_WWW_DIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}/modelbox/www")


================================================
FILE: CMake/SecureCompilerOption.cmake
================================================
#
# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-all -fPIC")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-all -fPIC")
  
  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now,-z,noexecstack -pie")
  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro,-z,now,-z,noexecstack")
else()
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
endif()
  

================================================
FILE: CMake/clang-tidy-warp
================================================
#!/bin/bash
#
# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# wrap for clang-tidy, patch command line.
ARGS=$(echo $@ | sed 's/-fno-gnu-unique//g' | sed 's/-rdynamic//g')
if [ "$1" = "-fix" ]; then
    sourcefile="$2"
    if [ -e "$sourcefile" ]; then
        exec {lockfd}<$sourcefile
        flock -x $lockfd
    fi
fi
exec clang-tidy ${ARGS}


================================================
FILE: CMakeLists.txt
================================================
#
# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


cmake_minimum_required(VERSION 3.10)

project(modelbox)

if (NOT MODELBOX_VERSION_MAJOR)
    set(MODELBOX_VERSION_MAJOR 1)
endif()

if (NOT MODELBOX_VERSION_MINOR)
    set(MODELBOX_VERSION_MINOR 0)
endif()

if (NOT MODELBOX_VERSION_PATCH)
    set(MODELBOX_VERSION_PATCH 0)
endif()

set(MODELBOX_VERSION_STRING "${MODELBOX_VERSION_MAJOR}.${MODELBOX_VERSION_MINOR}.${MODELBOX_VERSION_PATCH}")
set(MODELBOX_VERSION_API 1)

set(CMAKE_PROJECT_VERSION_MAJOR ${MODELBOX_VERSION_MAJOR})
set(CMAKE_PROJECT_VERSION_MINOR ${MODELBOX_VERSION_MINOR})
set(CMAKE_PROJECT_VERSION_PATCH ${MODELBOX_VERSION_PATCH})

set(MODELBOX_AUTHOR "Huawei Technologies Co., Ltd.")
set(MODELBOX_AUTHOR_EMAIL "")

if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
    message(FATAL_ERROR "Do not build in source directory!")
endif()

set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})

include(Options)
include(SecureCompilerOption)
include(Clang-tidy)
include(Function)
include(FindPkgConfig)
include(CMakeDependentOption)
include(GNUInstallDirs)
include(CPackComponent)
include(ProjectEnvVars)
include(JavaJDK)

if (NOT STANDALONE)
    PKG_GET_VARIABLE(SYSTEMDSYSTEMUNITDIR systemd systemdsystemunitdir)
endif()

set(LICENSE_FILE ${CMAKE_CURRENT_LIST_DIR}/LICENSE)
set(README_FILE ${CMAKE_CURRENT_LIST_DIR}/README.md)
set(RELEASE_PACKAGE_DIR ${CMAKE_BINARY_DIR}/release)
set(CUSTOM_LIBRARY_PATH ${CMAKE_CURRENT_SOURCE_DIR}/libs)
set(MODELBOX_TOP_DIR ${CMAKE_CURRENT_SOURCE_DIR})

find_package(CPPREST)
find_package(OpenSSL REQUIRED)
find_package(Boost COMPONENTS system)
find_package(CUDA 10.0)
find_package(CUDACUDA)
find_package(TENSORRT)
find_package(TENSORFLOW)
find_package(OBS)
find_package(DIS)
find_package(VCN)
find_package(NVCUVID)
find_package(FFMPEG)
find_package(ACL)
find_package(DSMI)
find_package(OpenCV)
find_package(DUKTAPE)
find_package(MINDSPORE_LITE)
find_package(FUSE)
find_package(JNI)
find_package(Java)
find_package(ROCKCHIP)
find_package(DLENGINE)

add_subdirectory(thirdparty)
add_subdirectory(src)
add_subdirectory(examples)
add_subdirectory(test EXCLUDE_FROM_ALL)
add_subdirectory(docs)
add_subdirectory(package)


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

================================================
FILE: NOTICE
================================================
ModelBox
Copyright 2021 Huawei Technologies Co., Ltd


================================================
FILE: README.md
================================================
# ModelBox

[![daily building](https://github.com/modelbox-ai/modelbox/actions/workflows/unit-test-daily-on-device.yml/badge.svg)](https://github.com/modelbox-ai/modelbox/actions/workflows/unit-test-daily-on-device.yml)

[English](README_en.md)

ModelBox是一个适用于端边云场景的AI推理应用开发框架,提供了基于Pipeline的并行执行流程,能帮助AI应用开发者较快的开发出高效,高性能,以及支持软硬协同优化的AI应用。[详细介绍](http://modelbox-ai.com/modelbox-book/)

## ModelBox特点

1. **易于开发**  
   AI推理业务可视化编排开发,功能模块化,丰富组件库;c++,python, Java多语言支持。

1. **易于集成**  
   集成云上对接的组件,云上对接更容易。

1. **高性能,高可靠**  
   pipeline并发运行,数据计算智能调度,资源管理调度精细化,业务运行更高效。

1. **软硬件异构**  
   CPU,GPU,NPU多异构硬件支持,资源利用更便捷高效。

1. **全场景**  
   视频,语音,文本,NLP全场景,专为服务化定制,云上集成更容易,端边云数据无缝交换。

1. **易于维护**  
   服务运行状态可视化,应用,组件性能实时监控,优化更容易。

## ModelBox解决的问题

目前AI应用开发时,训练完成模型后,需要将多个模型和应用逻辑串联在一起组成AI应用,并上线发布成为服务或应用。在整个过程中,需要面临复杂的应用编程问题:
  
|问题|问题说明|
|--|--|
|需要开发AI应用的周边功能|比如AI应用编译工程,应用初始化,配置管理接口,日志管理口,应用故障监控等功能。|
|需要开发AI常见的前后处理|音视频加解码,图像转换处理,推理前处理,后处理YOLO等开发。 |
|需要开发和云服务对接的周边功能|比如HTTP服务开发,云存储,大数据服务,视频采集服务对接开发。 |
|需要开发出高性能的推理应用|需要基于多线程,内存池化,显存池化,多GPU加速卡,模型batch批处理,调用硬件卡的API等手段开发应用。|
|需要开发验证docker镜像|需要开发docker镜像,集成必要的ffmpeg,opencv软件,CUDA, MindSpore,TensorFlow等软件,并做集成测试验证。|
|多种AI业务,需要共享代码,降低维护工作|需要复用不同组件的代码,包括AI前后处理代码,AI应用管理代码,底层内存,线程管理代码等。|
|模型开发者,验证模型功能比较复杂|模型开发者完成模型训练后,需要编写python代码验证,之后,再转成生产代码;在高性能,高可靠场景改造工作量大。|

ModelBox的目标是解决AI开发者在开发AI应用时的编程复杂度,降低AI应用的开发难度,将复杂的数据处理,并发互斥,多设备协同,组件复用,数据通信,交由ModelBox处理。开发者主要聚焦业务逻辑本身,而不是软件细节。 在提高AI推理开发的效率同时,保证软件的性能,可靠性,安全性等属性。

## 开始使用

ModelBox支持两种方式运行,一种是服务化,一种是SDK,开发者可以按照下表选择相关的开发模式。

|开发模式|开发模式适用场景|
|--|--|
|服务化|ModelBox为独立的服务,适合云服务,端侧服务的AI推理开发场景,包括了后台服务,运维工具,docker镜像等服务化组件|
|SDK|ModelBox提供了ModelBox开发库,使用于扩展现有应用支持高性能AI推理,专注AI推理业务,支持c++,Python集成|

在开发AI推理应用时,可以按照[第一个应用](https://modelbox-ai.com/modelbox-book/first-app/mnist.html)的流程开发AI应用。


================================================
FILE: README_en.md
================================================
# ModelBox

[![daily building](https://github.com/modelbox-ai/modelbox/actions/workflows/unit-test-daily-on-device.yml/badge.svg)](https://github.com/modelbox-ai/modelbox/actions/workflows/unit-test-daily-on-device.yml)

ModelBox is an AI application development framework featuring device-edge-cloud synergy. It provides a parallel execution framework based on pipelines, helping developers quickly develop high-performance AI applications that support software-hardware synergized optimization. [See details](http://modelbox-ai.com/modelbox-book/)

## ModelBox Highlights

1. **Easy to develop**  
   Simplified orchestration and development of inference applications via a graphical interface, modularized functions, rich component libraries, and multi-language support (C++, Python, Java).

1. **Easy to integrate**  
   Easy to integrate different components on the cloud.

1. **High performance and reliability**  
   Parallel pipeline execution, intelligent scheduling of compute capacities, fine-grained resource management and scheduling, and higher efficiency.

1. **Heterogeneous software and hardware**  
   Support for heterogeneous compute resources, including CPU, GPU and NPU, higher resource utilization.

1. **All-scenario**  
   Able to process various types of data, such as video, voice, text, and NLP; service-oriented; easy to customize and integrate; and seamless data exchange across the cloud, edge, and devices.

1. **Easy to maintain**  
   Real-time monitoring of service status and application and component performance, facilitated optimization.

## Tasks Facilitated by ModelBox

With typical AI application development, after model training, multiple models need to be joined together through coding to form a single application and the released as an online service or application. This may involve complex application programming, as described in the table below:
  
|Task|Description|
|--|--|
|Developing dependent functions for AI applications|AI application compiler project, application initialization, configuration management interface, log management interface, application fault monitoring, and more.|
|Developing common pre- and postprocessing functions for AI applications|Audion and video codecs, image conversion, preprocessing, postprocessing (YOLO), and more.|
|Enabling interconnection with cloud services|For example, HTTP service and interconnection with cloud storage, big data service, and video collection service.|
|Developing AI applications for high-performance inference|Develop applications by leveraging techniques such multi-threading, memory pooling, GPU pooling, multi-GPU accelerator, batch model processing, and hardware module calling via APIs.|
|Developing and verifying Docker images|Develop Docker images, integrate the needed software, such as FFmpeg, OpenCV, CUDA, MindSpore, and TensorFlow, and perform integration and verification tests.|
|Reusing code between different services to si|Code may need to be reused between different components, including those for preprocessing, postprocessing, and the management of applications, bottom-layer memory, and threads.|
|Verifying models|Developers may need to write a piece of Python code th verify the models they develop. To prepare the models for demanding production scenarios, the model code may still need to be rewritten or modified significantly.|

ModelBox simplifies AI application development for developers by freeing them from complex data processing, decision-making on concurrency and mutual exclusion, multi-device collaboration, code reuse between different components, data communication, and more. This way, the developers can focus on the applications themselves, rather than the underlying software details. Additionally, ModelBox also ensures software performance, reliability, and security.

## Getting Started

ModelBox can run in either of the following modes: service-oriented and SDK.

|Development Mode|Description|
|--|--|
|Service-oriented|ModelBox is offered as an independent service that helps developers develop AI application. It provides service-based components for backend services, O&M tools, and Docker images.|
|SDK|ModelBox provides development libraries for developers to extend and scale their applications for more performance-demanding inference needs, C++ and Python are supported.|

To develop an AI application for inference, follow the procedures described in [First Application](https://modelbox-ai.com/modelbox-book/first-app/mnist.html).


================================================
FILE: Third_Party_Open_Source_Software_Notice
================================================
OPEN SOURCE SOFTWARE NOTICE

Please note we provide an open source software notice along with this product and/or this product firmware (in the following just “this product”). The open source software licenses are granted by the respective right holders. And the open source licenses prevail all other license information with regard to the respective open source software contained in the product, including but not limited to End User Software Licensing Agreement. This notice is provided on behalf of Huawei Technologies Co. Ltd. and any of its local subsidiaries which may have provided this product to you in your local country. 

Warranty Disclaimer    
THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.

Copyright Notice and License Texts

Software: APIGW-cpp-sdk 1.0.2
Copyright notice:
Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
Copyright (c) 2006, 2008 Junio C Hamano


License:


Software: googletest 1.10.0
Copyright notice:
Copyright 2017 Google Inc.
Copyright 2008, Google Inc.
Copyright 2008, Google Inc.
Copyright 2008, Google Inc.
Copyright 2007, Google Inc.
Copyright 2008, Google Inc.
Copyright 2007, Google Inc.
Copyright 2017 Google Inc.
Copyright 2018, Google Inc.
Copyright 2008, Google Inc.
Copyright 2006, Google Inc.
Copyright 2009, Google Inc.
Copyright 2013, Google Inc.
Copyright 2009, Google Inc.
Copyright 2009, Google Inc.
Copyright 2007 Google Inc.
Copyright 2008, Google Inc.
Copyright 2008 Google Inc. All Rights Reserved.
Copyright [2007] Neal Norwitz
Portions Copyright [2007] Google Inc.
Copyright 2007 Neal Norwitz
Portions Copyright 2007 Google Inc.
Copyright 2008 Google Inc.  All Rights Reserved.
Copyright 2009 Neal Norwitz All Rights Reserved.
Copyright 2007, Google Inc.
Copyright 2008, Google Inc.
Copyright 2013, Google Inc.
Copyright 2007, Google Inc.
Copyright 2008, Google Inc.
Copyright 2015, Google Inc.
Copyright (c) 2006, 2008 Junio C Hamano
Copyright 2008, Google Inc.
Copyright 2008 Google Inc.
Copyright 2005, Google Inc.
Copyright 2007, Google Inc.
Copyright 2008, Google Inc.
Copyright 2006, Google Inc.
Copyright 2007, Google Inc.
Copyright 2006, Google Inc.
Copyright 2006, Google Inc.
Copyright 2009, Google Inc.
Copyright 2010, Google Inc.
Copyright 2009 Google Inc. All rights reserved.
Copyright 2005, Google Inc.
Copyright 2015, Google Inc.
Copyright 2017 Google Inc.
Copyright 2008, Google Inc.
Copyright 2009 Google Inc.  All rights reserved.
Copyright 2008 Google Inc.
Copyright 2008, Google Inc.
Copyright 2018, Google LLC.
Copyright 2019 Google LLC.  All Rights Reserved.
Copyright 2018, Google Inc.
Copyright 2009 Google Inc. All Rights Reserved.
Copyright 2009, Google Inc.
Copyright 2013, Google Inc.
Copyright 2018, Google Inc.
Copyright 2018 Google LLC. All rights reserved.
Copyright 2015 Google Inc. All rights reserved.
Copyright 2019, Google LLC.
Copyright 2010 Google Inc.  All Rights Reserved.
Copyright 2005 Google Inc. All Rights Reserved.
Copyright 2013 Google Inc. All Rights Reserved.
Copyright 2009, Google Inc.
Copyright 2007 Google Inc.
Copyright 2005, Google Inc.
Copyright 2005, Google Inc.
Copyright 2008, Google Inc.
Copyright 2015, Google Inc.
Copyright 2015, Google Inc.
Copyright 2005, Google Inc.
Copyright 2008 Google Inc.
Copyright 2017 Google Inc.


License: BSD 3-Clause License
Copyright 2008, Google Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

    * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
    * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Software: Huawei_Secure_C 1.0.0
Copyright notice:
Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
Copyright (c) Huawei Technologies Co., Ltd. 2014-2018. All rights reserved.
Copyright (C), 2001-2012, Huawei Tech. Co., Ltd.
Copyright @ Huawei Technologies Co., Ltd. 1998-2014. All rights reserved.
Copyright @ Huawei Technologies Co., Ltd. 1998-2014. All rights reserved.  ^M
Copyright (C), 2001-2012, Huawei Tech. Co., Ltd.
Copyright (c) Huawei Technologies Co., Ltd. 2014-2018. All rights reserved.
Copyright (c) 2006, 2008 Junio C Hamano

License:


Software: nlohmann 3.7.3
Copyright notice:
Copyright &copy; 2013-2019 [Niels Lohmann](http://nlohmann.me)
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the [MIT License](http://opensource.org/licenses/MIT) (see above). Copyright &copy; 2008-2009 [Björn Hoehrmann](http://bjoern.hoehrmann.de/) <bjoern@hoehrmann.de>
The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the [MIT License](http://opensource.org/licenses/MIT) (see above). Copyright &copy; 2009 [Florian Loitsch](http://florian.loitsch.com/)
Copyright (c) 2013-2019 Niels Lohmann
Copyright (c) 2012, Erik Edlund <erik.edlund@32767.se>
Copyright (c) 2009 Google Inc. All rights reserved.
cpplint.py and its corresponding unit tests are Copyright (C) 2009 Google Inc.
Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>.
The above copyright notice and this permission notice shall be included in all
Copyright (c) 2018 Vitaliy Manushkin <agri@akamo.info>.
CHECK(j["copyright"] == "(C) 2013-2017 Niels Lohmann");
Copyright 2014 The Authors
Copyright (c) 2015 Max Woolf
The above copyright notice and this permission notice shall be included in all
Copyright (c) 2016 Nicolas Seriot
The above copyright notice and this permission notice shall be included in all
Copyright (c) 2016 Nicolas Seriot
The above copyright notice and this permission notice shall be included in all
Copyright (c) 2018-2019 Bryan Gillespie
The above copyright notice and this permission notice shall be included in
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Copyright (c) 2016-2019 Viktor Kirilov
Copyright (c) 2016-2018 Viktor Kirilov
The above copyright notice and this permission notice shall be included in all
Copyright (c) 2015-2017 Niels Lohmann.
The above copyright notice and this permission notice shall be included in all
Copyright (c) 2015-2017 Niels Lohmann
Copyright 2015 Google Inc. All rights reserved.
Copyright 2018 Google Inc. All rights reserved.
Copyright 2016 Ismael Jimenez Martinez. All rights reserved.
Copyright 2017 Roman Lebedev. All rights reserved.
Copyright 2015 Google Inc. All rights reserved.
Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>.
The above copyright notice and this permission notice shall be included in all
`copyright` | The copyright line for the library as string.
result["copyright"] = "(C) 2013-2017 Niels Lohmann";
copyright and related and neighboring rights to this software to
@copyright Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>
The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch.
Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>.
The above copyright notice and this permission notice shall be included in all
copyright and related and neighboring rights to this software to
The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch.
@copyright Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>
result["copyright"] = "(C) 2013-2017 Niels Lohmann";
@copyright Copyright &copy; 2013-2019 Niels Lohmann. The code is licensed under the [MIT License](http://opensource.org/licenses/MIT).
Copyright Louis Dionne 2015
"copyright": "(C) 2013-2017 Niels Lohmann",
Copyright (c) 2006, 2008 Junio C Hamano


License: MIT License
MIT License 

Copyright (c) 2013-2019 Niels Lohmann

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


Software: pybind11 2.5.0
Copyright notice:
Copyright (c) 2015 Wenzel Jakob <wenzel@inf.ethz.ch>
Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>, All rights reserved.
Copyright (c) 2006, 2007 Montel Laurent, <montel@kde.org>
Copyright (c) 2008, 2009 Gael Guennebaud, <g.gael@free.fr>
Copyright (c) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
Copyright (c) 2015 Wenzel Jakob <wenzel@inf.ethz.ch>
Copyright 2001-2009 Kitware, Inc.
Copyright 2012 Continuum Analytics, Inc.
Copyright (c) 2007-2012 University of Illinois at Urbana-Champaign.
Copyright (c) 2017 Wenzel Jakob <wenzel.jakob@epfl.ch>
Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
Copyright (c) 2019 Google Inc.
Copyright (c) 2017 Henry F. Schreiner
Copyright (c) 2016 Ivan Smirnov
Copyright (c) 2018 Hudson River Trading LLC <opensource@hudson-trading.com>
Copyright (c) 2016 Sergey Lyskov
Copyright (c) 2016 Trent Houliston <trent@houliston.me> and
Copyright (c) 2016 Ivan Smirnov <i.s.smirnov@gmail.com>
Copyright (c) 2019 Roland Dreier <roland.dreier@gmail.com>
Copyright (c) 2016 Jason Rhinelander <jason@imaginary.ca>
Copyright (c) 2016 Ben North <ben@redfrontdoor.org>
Copyright (c) 2017 Jason Rhinelander <jason@imaginary.ca>
Copyright (c) 2015 Wenzel Jakob <wenzel@inf.ethz.ch>
Copyright (c) 2019 Google LLC
Copyright (c) 2016 Klemens D. Morgenstern
Copyright (c) 2016 Pim Schellart <P.Schellart@princeton.edu>
Copyright (c) 2017 Borja Zarco (Google LLC) <bzarco@google.com>
Copyright (c) 2016 Trent Houliston <trent@houliston.me> and
Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
Copyright (c) 2016 Sergey Lyskov and Wenzel Jakob
Copyright (c) 2017 Henry F. Schreiner
Copyright (c) 2017 Wenzel Jakob <wenzel.jakob@epfl.ch>
Copyright (c) 2016 Klemens Morgenstern <klemens.morgenstern@ed-chemnitz.de> and
Copyright (c) 2017 Jason Rhinelander <jason@imaginary.ca>
Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
Copyright (c) 2017 Wenzel Jakob <wenzel.jakob@epfl.ch>
Copyright (c) 2006, 2008 Junio C Hamano
Copyright (c) 2006, 2008 Junio C Hamano


License: BSD 3-Clause License
Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>, All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors
   may be used to endorse or promote products derived from this software
   without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Please also refer to the file CONTRIBUTING.md, which clarifies licensing of
external contributions to this project including patches, pull requests, etc.


Software: tinylog 1.4
Copyright notice:
Copyright (C) 2018-2020 Nick Peng <pymumu@gmail.com>
Copyright (c) 2018 Nick Peng <pymumu@gmail.com>
Copyright (C) 2018-2020 Ruilin Peng (Nick) <pymumu@gmail.com>
Copyright (c) 2006, 2008 Junio C Hamano


License: MIT License
MIT License

tinylog
Copyright (c) 2018 Nick Peng <pymumu@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


Software: toml11 3.5.0
Copyright notice:
Copyright (c) 2017-2020 Toru Niina
Copyright (c) 2017 Toru Niina
Copyright Toru Niina 2019.
Copyright Toru Niina 2017.
Copyright (c) 2006, 2008 Junio C Hamano


License: MIT License

The MIT License (MIT)

Copyright (c) 2017 Toru Niina

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

================================================
FILE: docker/Dockerfile.ascend.base
================================================
FROM ubuntu:20.04 as base

COPY ascend /root/ascend

WORKDIR /root

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && \
    apt update && \
    apt install -y python3-dev python3-pip curl pciutils && \
    apt clean all && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN mkdir -p /root/.pip && \
    echo "[global]" > /root/.pip/pip.conf && \
    echo "index-url = https://pypi.mirrors.ustc.edu.cn/simple" >>/root/.pip/pip.conf && \
    echo "trusted-host = pypi.mirrors.ustc.edu.cn" >>/root/.pip/pip.conf && \
    echo "timeout = 120" >>/root/.pip/pip.conf && \
    python3 -m pip install --upgrade pip && \
    ls -lh ascend/ && groupadd HwHiAiUser && \
    useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser


FROM base as dev310

ARG cann_ver="6.0.RC1"
ARG driver_ver="6.0.rc1"

RUN if [ "$(arch)" = "aarch64" ];then driver_tag=3000;else driver_tag=3010; fi && \
    bash ascend/A300-${driver_tag}-npu-driver_${driver_ver}_linux-$(arch).run --quiet --docker && \
    cp -af /usr/local/Ascend/driver/lib64 /root/ && \
    bash ascend/A300-${driver_tag}-npu-driver_${driver_ver}_linux-$(arch).run --quiet --devel && \
    cp -af /root/lib64 /usr/local/Ascend/driver/ && \
    rm -rf /root/lib64 /usr/local/Ascend/develop && \
    bash ascend/Ascend-cann-toolkit_${cann_ver}_linux-$(arch).run --quiet --full && \
    ls -lh /usr/local/Ascend/* /usr/local/sbin/npu-smi


FROM base as run310

ARG cann_ver="6.0.RC1"
ARG driver_ver="6.0.rc1"

RUN if [ "$(arch)" = "aarch64" ];then driver_tag=3000;else driver_tag=3010; fi && \
    bash ascend/A300-${driver_tag}-npu-driver_${driver_ver}_linux-$(arch).run --quiet --docker && \
    bash ascend/Ascend-cann-nnae_${cann_ver}_linux-$(arch).run --quiet --install && \
    ls -lh /usr/local/Ascend/*

FROM base as dev310p

ARG cann_ver="6.0.RC1"
ARG driver_ver="6.0.rc1"

RUN bash ascend/Ascend-hdk-310p-npu-driver_${driver_ver}_linux-$(arch).run --quiet --docker && \
    cp -af /usr/local/Ascend/driver/lib64 /root/ && \
    bash ascend/Ascend-hdk-310p-npu-driver_${driver_ver}_linux-$(arch).run --quiet --devel && \
    cp -af /root/lib64 /usr/local/Ascend/driver/ && \
    rm -rf /root/lib64 /usr/local/Ascend/develop && \
    bash ascend/Ascend-cann-toolkit_${cann_ver}_linux-$(arch).run --quiet --full && \
    ls -lh /usr/local/Ascend/* /usr/local/sbin/npu-smi

FROM base as run310p

ARG cann_ver="6.0.RC1"
ARG driver_ver="6.0.rc1"

RUN bash ascend/Ascend-hdk-310p-npu-driver_${driver_ver}_linux-$(arch).run --quiet --docker && \
    bash ascend/Ascend-cann-nnae_${cann_ver}_linux-$(arch).run --quiet --install && \
    ls -lh /usr/local/Ascend/*

FROM ubuntu:20.04

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && \
    groupadd HwHiAiUser && \
    useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser

COPY --from=dev310 /usr/local/Ascend /usr/local/Ascend_dev310
COPY --from=dev310 /usr/local/sbin/npu-smi /usr/local/sbin/npu-smi310
COPY --from=run310 /usr/local/Ascend /usr/local/Ascend_run310
COPY --from=dev310p /usr/local/Ascend /usr/local/Ascend_dev310p
COPY --from=dev310p /usr/local/sbin/npu-smi /usr/local/sbin/npu-smi310p
COPY --from=run310p /usr/local/Ascend /usr/local/Ascend_run310p


================================================
FILE: docker/Dockerfile.ascend.develop.openeuler
================================================
FROM modelbox/c83-base:latest
FROM openeuler/openeuler:20.03-lts-sp3

ARG dtype

COPY release /opt/release
COPY --from=0 /usr/local/Ascend_dev${dtype} /usr/local/Ascend
COPY --from=0 /usr/local/sbin/npu-smi${dtype} /usr/local/sbin/npu-smi
ADD *.tar.gz /usr/local/

ARG ASCEND_PATH=/usr/local/Ascend
ENV LOCAL_ASCEND=/usr/local/Ascend
ENV ASCEND_AICPU_PATH=${ASCEND_PATH}/ascend-toolkit/latest
ENV ASCEND_OPP_PATH=${ASCEND_PATH}/ascend-toolkit/latest/opp
ENV TOOLCHAIN_HOME=${ASCEND_PATH}/ascend-toolkit/latest/toolkit
ENV TBE_IMPL_PATH=${ASCEND_PATH}/ascend-toolkit/latest/opp/op_impl/build-in/ai_core/tbe
ENV MINDSPORE_PATH=/usr/local/lib/python3.7/site-packages/mindspore
ENV DDK_PATH=${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib
ENV DRIVER_PATH=${ASCEND_PATH}/driver

ENV PATH=\
${ASCEND_PATH}/ascend-toolkit/latest/atc/bin:\
${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/bin:\
${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/ccec_compiler/bin:\
${ASCEND_PATH}/ascend-toolkit/latest/atc/ccec_compiler/bin${PATH:+:${PATH}}

ENV PYTHONPATH=\
${ASCEND_PATH}/ascend-toolkit/latest/atc/python/site-packages:\
${ASCEND_PATH}/ascend-toolkit/latest/toolkit/python/site-packages:\
${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/python/site-packages:\
${ASCEND_PATH}/ascend-toolkit/latest/opp/op_impl/build-in/ai_core/tbe:\
${ASCEND_PATH}/ascend-toolkit/latest/pyACL/python/site-packages/acl${PYTHONPATH:+:${PYTHONPATH}}

ENV LD_LIBRARY_PATH=${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

WORKDIR /root

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && \
    dnf update -y --nogpgcheck && \
    dnf install -y --nogpgcheck vim gcc gcc-c++ make cmake libnsl perf doxygen gcc-gfortran pciutils alsa-lib gdb clang gtk3-devel \
        zlib-devel curl-devel bzip2-devel rpm-build sqlite-devel libffi-devel openssl-devel xz-devel git passwd systemd \
        krb5-devel expat-devel boost-devel ncurses-devel libxml2-devel libssh2-devel python3-devel python3-perf bc nc \
        readline-devel nss-devel fuse-devel gdbm-devel glibc-devel glibc-debuginfo gnutls-devel net-tools libatomic \
        xauth tk-devel lapack-devel graphviz-devel mesa-libGL-devel openblas-devel protobuf-c-devel openssh-server && \
    ln -sf pip3.7 /usr/bin/pip && ln -sf python3.7 /usr/bin/python && \
    ln -sf opencv4/opencv2 /usr/local/include/opencv2 && \
    dnf clean all && rm -rf /var/cache/dnf/*

RUN mkdir -p /root/.pip && \
    echo "[global]" > /root/.pip/pip.conf && \
    echo "index-url = https://pypi.python.org/simple" >>/root/.pip/pip.conf && \
    echo "trusted-host = pypi.python.org" >>/root/.pip/pip.conf && \
    echo "timeout = 120" >>/root/.pip/pip.conf && \
    groupadd HwHiAiUser && \
    useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && \
    python3 -m pip install --upgrade pip && \
    python3 -m pip install --no-cache-dir wheel numpy attrs psutil decorator protobuf scipy sympy cffi grpcio grpcio-tools requests pillow pyyaml opencv-python==4.5.5.64 && \
    python3 -m pip install --no-cache-dir https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.9.0/MindSpore/ascend/$(arch)/mindspore_ascend-1.9.0-cp37-cp37m-linux_$(arch).whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/lib64/topi-0.4.0-py3-none-any.whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/lib64/te-0.4.0-py3-none-any.whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/lib64/hccl-0.1.0-py3-none-any.whl && \
    echo "${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/lib64" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64/driver" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64/common" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64" >>/etc/ld.so.conf.d/ascend.conf && \
    sed -i '/include/i\/usr/local/lib64' /etc/ld.so.conf && \
    sed -i '/include/i\/usr/local/lib' /etc/ld.so.conf

RUN if [ "$(arch)" = "aarch64" ];then node_arch="arm64";else node_arch="x64";fi && \
    curl https://nodejs.org/dist/v16.13.2/node-v16.13.2-linux-${node_arch}.tar.xz|tar -xJ && \
    cp -af node-v16.13.2-linux-${node_arch}/* /usr/local/ && \
    npm install -g npm@latest && npm -v && node -v && \
    npm install -g @angular/cli && \
    npm cache clean --force && rm -rf /root/* && \
    python3 -m pip install --no-cache-dir /opt/release/python/modelbox-*.whl && \
    rpm -ivh /opt/release/*.rpm && \
    usermod -G HwHiAiUser modelbox

RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; \
    do [ $i = systemd-tmpfiles-setup.service ] || rm -f $i; done); \
    rm -f /lib/systemd/system/multi-user.target.wants/*; \
    rm -f /etc/systemd/system/*.wants/*; \
    rm -f /lib/systemd/system/local-fs.target.wants/*; \
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
    rm -f /lib/systemd/system/basic.target.wants/*; \
    rm -f /lib/systemd/system/anaconda.target.wants/*; \
    sed -i 's/^SystemMaxUse=.*/SystemMaxUse=16M/g' /etc/systemd/journald.conf && \
    echo 'export TMOUT=0' >> /etc/bashrc && \
    echo 'export HISTSIZE=1000' >> /etc/bashrc && \
    echo '[ -n "${SSH_TTY}" ] && export $(cat /proc/1/environ|tr "\\0" "\\n"|xargs)' >> /etc/bashrc && \
    echo 'export PS1="\[\e[35;1m\][\u@\h \W]$ \[\e[0m\]"' >> /etc/bashrc && \
    echo "ldconfig &>/dev/null" >> /etc/bashrc && systemctl enable sshd

VOLUME ["/sys/fs/cgroup", "/tmp", "/run", "/run/lock"]
STOPSIGNAL SIGRTMIN+3

CMD ["/sbin/init", "--log-target=journal"]


================================================
FILE: docker/Dockerfile.ascend.develop.ubuntu
================================================
FROM modelbox/c83-base:latest
FROM ubuntu:20.04

ARG dtype

COPY release /opt/release
COPY --from=0 /usr/local/Ascend_dev${dtype} /usr/local/Ascend
COPY --from=0 /usr/local/sbin/npu-smi${dtype} /usr/local/sbin/npu-smi
ADD *.tar.gz /usr/local/

ARG ASCEND_PATH=/usr/local/Ascend
ENV LOCAL_ASCEND=/usr/local/Ascend
ENV ASCEND_AICPU_PATH=${ASCEND_PATH}/ascend-toolkit/latest
ENV ASCEND_OPP_PATH=${ASCEND_PATH}/ascend-toolkit/latest/opp
ENV TOOLCHAIN_HOME=${ASCEND_PATH}/ascend-toolkit/latest/toolkit
ENV TBE_IMPL_PATH=${ASCEND_PATH}/ascend-toolkit/latest/opp/op_impl/build-in/ai_core/tbe
ENV MINDSPORE_PATH=/usr/local/lib/python3.8/dist-packages/mindspore
ENV DDK_PATH=${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib
ENV DRIVER_PATH=${ASCEND_PATH}/driver

ENV PATH=\
${ASCEND_PATH}/ascend-toolkit/latest/atc/bin:\
${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/bin:\
${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/ccec_compiler/bin:\
${ASCEND_PATH}/ascend-toolkit/latest/atc/ccec_compiler/bin${PATH:+:${PATH}}

ENV PYTHONPATH=\
${ASCEND_PATH}/ascend-toolkit/latest/atc/python/site-packages:\
${ASCEND_PATH}/ascend-toolkit/latest/toolkit/python/site-packages:\
${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/python/site-packages:\
${ASCEND_PATH}/ascend-toolkit/latest/opp/op_impl/build-in/ai_core/tbe:\
${ASCEND_PATH}/ascend-toolkit/latest/pyACL/python/site-packages/acl${PYTHONPATH:+:${PYTHONPATH}}

ENV LD_LIBRARY_PATH=${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

WORKDIR /root

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && \
    echo "deb http://archive.ubuntu.com/ubuntu/ bionic-proposed main restricted universe multiverse" >>/etc/apt/sources.list && \
    if [ "$(arch)" = "aarch64" ];then sed -i '/proposed/d' /etc/apt/sources.list;fi && \
    export DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=low TZ=Asia/Shanghai && \
    apt update && \
    apt install -y python3.8-dev python3-pip python3-apt python3-setuptools apt-utils && \
    apt install -y dbus systemd systemd-cron iproute2 gnupg2 curl libcurl4-openssl-dev ca-certificates \
        build-essential unzip ffmpeg sudo bash vim gdb git doxygen autoconf cmake gettext openssh-server \
        pkg-config kmod net-tools pciutils libssl-dev libcpprest-dev libswscale-dev libavformat-dev \
        graphviz libgraphviz-dev libfuse-dev libprotobuf-c-dev protobuf-c-compiler duktape-dev \
        libopenblas-dev netcat clang clang-tidy-10 libgoogle-glog-dev libtbb-dev && \
    update-ca-certificates && apt upgrade -y && \
    ln -sf clang-tidy-10 /usr/bin/clang-tidy && \
    ln -sf run-clang-tidy-10 /usr/bin/run-clang-tidy && \
    ln -sf python3.8 /usr/bin/python3 && \
    ln -sf opencv4/opencv2 /usr/local/include/opencv2 && \
    rm -rf /var/lib/apt/lists/*

RUN mkdir -p /root/.pip && \
    echo "[global]" > /root/.pip/pip.conf && \
    echo "index-url = https://pypi.python.org/simple" >>/root/.pip/pip.conf && \
    echo "trusted-host = pypi.python.org" >>/root/.pip/pip.conf && \
    echo "timeout = 120" >>/root/.pip/pip.conf && \
    groupadd HwHiAiUser && \
    useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && \
    python3 -m pip install --upgrade pip && \
    python3 -m pip install --no-cache-dir wheel psutil numpy attrs psutil decorator protobuf scipy sympy cffi grpcio grpcio-tools requests pillow pyyaml opencv-python==4.5.5.64 && \
    python3 -m pip install --no-cache-dir https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.9.0/MindSpore/ascend/$(arch)/mindspore_ascend-1.9.0-cp38-cp38-linux_$(arch).whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/lib64/topi-0.4.0-py3-none-any.whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/lib64/te-0.4.0-py3-none-any.whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/lib64/hccl-0.1.0-py3-none-any.whl && \
    echo "${ASCEND_PATH}/ascend-toolkit/latest/fwkacllib/lib64" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64/driver" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64/common" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64" >>/etc/ld.so.conf.d/ascend.conf && \
    sed -i '/include/i\/usr/local/lib' /etc/ld.so.conf

RUN if [ "$(arch)" = "aarch64" ];then node_arch="arm64";else node_arch="x64";fi && \
    curl https://nodejs.org/dist/v16.13.2/node-v16.13.2-linux-${node_arch}.tar.xz|tar -xJ && \
    cp -af node-v16.13.2-linux-${node_arch}/* /usr/local/ && \
    npm install -g npm@latest && npm -v && node -v && \
    npm install -g @angular/cli && \
    npm cache clean --force && rm -rf /root/* && \
    python3 -m pip install --no-cache-dir /opt/release/python/modelbox-*.whl && \
    dpkg -i /opt/release/*.deb && \
    usermod -G HwHiAiUser modelbox

RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; \
    do [ $i = systemd-tmpfiles-setup.service ] || rm -f $i; done); \
    rm -f /lib/systemd/system/multi-user.target.wants/*; \
    rm -f /etc/systemd/system/*.wants/*; \
    rm -f /lib/systemd/system/local-fs.target.wants/*; \
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
    rm -f /lib/systemd/system/basic.target.wants/*; \
    rm -f /lib/systemd/system/anaconda.target.wants/*; \
    sed -i "32aPermitRootLogin yes" /etc/ssh/sshd_config && \
    sed -i 's/^SystemMaxUse=.*/SystemMaxUse=16M/g' /etc/systemd/journald.conf && \
    echo 'export TMOUT=0' >> /etc/bash.bashrc && \
    echo 'export HISTSIZE=1000' >> /etc/bash.bashrc && \
    echo '[ -n "${SSH_TTY}" ] && export $(cat /proc/1/environ|tr "\\0" "\\n"|xargs)' >> /etc/bash.bashrc && \
    echo 'export PS1="\[\e[35;1m\][\u@\h \W]$ \[\e[0m\]"' >> ~/.bashrc && \
    echo "ldconfig &>/dev/null" >> /etc/bash.bashrc && systemctl enable ssh

VOLUME ["/sys/fs/cgroup", "/tmp", "/run", "/run/lock"]
STOPSIGNAL SIGRTMIN+3

CMD ["/sbin/init", "--log-target=journal"]


================================================
FILE: docker/Dockerfile.ascend.runtime.openeuler
================================================
FROM modelbox/c83-base:latest
FROM openeuler/openeuler:20.03-lts-sp3

ARG dtype

COPY release /opt/release
COPY --from=0 /usr/local/Ascend_run${dtype} /usr/local/Ascend
COPY --from=0 /usr/local/sbin/npu-smi${dtype} /usr/local/sbin/npu-smi
ADD *.tar.gz /usr/local/

ARG ASCEND_PATH=/usr/local/Ascend
ENV LOCAL_ASCEND=/usr/local/Ascend
ENV ASCEND_AICPU_PATH=${ASCEND_PATH}/nnae/latest
ENV ASCEND_OPP_PATH=${ASCEND_PATH}/nnae/latest/opp
ENV DDK_PATH=${ASCEND_PATH}/nnae/latest/fwkacllib
ENV DRIVER_PATH=${ASCEND_PATH}/driver

ENV PYTHONPATH=${ASCEND_PATH}/nnae/latest/pyACL/python/site-packages/acl${PYTHONPATH:+:${PYTHONPATH}}

ENV LD_LIBRARY_PATH=${ASCEND_PATH}/nnae/latest/fwkacllib/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

WORKDIR /root

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && \
    dnf update -y --nogpgcheck && \
    dnf install -y --nogpgcheck curl boost libnsl libssh2 libatomic mesa-libGL graphviz protobuf-c \
        systemd openblas gcc python3-devel lapack python3-perf fuse libxml2 openssl bc && \
    ln -sf pip3.7 /usr/bin/pip && ln -sf python3.7 /usr/bin/python3 && \
    dnf clean all && rm -rf /var/cache/dnf/*

RUN mkdir -p /root/.pip && \
    echo "[global]" > /root/.pip/pip.conf && \
    echo "index-url = https://pypi.python.org/simple" >>/root/.pip/pip.conf && \
    echo "trusted-host = pypi.python.org" >>/root/.pip/pip.conf && \
    echo "timeout = 120" >>/root/.pip/pip.conf && \
    groupadd HwHiAiUser && \
    useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && \
    python3 -m pip install --upgrade pip && \
    python3 -m pip install --no-cache-dir numpy decorator sympy cffi pyyaml pathlib2 grpcio grpcio-tools protobuf scipy requests pillow opencv-python==4.5.5.64 && \
    python3 -m pip install --no-cache-dir https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.9.0/MindSpore/ascend/$(arch)/mindspore_ascend-1.9.0-cp37-cp37m-linux_$(arch).whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/nnae/latest/fwkacllib/lib64/topi-0.4.0-py3-none-any.whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/nnae/latest/fwkacllib/lib64/te-0.4.0-py3-none-any.whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/nnae/latest/fwkacllib/lib64/hccl-0.1.0-py3-none-any.whl && \
    echo "${ASCEND_PATH}/nnae/latest/fwkacllib/lib64" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64/driver" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64/common" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64" >>/etc/ld.so.conf.d/ascend.conf && \
    sed -i '/include/i\/usr/local/lib64' /etc/ld.so.conf && \
    sed -i '/include/i\/usr/local/lib' /etc/ld.so.conf && \
    find /usr/local -name "*.a"|xargs rm -f

RUN python3 -m pip install --no-cache-dir /opt/release/python/modelbox-*.whl && \
    rpm -ivh /opt/release/*.rpm && \
    usermod -G HwHiAiUser modelbox && \
    (cd /lib/systemd/system/sysinit.target.wants/; for i in *; \
    do [ $i = systemd-tmpfiles-setup.service ] || rm -f $i; done); \
    rm -f /lib/systemd/system/multi-user.target.wants/*; \
    rm -f /etc/systemd/system/*.wants/*; \
    rm -f /lib/systemd/system/local-fs.target.wants/*; \
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
    rm -f /lib/systemd/system/basic.target.wants/*; \
    rm -f /lib/systemd/system/anaconda.target.wants/*; \
    sed -i 's/^SystemMaxUse=.*/SystemMaxUse=16M/g' /etc/systemd/journald.conf && \
    echo "ldconfig &>/dev/null" >> /etc/bashrc && systemctl enable modelbox

VOLUME ["/sys/fs/cgroup", "/tmp", "/run", "/run/lock"]
STOPSIGNAL SIGRTMIN+3

CMD ["/usr/sbin/init", "--log-target=journal"]


================================================
FILE: docker/Dockerfile.ascend.runtime.ubuntu
================================================
FROM modelbox/c83-base:latest
FROM ubuntu:20.04

ARG dtype

COPY release /opt/release
COPY --from=0 /usr/local/Ascend_run${dtype} /usr/local/Ascend
COPY --from=0 /usr/local/sbin/npu-smi${dtype} /usr/local/sbin/npu-smi
ADD *.tar.gz /usr/local/

ARG ASCEND_PATH=/usr/local/Ascend
ENV LOCAL_ASCEND=/usr/local/Ascend
ENV ASCEND_AICPU_PATH=${ASCEND_PATH}/nnae/latest
ENV ASCEND_OPP_PATH=${ASCEND_PATH}/nnae/latest/opp
ENV DDK_PATH=${ASCEND_PATH}/nnae/latest/fwkacllib
ENV DRIVER_PATH=${ASCEND_PATH}/driver

ENV PYTHONPATH=${ASCEND_PATH}/nnae/latest/pyACL/python/site-packages/acl${PYTHONPATH:+:${PYTHONPATH}}

ENV LD_LIBRARY_PATH=${ASCEND_PATH}/nnae/latest/fwkacllib/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

WORKDIR /root

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && \
    echo "deb http://archive.ubuntu.com/ubuntu/ bionic-proposed main restricted universe multiverse" >>/etc/apt/sources.list && \
    if [ "$(arch)" = "aarch64" ];then sed -i '/proposed/d' /etc/apt/sources.list;fi && \
    export DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=low TZ=Asia/Shanghai && \
    apt update && \
    apt install -y python3.8-dev python3-pip python3-apt python3-setuptools && \
    apt install -y vim gcc dbus systemd systemd-cron iproute2 gnupg2 libfuse2 libgtk-3-0 \
        build-essential bash unzip ffmpeg curl pkg-config ca-certificates libduktape205 \
        libssl1.1 libcpprest graphviz libprotobuf-c1 libopenblas-base libgoogle-glog0v5 libtbb2 && \
    update-ca-certificates && apt upgrade -y && \
    ln -sf python3.8 /usr/bin/python3 && \
    rm -rf /var/lib/apt/lists/*

RUN mkdir -p /root/.pip && \
    echo "[global]" > /root/.pip/pip.conf && \
    echo "index-url = https://pypi.python.org/simple" >>/root/.pip/pip.conf && \
    echo "trusted-host = pypi.python.org" >>/root/.pip/pip.conf && \
    echo "timeout = 120" >>/root/.pip/pip.conf && \
    if [ "$(arch)" = "aarch64" ];then sed -i 's@python.org@douban.com@g' /root/.pip/pip.conf;fi && \
    groupadd HwHiAiUser && \
    useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && \
    python3 -m pip install --upgrade pip && \
    python3 -m pip install --no-cache-dir numpy decorator psutil sympy cffi pyyaml pathlib2 grpcio grpcio-tools protobuf scipy requests pillow opencv-python==4.5.5.64 && \
    python3 -m pip install --no-cache-dir https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.9.0/MindSpore/ascend/$(arch)/mindspore_ascend-1.9.0-cp38-cp38-linux_$(arch).whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/nnae/latest/fwkacllib/lib64/topi-0.4.0-py3-none-any.whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/nnae/latest/fwkacllib/lib64/te-0.4.0-py3-none-any.whl && \
    python3 -m pip install --no-cache-dir ${ASCEND_PATH}/nnae/latest/fwkacllib/lib64/hccl-0.1.0-py3-none-any.whl && \
    echo "${ASCEND_PATH}/nnae/latest/fwkacllib/lib64" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64/driver" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64/common" >>/etc/ld.so.conf.d/ascend.conf && \
    echo "${ASCEND_PATH}/driver/lib64" >>/etc/ld.so.conf.d/ascend.conf && \
    sed -i '/include/i\/usr/local/lib' /etc/ld.so.conf && \
    find /usr/local -name "*.a"|xargs rm -f

RUN python3 -m pip install --no-cache-dir /opt/release/python/modelbox-*.whl && \
    dpkg -i /opt/release/*.deb && \
    usermod -G HwHiAiUser modelbox && \
    (cd /lib/systemd/system/sysinit.target.wants/; for i in *; \
    do [ $i = systemd-tmpfiles-setup.service ] || rm -f $i; done); \
    rm -f /lib/systemd/system/multi-user.target.wants/*; \
    rm -f /etc/systemd/system/*.wants/*; \
    rm -f /lib/systemd/system/local-fs.target.wants/*; \
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
    rm -f /lib/systemd/system/basic.target.wants/*; \
    rm -f /lib/systemd/system/anaconda.target.wants/*; \
    sed -i 's/^SystemMaxUse=.*/SystemMaxUse=16M/g' /etc/systemd/journald.conf && \
    echo "ldconfig &>/dev/null" >> /etc/bash.bashrc && systemctl enable modelbox

VOLUME ["/sys/fs/cgroup", "/tmp", "/run", "/run/lock"]
STOPSIGNAL SIGRTMIN+3

CMD ["/sbin/init", "--log-target=journal"]


================================================
FILE: docker/Dockerfile.cuda.develop.openeuler
================================================
ARG BASE_IMAGE=openeuler/openeuler:20.03-lts-sp3
FROM ${BASE_IMAGE} as base

COPY release /opt/release
COPY docker/repo/*.repo /etc/yum.repos.d/
ADD *.tar.gz /usr/local/

ARG CUDA_VER
ARG CUDA_VERSION
ARG TF_VERSION
ARG TRT_VERSION
ARG TORCH_VERSION
ARG CUDA_CUDART_VERSION
ARG NVIDIA_CUDA_VERSION
ARG NVIDIA_REQUIRE_CUDA

WORKDIR /root

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && \
    dnf update -y --nogpgcheck && \
    dnf install -y --nogpgcheck \
        vim gcc gcc-c++ make cmake libnsl python3-perf doxygen pciutils gdb net-tools zlib-devel gnutls-devel nc gtk3-devel \
        rpm-build gcc-gfortran alsa-lib nss-devel fuse-devel gdbm-devel krb5-devel expat-devel curl-devel bzip2-devel bc \
        boost-devel ncurses-devel libxml2-devel libssh2-devel openssh-server python3-devel glibc-debuginfo libatomic systemd \
        git clang xauth graphviz-devel sqlite-devel openssl-devel readline-devel mesa-libGL-devel protobuf-c-devel passwd && \
    ln -sf pip3.7 /usr/bin/pip && ln -sf python3.7 /usr/bin/python3 && \
    ln -sf opencv4/opencv2 /usr/local/include/opencv2 && \
    dnf clean all && rm -rf /var/cache/dnf/*

RUN mkdir -p /root/.pip && \
    echo "[global]" > /root/.pip/pip.conf && \
    echo "index-url = https://pypi.python.org/simple" >>/root/.pip/pip.conf && \
    echo "trusted-host = pypi.python.org" >>/root/.pip/pip.conf && \
    echo "timeout = 120" >>/root/.pip/pip.conf && \
    python3 -m pip install --upgrade pip && \
    python3 -m pip install --no-cache-dir psutil pillow wheel numpy pyyaml requests opencv-python==4.5.5.64 && \
    NVIDIA_GPGKEY_SUM=d1be581509378368edeec8c1eb2958702feedf3bc3d17011adbf24efacce4ab5 && \
    curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/
Download .txt
gitextract_q1lpf8mw/

├── .clang-format
├── .clang-tidy
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── feature.md
│   │   └── issue.md
│   └── workflows/
│       ├── gitee-mirror.yml
│       ├── manual-build-with-image.yml
│       ├── manual-build-with-rockchip-images.yml
│       ├── merge-request-ascend.yml
│       ├── merge-request-cuda.yml
│       ├── merge-request-rockchip.yml
│       ├── publish-modelbox-images.yml
│       ├── unit-test-daily-on-device.yml
│       └── unit-test-pull-requests-on-device.yml
├── .gitignore
├── CMake/
│   ├── Clang-tidy.cmake
│   ├── FindACL.cmake
│   ├── FindCPPREST.cmake
│   ├── FindCUDACUDA.cmake
│   ├── FindDIS.cmake
│   ├── FindDLENGINE.cmake
│   ├── FindDSMI.cmake
│   ├── FindDUKTAPE.cmake
│   ├── FindFFMPEG.cmake
│   ├── FindFUSE.cmake
│   ├── FindMINDSPORE_LITE.cmake
│   ├── FindNVCUVID.cmake
│   ├── FindOBS.cmake
│   ├── FindROCKCHIP.cmake
│   ├── FindTENSORFLOW.cmake
│   ├── FindTENSORRT.cmake
│   ├── FindVCN.cmake
│   ├── Function.cmake
│   ├── JavaJDK.cmake
│   ├── Options.cmake
│   ├── ProjectEnvVars.cmake
│   ├── SecureCompilerOption.cmake
│   └── clang-tidy-warp
├── CMakeLists.txt
├── LICENSE
├── NOTICE
├── README.md
├── README_en.md
├── Third_Party_Open_Source_Software_Notice
├── docker/
│   ├── Dockerfile.ascend.base
│   ├── Dockerfile.ascend.develop.openeuler
│   ├── Dockerfile.ascend.develop.ubuntu
│   ├── Dockerfile.ascend.runtime.openeuler
│   ├── Dockerfile.ascend.runtime.ubuntu
│   ├── Dockerfile.cuda.develop.openeuler
│   ├── Dockerfile.cuda.develop.ubuntu
│   ├── Dockerfile.cuda.runtime.openeuler
│   ├── Dockerfile.cuda.runtime.ubuntu
│   ├── Dockerfile.rknnrt.build.ubuntu
│   ├── README.md
│   ├── artifact_check.sh
│   ├── prepare_for_dev.sh
│   ├── prepare_for_rockchip.sh
│   ├── prepare_for_run.sh
│   └── repo/
│       ├── cuda.repo
│       └── nvidia-ml.repo
├── docs/
│   ├── CMakeLists.txt
│   ├── Design.md
│   ├── Doxyfile.in
│   ├── Goal.md
│   └── assets/
│       ├── architecture.vsdx
│       └── modelbox.vsdx
├── examples/
│   ├── CMakeLists.txt
│   ├── bin/
│   │   └── template
│   ├── flowunit/
│   │   ├── CMakeLists.txt
│   │   ├── c++/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── example.cc
│   │   │   ├── example.h
│   │   │   └── example.toml
│   │   ├── infer/
│   │   │   ├── CMakeLists.txt
│   │   │   └── example.toml
│   │   ├── plugin/
│   │   │   ├── data_source_parser/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── driver_desc.cc
│   │   │   │   ├── example.cc
│   │   │   │   └── example.h
│   │   │   └── output_broker/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── driver_desc.cc
│   │   │       ├── example.cc
│   │   │       └── example.h
│   │   ├── python/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── example.py
│   │   │   └── example.toml
│   │   └── yolo/
│   │       ├── CMakeLists.txt
│   │       └── example.toml
│   ├── misc/
│   │   └── modelbox-template-cmd.json.in
│   ├── project/
│   │   ├── base/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── package/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── debian/
│   │   │   │   │   ├── postinst.in
│   │   │   │   │   └── postrm.in
│   │   │   │   └── rpm/
│   │   │   │       ├── postinscript.in
│   │   │   │       └── postunscript.in
│   │   │   ├── readme.txt
│   │   │   ├── src/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── flowunit/
│   │   │   │   │   └── CMakeLists.txt
│   │   │   │   ├── graph/
│   │   │   │   │   └── CMakeLists.txt
│   │   │   │   └── service-plugin/
│   │   │   │       └── CMakeLists.txt
│   │   │   ├── test/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── flowunit/
│   │   │   │   │   └── CMakeLists.txt
│   │   │   │   ├── mock/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── mock_modelbox.cc
│   │   │   │   │   └── mock_modelbox.h
│   │   │   │   └── test_config.h.in
│   │   │   └── thirdparty/
│   │   │       ├── CMake/
│   │   │       │   ├── local-package.in
│   │   │       │   └── pre-download.in
│   │   │       └── CMakeLists.txt
│   │   ├── car_detection/
│   │   │   ├── desc.toml
│   │   │   └── setup.sh
│   │   ├── emotion_detection/
│   │   │   ├── desc.toml
│   │   │   ├── download_emotion_files.sh
│   │   │   └── setup.sh
│   │   ├── empty/
│   │   │   ├── desc.toml
│   │   │   └── src/
│   │   │       └── graph/
│   │   │           └── empty.toml
│   │   ├── hello_world/
│   │   │   ├── desc.toml
│   │   │   └── setup.sh
│   │   ├── mnist/
│   │   │   ├── desc.toml
│   │   │   └── setup.sh
│   │   ├── mnist-mindspore/
│   │   │   ├── desc.toml
│   │   │   ├── setup.sh
│   │   │   └── src/
│   │   │       ├── flowunit/
│   │   │       │   ├── mnist_infer/
│   │   │       │   │   ├── CMakeLists.txt
│   │   │       │   │   ├── mnist_infer.toml
│   │   │       │   │   └── train.sh
│   │   │       │   ├── mnist_preprocess/
│   │   │       │   │   ├── mnist_preprocess.py
│   │   │       │   │   └── mnist_preprocess.toml
│   │   │       │   └── mnist_response/
│   │   │       │       ├── mnist_response.py
│   │   │       │       └── mnist_response.toml
│   │   │       └── graph/
│   │   │           └── mnist.toml
│   │   └── resize/
│   │       ├── desc.toml
│   │       ├── src/
│   │       │   ├── flowunit/
│   │       │   │   └── resize_flowunit/
│   │       │   │       ├── CMakeLists.txt
│   │       │   │       ├── resize_flowunit.cc
│   │       │   │       └── resize_flowunit.h
│   │       │   └── graph/
│   │       │       └── resize.toml
│   │       └── test/
│   │           └── flowunit/
│   │               └── resize_flowuint_test.cc
│   └── service-plugin/
│       ├── CMakeLists.txt
│       ├── example.cc
│       └── example.h
├── package/
│   ├── CMakeLists.txt
│   ├── debian/
│   │   ├── modelbox-server/
│   │   │   ├── conffiles.in
│   │   │   ├── postinst.in
│   │   │   └── postrm.in
│   │   └── postinst
│   └── rpm/
│       ├── demo/
│       │   └── postscript
│       ├── modelbox-server/
│       │   ├── conffiles.in
│       │   ├── postscript.in
│       │   └── postunscript.in
│       └── postscript
├── src/
│   ├── CMakeLists.txt
│   ├── demo/
│   │   ├── CMakeLists.txt
│   │   ├── car_detection/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── flowunit/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── car_detect/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── car_detect.toml
│   │   │   │   │   └── yolox_nano_jit_trace_288x512.pt
│   │   │   │   └── yolox_post/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── yolox_post.py
│   │   │   │       ├── yolox_post.toml
│   │   │   │       └── yolox_utils.py
│   │   │   └── graph/
│   │   │       ├── CMakeLists.txt
│   │   │       └── car_detection.toml.in
│   │   ├── emotion_detection/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── flowunit/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── collapse_emotion/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── collapse_emotion.py
│   │   │   │   │   └── collapse_emotion.toml
│   │   │   │   ├── custom_resize/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── custom_resize.py
│   │   │   │   │   └── custom_resize.toml
│   │   │   │   ├── draw_emotion/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── draw_emotion.py
│   │   │   │   │   └── draw_emotion.toml
│   │   │   │   ├── emotion_infer/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── emotion_infer.toml
│   │   │   │   ├── expand_box/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── expand_box.py
│   │   │   │   │   └── expand_box.toml
│   │   │   │   ├── face_detect/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── face_detect.toml
│   │   │   │   └── face_post/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── face_post.py
│   │   │   │       ├── face_post.toml
│   │   │   │       └── face_post_utils.py
│   │   │   └── graph/
│   │   │       ├── CMakeLists.txt
│   │   │       └── emotion_detection.toml.in
│   │   ├── hello_world/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── flowunit/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── hello_world/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── hello_world.py
│   │   │   │       └── hello_world.toml
│   │   │   └── graph/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── hello_world.toml.in
│   │   │       └── test_hello_world.py
│   │   └── mnist/
│   │       ├── CMakeLists.txt
│   │       ├── flowunit/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── mnist_infer/
│   │       │   │   ├── CMakeLists.txt
│   │       │   │   ├── mnist_infer.toml
│   │       │   │   ├── mnist_model.pb
│   │       │   │   ├── train.py
│   │       │   │   └── train.sh
│   │       │   ├── mnist_preprocess/
│   │       │   │   ├── CMakeLists.txt
│   │       │   │   ├── mnist_preprocess.py
│   │       │   │   └── mnist_preprocess.toml
│   │       │   └── mnist_response/
│   │       │       ├── CMakeLists.txt
│   │       │       ├── mnist_response.py
│   │       │       └── mnist_response.toml
│   │       └── graph/
│   │           ├── CMakeLists.txt
│   │           ├── mnist.toml.in
│   │           └── test_mnist.py
│   ├── develop/
│   │   └── CMakeLists.txt
│   ├── drivers/
│   │   ├── CMakeLists.txt
│   │   ├── common/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── devices/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── device_stream/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── device_stream.cc
│   │   │   │       └── device_stream.h
│   │   │   ├── flowunit/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── driver_util/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── driver_util.cc
│   │   │   │   │   └── driver_util.h
│   │   │   │   ├── hw_components/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── iam_auth/
│   │   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   │   ├── iam_api.cc
│   │   │   │   │   │   ├── iam_api.h
│   │   │   │   │   │   ├── iam_auth.cc
│   │   │   │   │   │   ├── iam_auth.h
│   │   │   │   │   │   ├── token_manager.cc
│   │   │   │   │   │   └── token_manager.h
│   │   │   │   │   └── obs_client/
│   │   │   │   │       ├── CMakeLists.txt
│   │   │   │   │       └── obs_client.cc
│   │   │   │   ├── image_process/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── image_process.cc
│   │   │   │   │   └── image_process.h
│   │   │   │   ├── image_rotate/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── image_rotate_base.cc
│   │   │   │   │   ├── image_rotate_base.h
│   │   │   │   │   ├── image_rotate_test_base.cc
│   │   │   │   │   └── image_rotate_test_base.h
│   │   │   │   ├── inference/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── model_decrypt.cc
│   │   │   │   │   ├── model_decrypt.h
│   │   │   │   │   ├── model_decrypt_header.h
│   │   │   │   │   └── model_decrypt_interface.h
│   │   │   │   ├── mean/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── mean_flowunit_base.cc
│   │   │   │   │   └── mean_flowunit_base.h
│   │   │   │   ├── normalize/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── normalize_flowunit_base.cc
│   │   │   │   │   └── normalize_flowunit_base.h
│   │   │   │   ├── safe_http/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── http_util.cc
│   │   │   │   │   └── http_util.h
│   │   │   │   ├── source_context/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── source_context.cc
│   │   │   │   │   └── source_context.h
│   │   │   │   └── video_decode/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── ffmpeg_color_converter.cc
│   │   │   │       ├── ffmpeg_color_converter.h
│   │   │   │       ├── video_decode_common.cc
│   │   │   │       └── video_decode_common.h
│   │   │   ├── libs/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── file_requester/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── file_requester.cc
│   │   │   │   ├── fuse/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── modelbox_fuse.cc
│   │   │   │   │   └── modelbox_fuse_test.cc
│   │   │   │   └── include/
│   │   │   │       └── modelbox/
│   │   │   │           └── drivers/
│   │   │   │               └── common/
│   │   │   │                   ├── file_requester.h
│   │   │   │                   └── modelbox_fuse.h
│   │   │   └── python/
│   │   │       ├── CMakeLists.txt
│   │   │       └── modelbox_api/
│   │   │           ├── CMakeLists.txt
│   │   │           ├── modelbox_api.cc
│   │   │           ├── modelbox_api.h
│   │   │           ├── python_common.cc
│   │   │           ├── python_common.h
│   │   │           ├── python_flow.cc
│   │   │           ├── python_flow.h
│   │   │           ├── python_flowunit.cc
│   │   │           ├── python_flowunit.h
│   │   │           ├── python_log.cc
│   │   │           ├── python_log.h
│   │   │           ├── python_model.cc
│   │   │           └── python_model.h
│   │   ├── devices/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── ascend/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── core/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── ascend_memory.cc
│   │   │   │   │   ├── device_ascend.cc
│   │   │   │   │   ├── driver_desc.cc
│   │   │   │   │   ├── include/
│   │   │   │   │   │   └── modelbox/
│   │   │   │   │   │       └── device/
│   │   │   │   │   │           └── ascend/
│   │   │   │   │   │               ├── ascend_memory.h
│   │   │   │   │   │               └── device_ascend.h
│   │   │   │   │   └── libmodelbox-device-ascend.pc.in
│   │   │   │   └── flowunit/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── crop/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── crop_flowunit.cc
│   │   │   │       │   ├── crop_flowunit.h
│   │   │   │       │   └── crop_flowunit_test.cc
│   │   │   │       ├── inference/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── atc_inference.cc
│   │   │   │       │   ├── atc_inference.h
│   │   │   │       │   ├── atc_inference_flowunit.cc
│   │   │   │       │   ├── atc_inference_flowunit.h
│   │   │   │       │   ├── atc_inference_flowunit_test.cc
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.ascend.inference.encrypt.in
│   │   │   │       │       └── modelbox.test.ascend.inference.in
│   │   │   │       ├── mindspore_lite_inference/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── mindspore_ascend_inference_flowunit.cc
│   │   │   │       │   ├── mindspore_ascend_inference_flowunit.h
│   │   │   │       │   ├── mindspore_lite_ascend_inference_flowunit_test.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.mindspore_lite.ascend.inference.encrypt.in
│   │   │   │       │       └── modelbox.test.mindspore_lite.ascend.inference.in
│   │   │   │       ├── padding/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── padding_flowunit.cc
│   │   │   │       │   ├── padding_flowunit.h
│   │   │   │       │   └── padding_flowunit_test.cc
│   │   │   │       ├── resize/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── resize_flowunit.cc
│   │   │   │       │   ├── resize_flowunit.h
│   │   │   │       │   └── resize_flowunit_test.cc
│   │   │   │       └── video_decoder/
│   │   │   │           ├── CMakeLists.txt
│   │   │   │           ├── ascend_video_decode.cc
│   │   │   │           ├── ascend_video_decode.h
│   │   │   │           ├── video_decoder_flowunit.cc
│   │   │   │           ├── video_decoder_flowunit.h
│   │   │   │           └── video_decoder_flowunit_test.cc
│   │   │   ├── cpu/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── core/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── cpu_memory.cc
│   │   │   │   │   ├── device_cpu.cc
│   │   │   │   │   ├── driver_desc.cc
│   │   │   │   │   ├── include/
│   │   │   │   │   │   └── modelbox/
│   │   │   │   │   │       └── device/
│   │   │   │   │   │           └── cpu/
│   │   │   │   │   │               ├── cpu_memory.h
│   │   │   │   │   │               └── device_cpu.h
│   │   │   │   │   └── libmodelbox-device-cpu.pc.in
│   │   │   │   └── flowunit/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── base64_decoder/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── base64_decoder.cc
│   │   │   │       │   ├── base64_decoder.h
│   │   │   │       │   └── base64_decoder_test.cc
│   │   │   │       ├── color_transpose/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── color_transpose_flowunit.cc
│   │   │   │       │   └── color_transpose_flowunit.h
│   │   │   │       ├── common_yolobox/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── modelbox.test.yolobox.in
│   │   │   │       │   ├── yolo_helper.cc
│   │   │   │       │   ├── yolo_helper.h
│   │   │   │       │   ├── yolobox_flowuint_test.cc
│   │   │   │       │   ├── yolobox_flowunit.cc
│   │   │   │       │   └── yolobox_flowunit.h
│   │   │   │       ├── cv_crop/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── cv_crop_flowunit.cc
│   │   │   │       │   ├── cv_crop_flowunit.h
│   │   │   │       │   └── cv_crop_flowunit_test.cc
│   │   │   │       ├── data_source_generator/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── data_source_generator.cc
│   │   │   │       │   ├── data_source_generator.h
│   │   │   │       │   └── data_source_generator_test.cc
│   │   │   │       ├── data_source_parser/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── data_source_parser_flowunit.cc
│   │   │   │       │   ├── data_source_parser_flowunit.h
│   │   │   │       │   ├── data_source_parser_flowunit_test.cc
│   │   │   │       │   └── parser_plugin/
│   │   │   │       │       ├── CMakeLists.txt
│   │   │   │       │       ├── obs_source_parser/
│   │   │   │       │       │   ├── CMakeLists.txt
│   │   │   │       │       │   ├── driver_desc.cc
│   │   │   │       │       │   ├── obs_file_handler.cc
│   │   │   │       │       │   ├── obs_file_handler.h
│   │   │   │       │       │   ├── obs_source_parser.cc
│   │   │   │       │       │   ├── obs_source_parser.h
│   │   │   │       │       │   └── obs_source_parser_test.cc
│   │   │   │       │       ├── restful_source_parser/
│   │   │   │       │       │   ├── CMakeLists.txt
│   │   │   │       │       │   ├── driver_desc.cc
│   │   │   │       │       │   ├── restful_source_parser.cc
│   │   │   │       │       │   └── restful_source_parser.h
│   │   │   │       │       ├── url_source_parser/
│   │   │   │       │       │   ├── CMakeLists.txt
│   │   │   │       │       │   ├── driver_desc.cc
│   │   │   │       │       │   ├── url_source_parser.cc
│   │   │   │       │       │   └── url_source_parser.h
│   │   │   │       │       ├── vcn_common/
│   │   │   │       │       │   ├── vcn_info.cc
│   │   │   │       │       │   └── vcn_info.h
│   │   │   │       │       ├── vcn_restful_source_parser/
│   │   │   │       │       │   ├── CMakeLists.txt
│   │   │   │       │       │   ├── driver_desc.cc
│   │   │   │       │       │   ├── vcn_restful_client.cc
│   │   │   │       │       │   ├── vcn_restful_client.h
│   │   │   │       │       │   ├── vcn_restful_source_parser.cc
│   │   │   │       │       │   ├── vcn_restful_source_parser.h
│   │   │   │       │       │   ├── vcn_restful_source_parser_test.cc
│   │   │   │       │       │   ├── vcn_restful_wrapper.cc
│   │   │   │       │       │   ├── vcn_restful_wrapper.h
│   │   │   │       │       │   ├── vcn_restful_wrapper_mock_test.cc
│   │   │   │       │       │   └── vcn_restful_wrapper_mock_test.h
│   │   │   │       │       ├── vcn_source_parser/
│   │   │   │       │       │   ├── CMakeLists.txt
│   │   │   │       │       │   ├── driver_desc.cc
│   │   │   │       │       │   ├── vcn_client.cc
│   │   │   │       │       │   ├── vcn_client.h
│   │   │   │       │       │   ├── vcn_sdk_wrapper.cc
│   │   │   │       │       │   ├── vcn_sdk_wrapper.h
│   │   │   │       │       │   ├── vcn_sdk_wrapper_mock_test.cc
│   │   │   │       │       │   ├── vcn_sdk_wrapper_mock_test.h
│   │   │   │       │       │   ├── vcn_source_parser.cc
│   │   │   │       │       │   ├── vcn_source_parser.h
│   │   │   │       │       │   └── vcn_source_parser_test.cc
│   │   │   │       │       └── vis_source_parser/
│   │   │   │       │           ├── CMakeLists.txt
│   │   │   │       │           ├── driver_desc.cc
│   │   │   │       │           ├── vis_source_parser.cc
│   │   │   │       │           └── vis_source_parser.h
│   │   │   │       ├── dlengine/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── dlengine_cpu_inference_flowunit.cc
│   │   │   │       │   ├── dlengine_cpu_inference_flowunit.h
│   │   │   │       │   ├── dlengine_cpu_inference_flowunit_test.cc
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       └── modelbox.test.dlengine.cpu.inference.onnx.in
│   │   │   │       ├── draw_bbox/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── draw_bbox_flowunit.cc
│   │   │   │       │   ├── draw_bbox_flowunit.h
│   │   │   │       │   └── draw_bbox_flowunit_test.cc
│   │   │   │       ├── httpserver_async/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── httpserver_async.cc
│   │   │   │       │   ├── httpserver_async.h
│   │   │   │       │   └── httpserver_async_test.cc
│   │   │   │       ├── httpserver_sync/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── httpserver_sync.cc
│   │   │   │       │   ├── httpserver_sync_test.cc
│   │   │   │       │   ├── receive/
│   │   │   │       │   │   ├── httpserver_sync_receive.cc
│   │   │   │       │   │   └── httpserver_sync_receive.h
│   │   │   │       │   └── reply/
│   │   │   │       │       ├── httpserver_sync_reply.cc
│   │   │   │       │       └── httpserver_sync_reply.h
│   │   │   │       ├── image_decoder/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── image_decoder.cc
│   │   │   │       │   ├── image_decoder.h
│   │   │   │       │   └── image_decoder_test.cc
│   │   │   │       ├── image_rotate/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── image_rotate.cc
│   │   │   │       │   ├── image_rotate.h
│   │   │   │       │   └── image_rotate_test.cc
│   │   │   │       ├── java/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── java_flowunit.cc
│   │   │   │       │   ├── java_flowunit.h
│   │   │   │       │   ├── java_flowunit_test.cc
│   │   │   │       │   ├── java_module.cc
│   │   │   │       │   └── java_module.h
│   │   │   │       ├── mean/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── mean_flowunit.cc
│   │   │   │       │   ├── mean_flowunit.h
│   │   │   │       │   └── mean_flowunit_test.cc
│   │   │   │       ├── meta_mapping/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── meta_mapping_flowunit.cc
│   │   │   │       │   ├── meta_mapping_flowunit.h
│   │   │   │       │   └── meta_mapping_flowunit_test.cc
│   │   │   │       ├── mindspore_lite_inference/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── mindspore_cpu_inference_flowunit.cc
│   │   │   │       │   ├── mindspore_cpu_inference_flowunit.h
│   │   │   │       │   ├── mindspore_cpu_inference_flowunit_test.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.mindspore.cpu.inference.encrypt.in
│   │   │   │       │       └── modelbox.test.mindspore.cpu.inference.in
│   │   │   │       ├── model_decrypt_plugin/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── driver_desc.cc
│   │   │   │       │   ├── model_decrypt_plugin.cc
│   │   │   │       │   ├── model_decrypt_plugin.h
│   │   │   │       │   └── model_decrypt_plugin_test.cc
│   │   │   │       ├── normalize/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── normalize_flowunit.cc
│   │   │   │       │   ├── normalize_flowunit.h
│   │   │   │       │   └── normalize_flowunit_test.cc
│   │   │   │       ├── output_broker/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── broker_plugin/
│   │   │   │       │   │   ├── CMakeLists.txt
│   │   │   │       │   │   ├── dis_output_broker/
│   │   │   │       │   │   │   ├── CMakeLists.txt
│   │   │   │       │   │   │   ├── dis_output_broker.cc
│   │   │   │       │   │   │   ├── dis_output_broker.h
│   │   │   │       │   │   │   ├── driver_desc.cc
│   │   │   │       │   │   │   └── driver_desc.h
│   │   │   │       │   │   ├── obs_output_broker/
│   │   │   │       │   │   │   ├── CMakeLists.txt
│   │   │   │       │   │   │   ├── driver_desc.cc
│   │   │   │       │   │   │   ├── obs_output_broker.cc
│   │   │   │       │   │   │   ├── obs_output_broker.h
│   │   │   │       │   │   │   └── obs_output_broker_test.cc
│   │   │   │       │   │   └── webhook_output_broker/
│   │   │   │       │   │       ├── CMakeLists.txt
│   │   │   │       │   │       ├── driver_desc.cc
│   │   │   │       │   │       ├── webhook_output_broker.cc
│   │   │   │       │   │       └── webhook_output_broker.h
│   │   │   │       │   ├── output_broker_flowunit.cc
│   │   │   │       │   ├── output_broker_flowunit.h
│   │   │   │       │   └── output_broker_flowunit_test.cc
│   │   │   │       ├── padding/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── padding_flowunit.cc
│   │   │   │       │   ├── padding_flowunit.h
│   │   │   │       │   └── padding_flowunit_test.cc
│   │   │   │       ├── python/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── python_flowunit.cc
│   │   │   │       │   ├── python_flowunit.h
│   │   │   │       │   ├── python_flowunit_test.cc
│   │   │   │       │   ├── python_module.cc
│   │   │   │       │   └── python_module.h
│   │   │   │       ├── resize/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── resize_flowunit.cc
│   │   │   │       │   ├── resize_flowunit.h
│   │   │   │       │   └── resize_flowunit_test.cc
│   │   │   │       ├── tensorflow/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── tensorflow_cpu_inference_flowunit.cc
│   │   │   │       │   ├── tensorflow_cpu_inference_flowunit.h
│   │   │   │       │   ├── tensorflow_cpu_inference_flowunit_test.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       └── modelbox.test.cpu.tensorflow.in
│   │   │   │       ├── video_decoder/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── ffmpeg_video_decoder.cc
│   │   │   │       │   ├── ffmpeg_video_decoder.h
│   │   │   │       │   ├── video_decoder_flowunit.cc
│   │   │   │       │   ├── video_decoder_flowunit.h
│   │   │   │       │   └── video_decoder_flowunit_test.cc
│   │   │   │       ├── video_demuxer/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── ffmpeg_reader.cc
│   │   │   │       │   ├── ffmpeg_reader.h
│   │   │   │       │   ├── ffmpeg_video_demuxer.cc
│   │   │   │       │   ├── ffmpeg_video_demuxer.h
│   │   │   │       │   ├── video_demux_flowunit_retry_test.cc
│   │   │   │       │   ├── video_demuxer_flowunit.cc
│   │   │   │       │   ├── video_demuxer_flowunit.h
│   │   │   │       │   └── video_demuxer_flowunit_test.cc
│   │   │   │       ├── video_encoder/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── ffmpeg_video_encoder.cc
│   │   │   │       │   ├── ffmpeg_video_encoder.h
│   │   │   │       │   ├── ffmpeg_video_muxer.cc
│   │   │   │       │   ├── ffmpeg_video_muxer.h
│   │   │   │       │   ├── ffmpeg_writer.cc
│   │   │   │       │   ├── ffmpeg_writer.h
│   │   │   │       │   ├── video_encoder_flowunit.cc
│   │   │   │       │   ├── video_encoder_flowunit.h
│   │   │   │       │   └── video_encoder_flowunit_test.cc
│   │   │   │       └── video_input/
│   │   │   │           ├── CMakeLists.txt
│   │   │   │           ├── video_input_flowunit.cc
│   │   │   │           └── video_input_flowunit.h
│   │   │   ├── cuda/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── core/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── cuda_memory.cc
│   │   │   │   │   ├── device_cuda.cc
│   │   │   │   │   ├── driver_desc.cc
│   │   │   │   │   ├── include/
│   │   │   │   │   │   └── modelbox/
│   │   │   │   │   │       └── device/
│   │   │   │   │   │           └── cuda/
│   │   │   │   │   │               ├── cuda_memory.h
│   │   │   │   │   │               └── device_cuda.h
│   │   │   │   │   └── libmodelbox-device-cuda.pc.in
│   │   │   │   └── flowunit/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── color_transpose/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── color_transpose.cc
│   │   │   │       │   ├── color_transpose.cu
│   │   │   │       │   ├── color_transpose.h
│   │   │   │       │   ├── color_transpose_cu.h
│   │   │   │       │   └── color_transpose_test.cc
│   │   │   │       ├── dlengine/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── dlengine_cuda_inference_flowunit.cc
│   │   │   │       │   ├── dlengine_cuda_inference_flowunit.h
│   │   │   │       │   ├── dlengine_cuda_inference_flowunit_test.cc
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       └── modelbox.test.dlengine.cuda.inference.onnx.in
│   │   │   │       ├── image_rotate/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── image_rotate.cc
│   │   │   │       │   ├── image_rotate.cu
│   │   │   │       │   ├── image_rotate.h
│   │   │   │       │   ├── image_rotate_cu.h
│   │   │   │       │   └── image_rotate_test.cc
│   │   │   │       ├── mean/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── mean.cc
│   │   │   │       │   ├── mean.h
│   │   │   │       │   ├── mean_flowunit.cc
│   │   │   │       │   ├── mean_flowunit.h
│   │   │   │       │   └── mean_flowunit_test.cc
│   │   │   │       ├── mindspore_lite_inference/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── mindspore_cuda_inference_flowunit.cc
│   │   │   │       │   ├── mindspore_cuda_inference_flowunit.h
│   │   │   │       │   ├── mindspore_cuda_inference_flowunit_test.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.mindspore.cuda.inference.encrypt.in
│   │   │   │       │       └── modelbox.test.mindspore.cuda.inference.in
│   │   │   │       ├── normalize/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── normalize.cc
│   │   │   │       │   ├── normalize.h
│   │   │   │       │   ├── normalize_flowunit.cc
│   │   │   │       │   ├── normalize_flowunit.h
│   │   │   │       │   └── normalize_flowunit_test.cc
│   │   │   │       ├── normalize_v2/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── normalize_flowunit.cc
│   │   │   │       │   ├── normalize_flowunit.cu
│   │   │   │       │   ├── normalize_flowunit.h
│   │   │   │       │   ├── normalize_flowunit_cu.h
│   │   │   │       │   └── normalize_flowunit_test.cc
│   │   │   │       ├── nppi_crop/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── nppi_crop_flowunit.cc
│   │   │   │       │   ├── nppi_crop_flowunit.h
│   │   │   │       │   └── nppi_crop_flowunit_test.cc
│   │   │   │       ├── nppi_resize/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── resize_flowunit.cc
│   │   │   │       │   ├── resize_flowunit.h
│   │   │   │       │   └── resize_flowunit_test.cc
│   │   │   │       ├── nv_image_decoder/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── nv_image_decoder.cc
│   │   │   │       │   ├── nv_image_decoder.h
│   │   │   │       │   └── nv_image_decoder_test.cc
│   │   │   │       ├── padding/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── padding_flowunit.cc
│   │   │   │       │   ├── padding_flowunit.h
│   │   │   │       │   └── padding_flowunit_test.cc
│   │   │   │       ├── tensorflow/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── tensorflow_gpu_inference_flowunit.cc
│   │   │   │       │   ├── tensorflow_gpu_inference_flowunit.h
│   │   │   │       │   ├── tensorflow_gpu_inference_flowunit_test.cc
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.cuda.tensorflow.encrypt.in
│   │   │   │       │       ├── modelbox.test.cuda.tensorflow.in
│   │   │   │       │       ├── modelbox.test.cuda.tensorflow.savemodel.in
│   │   │   │       │       └── modelbox.test.cuda.tensorflow_plugin.in
│   │   │   │       ├── tensorrt/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── common_util.h
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── nvplugin/
│   │   │   │       │   │   ├── plugin_factory.h
│   │   │   │       │   │   ├── upsample-layer.cpp
│   │   │   │       │   │   ├── upsample-layer.cu
│   │   │   │       │   │   └── upsample-layer.h
│   │   │   │       │   ├── tensorrt_inference_flowunit.cc
│   │   │   │       │   ├── tensorrt_inference_flowunit.h
│   │   │   │       │   ├── tensorrt_inference_flowunit_test.cc
│   │   │   │       │   ├── tensorrt_inference_plugin.h
│   │   │   │       │   ├── test_plugin/
│   │   │   │       │   │   ├── CMakeLists.txt
│   │   │   │       │   │   ├── generate_plugin.cc
│   │   │   │       │   │   └── generate_plugin.h
│   │   │   │       │   └── test_toml/
│   │   │   │       │       ├── modelbox.test.plugin.tensorrt.in
│   │   │   │       │       ├── modelbox.test.tensorrt.encrypt.in
│   │   │   │       │       └── modelbox.test.tensorrt.in
│   │   │   │       ├── torch/
│   │   │   │       │   ├── CMakeLists.txt
│   │   │   │       │   ├── flowunit_desc.cc
│   │   │   │       │   ├── test_toml/
│   │   │   │       │   │   ├── modelbox.test.torch.encrypt.in
│   │   │   │       │   │   ├── modelbox.test.torch.in
│   │   │   │       │   │   └── modelbox.test.torch_2.in
│   │   │   │       │   ├── torch_inference_flowunit.cc
│   │   │   │       │   ├── torch_inference_flowunit.h
│   │   │   │       │   └── torch_inference_flowunit_test.cc
│   │   │   │       └── video_decoder/
│   │   │   │           ├── CMakeLists.txt
│   │   │   │           ├── nppi_color_converter.cc
│   │   │   │           ├── nppi_color_converter.h
│   │   │   │           ├── nvcodec_video_decoder.cc
│   │   │   │           ├── nvcodec_video_decoder.h
│   │   │   │           ├── video_decoder_flowunit.cc
│   │   │   │           ├── video_decoder_flowunit.h
│   │   │   │           └── video_decoder_flowunit_test.cc
│   │   │   └── rockchip/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── common/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   └── video_out/
│   │   │       │       ├── CMakeLists.txt
│   │   │       │       ├── ffmpeg_video_muxer.cc
│   │   │       │       ├── ffmpeg_video_muxer.h
│   │   │       │       ├── ffmpeg_writer.cc
│   │   │       │       └── ffmpeg_writer.h
│   │   │       ├── core/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── device_rockchip.cc
│   │   │       │   ├── driver_desc.cc
│   │   │       │   ├── driver_desc.h
│   │   │       │   ├── include/
│   │   │       │   │   └── modelbox/
│   │   │       │   │       └── device/
│   │   │       │   │           └── rockchip/
│   │   │       │   │               ├── device_rockchip.h
│   │   │       │   │               ├── rockchip_api.h
│   │   │       │   │               └── rockchip_memory.h
│   │   │       │   ├── libmodelbox-device-rockchip.pc.in
│   │   │       │   ├── rockchip_api.cc
│   │   │       │   └── rockchip_memory.cc
│   │   │       └── flowunit/
│   │   │           ├── CMakeLists.txt
│   │   │           ├── crop/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── crop_flowunit.cc
│   │   │           │   ├── crop_flowunit.h
│   │   │           │   └── crop_flowunit_test.cc
│   │   │           ├── image_decoder/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── image_decoder.cc
│   │   │           │   ├── image_decoder.h
│   │   │           │   └── image_decoder_test.cc
│   │   │           ├── inference_rknpu2/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── flowunit_desc.cc
│   │   │           │   ├── modelbox.test.rknpu2.inference.in
│   │   │           │   ├── rknpu2_inference.cc
│   │   │           │   ├── rknpu2_inference.h
│   │   │           │   ├── rknpu2_inference_flowunit.cc
│   │   │           │   └── rknpu2_inference_flowunit.h
│   │   │           ├── local_camera/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── local_camera_flowunit.cc
│   │   │           │   ├── local_camera_flowunit.h
│   │   │           │   ├── v4l2_camera.cc
│   │   │           │   └── v4l2_camera.h
│   │   │           ├── resize/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── resize_flowunit.cc
│   │   │           │   ├── resize_flowunit.h
│   │   │           │   └── resize_flowunit_test.cc
│   │   │           ├── to_cpuimg/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── mpp_to_cpu_flowunit.cc
│   │   │           │   ├── mpp_to_cpu_flowunit.h
│   │   │           │   └── mpp_to_cpu_flowunit_test.cc
│   │   │           ├── video_decoder/
│   │   │           │   ├── CMakeLists.txt
│   │   │           │   ├── rk_video_decoder.cc
│   │   │           │   ├── rk_video_decoder.h
│   │   │           │   ├── video_decoder_flowunit.cc
│   │   │           │   ├── video_decoder_flowunit.h
│   │   │           │   └── video_decoder_flowunit_test.cc
│   │   │           └── video_out/
│   │   │               ├── CMakeLists.txt
│   │   │               ├── ffmpeg_video_encoder.cc
│   │   │               ├── ffmpeg_video_encoder.h
│   │   │               ├── video_out_flowunit.cc
│   │   │               ├── video_out_flowunit.h
│   │   │               └── video_out_flowunit_test.cc
│   │   ├── graph_conf/
│   │   │   ├── CMakeLists.txt
│   │   │   └── graphviz/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── graph_conf_desc.cc
│   │   │       ├── graphviz_conf.cc
│   │   │       └── graphviz_conf.h
│   │   ├── inference_engine/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── dlengine/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── dlengine_inference.cc
│   │   │   │   ├── dlengine_inference.h
│   │   │   │   ├── dlengine_inference_flowunit.h
│   │   │   │   ├── dlengine_inference_flowunit_test.cc
│   │   │   │   └── dlengine_inference_flowunit_test.h
│   │   │   ├── mindspore/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── mindspore_inference.cc
│   │   │   │   ├── mindspore_inference.h
│   │   │   │   ├── mindspore_inference_flowunit_test.cc
│   │   │   │   └── mindspore_inference_flowunit_test.h
│   │   │   └── tensorflow/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── tensorflow_inference_common.cc
│   │   │       ├── tensorflow_inference_common.h
│   │   │       ├── tensorflow_inference_plugin.h
│   │   │       └── test_plugin/
│   │   │           ├── CMakeLists.txt
│   │   │           ├── generate_plugin.cc
│   │   │           └── generate_plugin.h
│   │   └── virtual/
│   │       ├── CMakeLists.txt
│   │       ├── inference/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── virtualdriver_desc.cc
│   │       │   ├── virtualdriver_inference.cc
│   │       │   └── virtualdriver_inference.h
│   │       ├── java/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── virtualdriver_desc.cc
│   │       │   ├── virtualdriver_java.cc
│   │       │   └── virtualdriver_java.h
│   │       ├── python/
│   │       │   ├── CMakeLists.txt
│   │       │   ├── virtualdriver_desc.cc
│   │       │   ├── virtualdriver_python.cc
│   │       │   └── virtualdriver_python.h
│   │       └── yolobox/
│   │           ├── CMakeLists.txt
│   │           ├── virtualdriver_desc.cc
│   │           ├── virtualdriver_yolobox.cc
│   │           └── virtualdriver_yolobox.h
│   ├── java/
│   │   ├── CMakeLists.txt
│   │   ├── jni/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── jni_export/
│   │   │   │   ├── buffer.cc
│   │   │   │   ├── bufferlist.cc
│   │   │   │   ├── configuration.cc
│   │   │   │   ├── data_meta.cc
│   │   │   │   ├── datacontext.cc
│   │   │   │   ├── device.cc
│   │   │   │   ├── external_data_map.cc
│   │   │   │   ├── external_data_select.cc
│   │   │   │   ├── flow.cc
│   │   │   │   ├── flow_streamio.cc
│   │   │   │   ├── flowunit.cc
│   │   │   │   ├── flowunit_builder.cc
│   │   │   │   ├── flowunit_desc.cc
│   │   │   │   ├── flowunit_error.cc
│   │   │   │   ├── flowunit_event.cc
│   │   │   │   ├── flowunit_input.cc
│   │   │   │   ├── flowunit_output.cc
│   │   │   │   ├── log.cc
│   │   │   │   ├── native_object.cc
│   │   │   │   ├── session_context.cc
│   │   │   │   └── status.cc
│   │   │   ├── jni_native_object.cc
│   │   │   ├── jni_native_object.h
│   │   │   ├── log.cc
│   │   │   ├── log.h
│   │   │   ├── modelbox_jni.cc
│   │   │   ├── modelbox_jni.h
│   │   │   ├── scoped_jvm.cc
│   │   │   ├── scoped_jvm.h
│   │   │   ├── throw.cc
│   │   │   ├── throw.h
│   │   │   ├── utils.cc
│   │   │   └── utils.h
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── com/
│   │       │           └── modelbox/
│   │       │               ├── Buffer.java
│   │       │               ├── BufferList.java
│   │       │               ├── Configuration.java
│   │       │               ├── DataContext.java
│   │       │               ├── DataMeta.java
│   │       │               ├── Device.java
│   │       │               ├── ExternalDataMap.java
│   │       │               ├── ExternalDataSelect.java
│   │       │               ├── Flow.java
│   │       │               ├── FlowStreamIO.java
│   │       │               ├── FlowUnit.java
│   │       │               ├── FlowUnitBuilder.java
│   │       │               ├── FlowUnitDesc.java
│   │       │               ├── FlowUnitError.java
│   │       │               ├── FlowUnitEvent.java
│   │       │               ├── FlowUnitInput.java
│   │       │               ├── FlowUnitOutput.java
│   │       │               ├── Log.java
│   │       │               ├── ModelBox.java
│   │       │               ├── ModelBoxException.java
│   │       │               ├── NativeObject.java
│   │       │               ├── SessionContext.java
│   │       │               ├── StatisticsItem.java
│   │       │               ├── Status.java
│   │       │               └── StatusCode.java
│   │       └── test/
│   │           └── java/
│   │               └── com/
│   │                   └── modelbox/
│   │                       ├── ModelBoxConfigurationTest.java
│   │                       ├── ModelBoxFlowTest.java
│   │                       ├── ModelBoxLogTest.java
│   │                       ├── ModelBoxMiscTest.java
│   │                       ├── ModelBoxStatusTest.java
│   │                       ├── ModelboxBufferTest.java
│   │                       ├── TestConfig.java
│   │                       └── TestConfig.json.in
│   ├── libmodelbox/
│   │   ├── CMakeLists.txt
│   │   ├── base/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── arch/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── android/
│   │   │   │   │   ├── base64_simd.cc
│   │   │   │   │   ├── stats.cc
│   │   │   │   │   └── stats.h
│   │   │   │   └── linux/
│   │   │   │       ├── aarch64/
│   │   │   │       │   └── base64_simd.cc
│   │   │   │       ├── default/
│   │   │   │       │   └── default.cc
│   │   │   │       ├── stats.cc
│   │   │   │       ├── stats.h
│   │   │   │       └── x86_64/
│   │   │   │           └── base64_simd.cc
│   │   │   ├── config/
│   │   │   │   └── configuration.cc
│   │   │   ├── device/
│   │   │   │   ├── device.cc
│   │   │   │   ├── device_factory.cc
│   │   │   │   ├── device_manager.cc
│   │   │   │   └── device_memory.cc
│   │   │   ├── drivers/
│   │   │   │   ├── driver.cc
│   │   │   │   ├── driver_utils.cc
│   │   │   │   ├── register_flowunit.cc
│   │   │   │   └── virtual_driver.cc
│   │   │   ├── graph_manager/
│   │   │   │   └── graph_manager.cc
│   │   │   ├── include/
│   │   │   │   └── modelbox/
│   │   │   │       └── base/
│   │   │   │           ├── any.h
│   │   │   │           ├── base64_simd.h
│   │   │   │           ├── blocking_queue.h
│   │   │   │           ├── collector.h
│   │   │   │           ├── configuration.h
│   │   │   │           ├── crypto.h
│   │   │   │           ├── device.h
│   │   │   │           ├── device_memory.h
│   │   │   │           ├── driver.h
│   │   │   │           ├── driver_api_helper.h
│   │   │   │           ├── driver_utils.h
│   │   │   │           ├── error_info.h
│   │   │   │           ├── executor.h
│   │   │   │           ├── graph_manager.h
│   │   │   │           ├── list.h
│   │   │   │           ├── log.h
│   │   │   │           ├── memory_pool.h
│   │   │   │           ├── memory_statistic.h
│   │   │   │           ├── os.h
│   │   │   │           ├── popen.h
│   │   │   │           ├── refcache.h
│   │   │   │           ├── register_flowunit.h
│   │   │   │           ├── slab.h
│   │   │   │           ├── status.h
│   │   │   │           ├── thread_pool.h
│   │   │   │           ├── timer.h
│   │   │   │           ├── utils.h
│   │   │   │           └── uuid.h
│   │   │   ├── log/
│   │   │   │   └── log.cc
│   │   │   ├── mem/
│   │   │   │   ├── memory_pool.cc
│   │   │   │   └── slab.cc
│   │   │   ├── status/
│   │   │   │   └── status.cc
│   │   │   ├── thread_pool/
│   │   │   │   └── thread_pool.cc
│   │   │   ├── timer/
│   │   │   │   └── timer.cc
│   │   │   └── utils/
│   │   │       ├── any.cc
│   │   │       ├── crypto.cc
│   │   │       ├── json_toml_convert.cc
│   │   │       ├── popen.cc
│   │   │       ├── refcache.cc
│   │   │       ├── utils.cc
│   │   │       └── uuid.cc
│   │   ├── config.h.in
│   │   ├── engine/
│   │   │   ├── api/
│   │   │   │   ├── flow_graph_desc.cc
│   │   │   │   ├── flow_node_desc.cc
│   │   │   │   └── flowunit_builder.cc
│   │   │   ├── buffer.cc
│   │   │   ├── buffer_index_info.cc
│   │   │   ├── buffer_list.cc
│   │   │   ├── buffer_type.cc
│   │   │   ├── common/
│   │   │   │   ├── data_hub.cc
│   │   │   │   └── data_hub.h
│   │   │   ├── data_context.cc
│   │   │   ├── dynamic_graph/
│   │   │   │   ├── context.cc
│   │   │   │   ├── data_handler.cc
│   │   │   │   └── modelbox_engine.cc
│   │   │   ├── error.cc
│   │   │   ├── external_data_map.cc
│   │   │   ├── external_data_simple.cc
│   │   │   ├── flow_stream_io.cc
│   │   │   ├── flowunit.cc
│   │   │   ├── flowunit_balancer.cc
│   │   │   ├── flowunit_data_executor.cc
│   │   │   ├── flowunit_group.cc
│   │   │   ├── flowunit_manager.cc
│   │   │   ├── graph/
│   │   │   │   └── graph_checker.cc
│   │   │   ├── graph.cc
│   │   │   ├── inner_event.cc
│   │   │   ├── match_stream.cc
│   │   │   ├── node.cc
│   │   │   ├── port.cc
│   │   │   ├── scheduler/
│   │   │   │   ├── flow_scheduler.cc
│   │   │   │   └── flow_scheduler.h
│   │   │   ├── session.cc
│   │   │   ├── session_context.cc
│   │   │   ├── single_node.cc
│   │   │   ├── stream.cc
│   │   │   ├── tensor.cc
│   │   │   ├── tensor_list.cc
│   │   │   ├── type.cc
│   │   │   └── virtual_node.cc
│   │   ├── flow/
│   │   │   └── flow.cc
│   │   ├── include/
│   │   │   └── modelbox/
│   │   │       ├── buffer.h
│   │   │       ├── buffer_index_info.h
│   │   │       ├── buffer_list.h
│   │   │       ├── buffer_type.h
│   │   │       ├── context.h
│   │   │       ├── data_context.h
│   │   │       ├── data_handler.h
│   │   │       ├── data_source_parser_plugin.h
│   │   │       ├── error.h
│   │   │       ├── external_data_map.h
│   │   │       ├── external_data_simple.h
│   │   │       ├── flow.h
│   │   │       ├── flow_graph_desc.h
│   │   │       ├── flow_node_desc.h
│   │   │       ├── flow_stream_io.h
│   │   │       ├── flowunit.h
│   │   │       ├── flowunit_api_helper.h
│   │   │       ├── flowunit_balancer.h
│   │   │       ├── flowunit_builder.h
│   │   │       ├── flowunit_data_executor.h
│   │   │       ├── flowunit_group.h
│   │   │       ├── graph.h
│   │   │       ├── graph_checker.h
│   │   │       ├── iam_auth.h
│   │   │       ├── inner_event.h
│   │   │       ├── match_stream.h
│   │   │       ├── modelbox.h
│   │   │       ├── modelbox_engine.h
│   │   │       ├── node.h
│   │   │       ├── obs_client.h
│   │   │       ├── output_broker_plugin.h
│   │   │       ├── port.h
│   │   │       ├── profiler.h
│   │   │       ├── scheduler.h
│   │   │       ├── session.h
│   │   │       ├── session_context.h
│   │   │       ├── single_node.h
│   │   │       ├── statistics.h
│   │   │       ├── stream.h
│   │   │       ├── tensor.h
│   │   │       ├── tensor_list.h
│   │   │       ├── token_header.h
│   │   │       ├── type.h
│   │   │       └── virtual_node.h
│   │   ├── libmodelbox.pc.in
│   │   └── profiling/
│   │       ├── performance.cc
│   │       ├── profiler.cc
│   │       ├── statistics.cc
│   │       └── trace.cc
│   ├── modelbox/
│   │   ├── CMakeLists.txt
│   │   ├── common/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── command.cc
│   │   │   ├── config.cc
│   │   │   ├── control_msg.cc
│   │   │   ├── flowuint_info.cc
│   │   │   ├── include/
│   │   │   │   └── modelbox/
│   │   │   │       └── common/
│   │   │   │           ├── command.h
│   │   │   │           ├── config.h
│   │   │   │           ├── control_msg.h
│   │   │   │           ├── flowunit_info.h
│   │   │   │           ├── log.h
│   │   │   │           └── utils.h
│   │   │   ├── log.cc
│   │   │   └── utils.cc
│   │   ├── manager/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── etc/
│   │   │   │   ├── init.d/
│   │   │   │   │   └── modelbox-manager.in
│   │   │   │   ├── manager-opts
│   │   │   │   ├── manager.conf.in
│   │   │   │   └── modelbox-manager.service.in
│   │   │   ├── include/
│   │   │   │   └── modelbox/
│   │   │   │       └── manager/
│   │   │   │           └── manager_monitor_client.h
│   │   │   └── src/
│   │   │       ├── common.c
│   │   │       ├── common.h
│   │   │       ├── conf.c
│   │   │       ├── conf.h
│   │   │       ├── hashtable.h
│   │   │       ├── list.h
│   │   │       ├── log.c
│   │   │       ├── log.h
│   │   │       ├── manager.c
│   │   │       ├── manager.h
│   │   │       ├── manager_common.h
│   │   │       ├── manager_conf.c
│   │   │       ├── manager_conf.h
│   │   │       ├── manager_monitor.c
│   │   │       ├── manager_monitor.h
│   │   │       ├── manager_monitor_client.c
│   │   │       ├── util.c
│   │   │       └── util.h
│   │   ├── server/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── bin/
│   │   │   │   └── develop
│   │   │   ├── config.cc
│   │   │   ├── config.h
│   │   │   ├── control-command.cc
│   │   │   ├── control-command.h
│   │   │   ├── control.cc
│   │   │   ├── control.h
│   │   │   ├── etc/
│   │   │   │   ├── init.d/
│   │   │   │   │   └── modelbox.in
│   │   │   │   ├── modelbox-dev.conf.in
│   │   │   │   ├── modelbox-opts
│   │   │   │   ├── modelbox-template.conf.in
│   │   │   │   ├── modelbox.conf.in
│   │   │   │   └── modelbox.service.in
│   │   │   ├── http_helper.cc
│   │   │   ├── include/
│   │   │   │   └── modelbox/
│   │   │   │       └── server/
│   │   │   │           ├── http_helper.h
│   │   │   │           ├── job.h
│   │   │   │           ├── job_manager.h
│   │   │   │           ├── plugin.h
│   │   │   │           ├── statistics.h
│   │   │   │           ├── task.h
│   │   │   │           ├── task_manager.h
│   │   │   │           ├── timer.h
│   │   │   │           └── utils.h
│   │   │   ├── job.cc
│   │   │   ├── job_manager.cc
│   │   │   ├── js_engine.cc
│   │   │   ├── js_engine.h
│   │   │   ├── main.cc
│   │   │   ├── misc/
│   │   │   │   └── modelbox-server-cmd.json.in
│   │   │   ├── plugin/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── editor/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── config.h.in
│   │   │   │   │   ├── editor_plugin.cc
│   │   │   │   │   └── editor_plugin.h
│   │   │   │   └── tasks/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       ├── modelbox_plugin.cc
│   │   │   │       └── modelbox_plugin.h
│   │   │   ├── plugin.cc
│   │   │   ├── server.cc
│   │   │   ├── server.h
│   │   │   ├── server_plugin.cc
│   │   │   ├── server_plugin.h
│   │   │   ├── server_plugin_js.cc
│   │   │   ├── task.cc
│   │   │   ├── task_manager.cc
│   │   │   ├── timer.cc
│   │   │   └── utils.cc
│   │   ├── serving/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── main.cc
│   │   │   ├── serving.cc
│   │   │   ├── serving.h
│   │   │   └── test_file/
│   │   │       ├── custom_service.py.in
│   │   │       ├── model.toml.in
│   │   │       └── test_client.py.in
│   │   └── tool/
│   │       ├── CMakeLists.txt
│   │       ├── bin/
│   │       │   └── modelbox-python-debug
│   │       ├── driver.cc
│   │       ├── driver.h
│   │       ├── external_command.cc
│   │       ├── external_command.h
│   │       ├── flow.cc
│   │       ├── flow.h
│   │       ├── help.cc
│   │       ├── help.h
│   │       ├── key.cc
│   │       ├── key.h
│   │       ├── log.h
│   │       ├── main.cc
│   │       ├── server_command.cc
│   │       └── server_command.h
│   └── python/
│       ├── CMakeLists.txt
│       ├── MANIFEST.in
│       ├── include/
│       │   └── modelbox/
│       │       └── python/
│       │           └── log.h
│       ├── lib/
│       │   ├── log.cc
│       │   └── modelbox.cc
│       ├── modelbox/
│       │   └── __init__.py
│       ├── setup.py.in
│       └── test/
│           ├── __init__.py
│           ├── op/
│           │   ├── op_args/
│           │   │   ├── modelbox.op_args.in
│           │   │   └── op_args.py
│           │   ├── op_brightness/
│           │   │   ├── modelbox.op_brightness.in
│           │   │   └── op_brightness.py
│           │   ├── op_buffer/
│           │   │   ├── modelbox.op_buffer.in
│           │   │   └── op_buffer.py
│           │   ├── op_image/
│           │   │   ├── modelbox.op_image.in
│           │   │   └── op_image.py
│           │   ├── op_resize/
│           │   │   ├── modelbox.op_resize.in
│           │   │   └── op_resize.py
│           │   └── op_show/
│           │       ├── modelbox.op_show.in
│           │       └── op_show.py
│           ├── test_api_mode.py
│           ├── test_buffer.py
│           ├── test_config.py.in
│           ├── test_configuration.py
│           ├── test_dynamic_graph.py
│           ├── test_flow.py
│           ├── test_log.py
│           ├── test_model.py
│           ├── test_modelbox.py
│           ├── test_session.py
│           └── test_status.py
├── test/
│   ├── CMakeLists.txt
│   ├── assets/
│   │   ├── ascend_crop_yuv
│   │   ├── ascend_padding_yuv
│   │   ├── ascend_resize_yuv
│   │   ├── atc_inference/
│   │   │   ├── 2d_2048_w_stage1_pad0.om
│   │   │   └── 2d_2048_w_stage1_pad0_en.om
│   │   ├── auth/
│   │   │   └── auth_info.toml
│   │   ├── mindspore_inference/
│   │   │   ├── tensor_add.mindir
│   │   │   ├── tensor_add.ms
│   │   │   ├── tensor_add_en.mindir
│   │   │   └── tensor_add_en.ms
│   │   ├── obs/
│   │   │   ├── obs_download.toml
│   │   │   └── obs_upload.toml
│   │   ├── resize_cpu/
│   │   │   └── virtual_python_test.toml
│   │   ├── rockchip_112x110_bgr
│   │   ├── rockchip_160x120_bgr
│   │   ├── rockchip_640x480_bgr
│   │   ├── rockchip_crop_bgr
│   │   ├── rockchip_decoder_test_bgr
│   │   ├── tensorflow/
│   │   │   ├── 1.13.1/
│   │   │   │   ├── tensorflow_pb/
│   │   │   │   │   └── frozen_model.pb
│   │   │   │   └── tensorflow_save_model/
│   │   │   │       ├── saved_model.pb
│   │   │   │       └── variables/
│   │   │   │           ├── variables.data-00000-of-00001
│   │   │   │           └── variables.index
│   │   │   ├── 1.15.0/
│   │   │   │   ├── tensorflow_pb/
│   │   │   │   │   ├── frozen_model.pb
│   │   │   │   │   └── frozen_model_en.pb
│   │   │   │   └── tensorflow_save_model/
│   │   │   │       ├── saved_model.pb
│   │   │   │       └── variables/
│   │   │   │           ├── variables.data-00000-of-00001
│   │   │   │           └── variables.index
│   │   │   └── 2.6.0-dev20210809/
│   │   │       ├── tensorflow_pb/
│   │   │       │   └── frozen_model.pb
│   │   │       └── tensorflow_save_model/
│   │   │           ├── saved_model.pb
│   │   │           └── variables/
│   │   │               ├── variables.data-00000-of-00001
│   │   │               └── variables.index
│   │   ├── tensorrt/
│   │   │   ├── model.onnx
│   │   │   └── model_en.onnx
│   │   ├── test_inference/
│   │   │   └── virtual_model_test.toml
│   │   ├── test_model/
│   │   │   └── test_dynamic.onnx
│   │   ├── torch/
│   │   │   ├── pytorch_example.pt
│   │   │   ├── pytorch_example_2.pt
│   │   │   └── pytorch_example_en.pt
│   │   ├── video/
│   │   │   ├── rgb_460800_480x320_a.data
│   │   │   └── rgb_460800_480x320_b.data
│   │   └── yolobox/
│   │       ├── data_144000_0
│   │       └── data_36000_0
│   ├── drivers/
│   │   ├── CMakeLists.txt
│   │   ├── common/
│   │   │   ├── mock_cert.cc
│   │   │   ├── mock_cert.h
│   │   │   ├── tensorflow_inference/
│   │   │   │   ├── tensorflow_inference_mock.cc
│   │   │   │   └── tensorflow_inference_mock.h
│   │   │   └── video_decoder/
│   │   │       ├── video_decoder_mock.cc
│   │   │       └── video_decoder_mock.h
│   │   ├── driver_flow_test.cc
│   │   └── driver_flow_test.h
│   ├── function/
│   │   ├── CMakeLists.txt
│   │   ├── api_test.cc
│   │   ├── car_detection/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── car_flow.cc
│   │   │   ├── car_flow.h
│   │   │   └── car_flow_test.cc
│   │   ├── demo_test.cc
│   │   └── dynamic_graph_test.cc
│   ├── manager/
│   │   ├── CMakeLists.txt
│   │   ├── manager_test.cc
│   │   └── test_main.cc
│   ├── mock/
│   │   ├── CMakeLists.txt
│   │   ├── drivers/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── device_mockdevice/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── device_mockdevice.cc
│   │   │   │   ├── driver_desc.cc
│   │   │   │   ├── driver_desc.h
│   │   │   │   ├── include/
│   │   │   │   │   └── modelbox/
│   │   │   │   │       └── device/
│   │   │   │   │           └── mockdevice/
│   │   │   │   │               └── device_mockdevice.h
│   │   │   │   └── libmodelbox-device-mockdevice.pc.in
│   │   │   ├── flowunit_mockflowunit/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── flowunit_desc.cc
│   │   │   │   ├── flowunit_desc.h
│   │   │   │   ├── flowunit_mockflowunit.cc
│   │   │   │   └── flowunit_mockflowunit.h
│   │   │   ├── graph_conf_mockgraphconf/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── graph_conf_desc.cc
│   │   │   │   ├── graph_conf_desc.h
│   │   │   │   ├── graph_conf_mockgraphconf.cc
│   │   │   │   └── graph_conf_mockgraphconf.h
│   │   │   ├── mock_driver_ctl.cc
│   │   │   └── mock_driver_ctl.h
│   │   ├── flowunit/
│   │   │   ├── CMakeLists.txt
│   │   │   └── passthrouth/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── passthrouth.cc
│   │   │       └── passthrouth.h
│   │   └── minimodelbox/
│   │       ├── CMakeLists.txt
│   │       ├── mock_server.cc
│   │       ├── mock_server.h
│   │       ├── mock_tool.cc
│   │       ├── mock_tool.h
│   │       ├── mockflow.cc
│   │       └── mockflow.h
│   ├── test_config.h.in
│   ├── test_main.cc
│   └── unit/
│       ├── CMakeLists.txt
│       ├── libmodelbox/
│       │   ├── base/
│       │   │   ├── blocking_queue_test.cc
│       │   │   ├── configuration_test.cc
│       │   │   ├── crypto_test.cc
│       │   │   ├── device_test.cc
│       │   │   ├── driver_test.cc
│       │   │   ├── graph_manager_test.cc
│       │   │   ├── list_test.cc
│       │   │   ├── log_test.cc
│       │   │   ├── memory_pool_test.cc
│       │   │   ├── memory_statistic_test.cc
│       │   │   ├── os_stats_test.cc
│       │   │   ├── popen_test.cc
│       │   │   ├── refcache_test.cc
│       │   │   ├── slab_test.cc
│       │   │   ├── status_test.cc
│       │   │   ├── thread_pool_test.cc
│       │   │   ├── timer_test.cc
│       │   │   └── utils_test.cc
│       │   ├── engine/
│       │   │   ├── buffer_index_info_test.cc
│       │   │   ├── buffer_list_test.cc
│       │   │   ├── buffer_test.cc
│       │   │   ├── buffer_type_test.cc
│       │   │   ├── data_context_test.cc
│       │   │   ├── data_hub_test.cc
│       │   │   ├── flow_graph_desc_test.cc
│       │   │   ├── flow_scheduler_test.cc
│       │   │   ├── flowunit_balancer_test.cc
│       │   │   ├── flowunit_data_executor_test.cc
│       │   │   ├── flowunit_group_test.cc
│       │   │   ├── flowunit_test.cc
│       │   │   ├── graph_checker_test.cc
│       │   │   ├── graph_test.cc
│       │   │   ├── match_stream_test.cc
│       │   │   ├── node_test.cc
│       │   │   ├── port_test.cc
│       │   │   ├── session_test.cc
│       │   │   ├── stream_test.cc
│       │   │   ├── tensor_list_test.cc
│       │   │   ├── type_test.cc
│       │   │   └── virtual_node_test.cc
│       │   ├── flow_test.cc
│       │   └── profiling/
│       │       └── profiler_test.cc
│       ├── modelbox/
│       │   ├── server_test.cc
│       │   ├── serving_test.cc
│       │   └── utils_test.cc
│       └── plugin/
│           └── task_manger_test.cc
└── thirdparty/
    ├── CMake/
    │   ├── APIGW_CPP_CMakeList.in
    │   ├── Demo_Files_CMakeList.in
    │   ├── Huawei_Secure_C_CMakeList.in
    │   ├── cpp_httplib_cmakelist.in
    │   ├── local-package.in
    │   ├── pre-download.in
    │   └── tlog_cmakelist.in
    └── CMakeLists.txt
Download .txt
Showing preview only (411K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4674 symbols across 751 files)

FILE: examples/flowunit/c++/example.cc
  function MODELBOX_FLOWUNIT (line 61) | MODELBOX_FLOWUNIT(ExampleFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 78) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: examples/flowunit/c++/example.h
  function class (line 29) | class ExampleFlowUnit : public modelbox::FlowUnit {

FILE: examples/flowunit/plugin/data_source_parser/driver_desc.cc
  function CreateDriverFactory (line 22) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 28) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 35) | modelbox::Status DriverInit() {
  function DriverFini (line 40) | void DriverFini() {

FILE: examples/flowunit/plugin/data_source_parser/example.h
  function class (line 28) | class ExampleSourceParser : public modelbox::DataSourceParserPlugin {
  function class (line 47) | class ExampleSourceParserFactory : public modelbox::DriverFactory {

FILE: examples/flowunit/plugin/output_broker/driver_desc.cc
  function CreateDriverFactory (line 22) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 28) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 35) | modelbox::Status DriverInit() {
  function DriverFini (line 40) | void DriverFini() {

FILE: examples/flowunit/plugin/output_broker/example.h
  function class (line 28) | class ExampleOutputBroker : public modelbox::OutputBrokerPlugin {
  function class (line 53) | class ExampleOutputBrokerFactory : public modelbox::DriverFactory {

FILE: examples/flowunit/python/example.py
  class ExampleFlowUnit (line 21) | class ExampleFlowUnit(modelbox.FlowUnit):
    method __init__ (line 23) | def __init__(self):
    method open (line 26) | def open(self, config):
    method process (line 30) | def process(self, data_context):
    method close (line 45) | def close(self):
    method data_pre (line 49) | def data_pre(self, data_context):
    method data_post (line 53) | def data_post(self, data_context):

FILE: examples/project/base/test/mock/mock_modelbox.cc
  type modelbox (line 25) | namespace modelbox {
    function Status (line 27) | Status MockModelBox::InitFlow(const std::string &name,
    function Status (line 33) | Status MockModelBox::BuildAndRun(const std::string &name,

FILE: examples/project/base/test/mock/mock_modelbox.h
  function namespace (line 26) | namespace modelbox {

FILE: examples/project/mnist-mindspore/src/flowunit/mnist_preprocess/mnist_preprocess.py
  class MnistPreprocess (line 23) | class MnistPreprocess(modelbox.FlowUnit):
    method __init__ (line 24) | def __init__(self):
    method open (line 27) | def open(self, config):
    method process (line 30) | def process(self, data_context):
    method close (line 60) | def close(self):
    method data_pre (line 63) | def data_pre(self, data_context):
    method data_post (line 66) | def data_post(self, data_context):
    method data_group_pre (line 69) | def data_group_pre(self, data_context):
    method data_group_post (line 72) | def data_group_post(self, data_context):

FILE: examples/project/mnist-mindspore/src/flowunit/mnist_response/mnist_response.py
  class MnistResponseFlowUnit (line 21) | class MnistResponseFlowUnit(modelbox.FlowUnit):
    method __init__ (line 22) | def __init__(self):
    method open (line 25) | def open(self, config):
    method process (line 28) | def process(self, data_context):
    method close (line 51) | def close(self):
    method data_pre (line 54) | def data_pre(self, data_context):
    method data_post (line 57) | def data_post(self, data_context):
    method data_group_pre (line 60) | def data_group_pre(self, data_context):
    method data_group_post (line 63) | def data_group_post(self, data_context):

FILE: examples/project/resize/src/flowunit/resize_flowunit/resize_flowunit.cc
  function MODELBOX_FLOWUNIT (line 124) | MODELBOX_FLOWUNIT(ResizeFlowUnitTest, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 138) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: examples/project/resize/test/flowunit/resize_flowuint_test.cc
  type modelbox (line 31) | namespace modelbox {
    class ResizeFlowUnitTest (line 32) | class ResizeFlowUnitTest : public testing::Test {
      method ResizeFlowUnitTest (line 34) | ResizeFlowUnitTest() : mock_modelbox_(std::make_shared<MockModelBox>...
      method TearDown (line 38) | virtual void TearDown() { mock_modelbox_->Stop(); }
      method GetMockModelbox (line 39) | std::shared_ptr<MockModelBox> GetMockModelbox() { return mock_modelb...
    function TEST_F (line 45) | TEST_F(ResizeFlowUnitTest, TestCase1) {
    function TEST_F (line 112) | TEST_F(ResizeFlowUnitTest, TestCase2) {

FILE: examples/service-plugin/example.cc
  class ToolCommandExample (line 20) | class ToolCommandExample : public modelbox::ToolCommand {
    method ToolCommandExample (line 22) | ToolCommandExample() {}
    method Run (line 25) | int Run(int argc, char *argv[]) {
    method GetHelp (line 30) | std::string GetHelp() {
    method GetCommandName (line 34) | std::string GetCommandName() { return "example"; }
    method GetCommandDesc (line 35) | std::string GetCommandDesc() { return "control server log"; }
  function CreatePlugin (line 40) | std::shared_ptr<modelbox::Plugin> CreatePlugin() {

FILE: examples/service-plugin/example.h
  function class (line 25) | class ExamplePlugin : public modelbox::Plugin {

FILE: src/demo/car_detection/flowunit/yolox_post/yolox_post.py
  class YoloXPost (line 23) | class YoloXPost(modelbox.FlowUnit):
    method __init__ (line 24) | def __init__(self):
    method open (line 27) | def open(self, config):
    method process (line 37) | def process(self, data_context):
    method close (line 68) | def close(self):
    method data_pre (line 71) | def data_pre(self, data_context):
    method data_post (line 74) | def data_post(self, data_context):

FILE: src/demo/car_detection/flowunit/yolox_post/yolox_utils.py
  function nms (line 32) | def nms(boxes, scores, nms_thr):
  function multiclass_nms_class_agnostic (line 62) | def multiclass_nms_class_agnostic(boxes, scores, nms_thr, score_thr):
  function decode_outputs (line 81) | def decode_outputs(outputs, img_size):
  function postprocess (line 104) | def postprocess(image_pred, input_shape, num_classes, conf_thre=0.3, nms...
  function draw_bbox (line 121) | def draw_bbox(image, results):

FILE: src/demo/emotion_detection/flowunit/collapse_emotion/collapse_emotion.py
  class CollapseEmotion (line 19) | class CollapseEmotion(modelbox.FlowUnit):
    method __init__ (line 20) | def __init__(self):
    method open (line 23) | def open(self, config):
    method process (line 27) | def process(self, data_context):
    method close (line 49) | def close(self):
    method data_pre (line 52) | def data_pre(self, data_context):
    method data_post (line 55) | def data_post(self, data_context):

FILE: src/demo/emotion_detection/flowunit/custom_resize/custom_resize.py
  class CustomResize (line 20) | class CustomResize(modelbox.FlowUnit):
    method __init__ (line 21) | def __init__(self):
    method open (line 24) | def open(self, config):
    method process (line 28) | def process(self, data_context):
    method close (line 59) | def close(self):
    method data_pre (line 62) | def data_pre(self, data_context):
    method data_post (line 65) | def data_post(self, data_context):

FILE: src/demo/emotion_detection/flowunit/draw_emotion/draw_emotion.py
  class DrawEmotion (line 20) | class DrawEmotion(modelbox.FlowUnit):
    method __init__ (line 21) | def __init__(self):
    method open (line 24) | def open(self, config):
    method process (line 27) | def process(self, data_context):
    method close (line 54) | def close(self):
    method data_pre (line 57) | def data_pre(self, data_context):
    method data_post (line 60) | def data_post(self, data_context):

FILE: src/demo/emotion_detection/flowunit/expand_box/expand_box.py
  class ExpandBox (line 19) | class ExpandBox(modelbox.FlowUnit):
    method __init__ (line 20) | def __init__(self):
    method open (line 23) | def open(self, config):
    method process (line 26) | def process(self, data_context):
    method close (line 55) | def close(self):
    method data_pre (line 58) | def data_pre(self, data_context):
    method data_post (line 61) | def data_post(self, data_context):

FILE: src/demo/emotion_detection/flowunit/face_post/face_post.py
  class FacePost (line 21) | class FacePost(modelbox.FlowUnit):
    method __init__ (line 22) | def __init__(self):
    method open (line 25) | def open(self, config):
    method process (line 29) | def process(self, data_context):
    method close (line 69) | def close(self):
    method data_pre (line 72) | def data_pre(self, data_context):
    method data_post (line 75) | def data_post(self, data_context):

FILE: src/demo/emotion_detection/flowunit/face_post/face_post_utils.py
  function get_priors (line 21) | def get_priors(image_size):
  function decode (line 40) | def decode(loc, priors, variances):
  function py_cpu_nms (line 48) | def py_cpu_nms(dets, thresh):
  function postprocess (line 77) | def postprocess(image_size, loc, conf, scale, resize):

FILE: src/demo/hello_world/flowunit/hello_world/hello_world.py
  function addTimestamp (line 21) | def addTimestamp(msg):
  class HelloWorld (line 25) | class HelloWorld(modelbox.FlowUnit):
    method __init__ (line 26) | def __init__(self):
    method open (line 29) | def open(self, config):
    method process (line 32) | def process(self, data_context):
    method close (line 48) | def close(self):
    method data_pre (line 51) | def data_pre(self, data_context):
    method data_post (line 54) | def data_post(self, data_context):

FILE: src/demo/hello_world/graph/test_hello_world.py
  class HttpConfig (line 19) | class HttpConfig:
    method __init__ (line 20) | def __init__(self, msg):

FILE: src/demo/mnist/flowunit/mnist_preprocess/mnist_preprocess.py
  class MnistPreprocess (line 23) | class MnistPreprocess(modelbox.FlowUnit):
    method __init__ (line 24) | def __init__(self):
    method open (line 27) | def open(self, config):
    method process (line 30) | def process(self, data_context):
    method close (line 60) | def close(self):
    method data_pre (line 63) | def data_pre(self, data_context):
    method data_post (line 66) | def data_post(self, data_context):

FILE: src/demo/mnist/flowunit/mnist_response/mnist_response.py
  class MnistResponseFlowUnit (line 21) | class MnistResponseFlowUnit(modelbox.FlowUnit):
    method __init__ (line 22) | def __init__(self):
    method open (line 25) | def open(self, config):
    method process (line 28) | def process(self, data_context):
    method close (line 51) | def close(self):
    method data_pre (line 54) | def data_pre(self, data_context):
    method data_post (line 57) | def data_post(self, data_context):

FILE: src/demo/mnist/graph/test_mnist.py
  function DisplayImage (line 33) | def DisplayImage(image_path):
  class HttpConfig (line 60) | class HttpConfig:
    method __init__ (line 61) | def __init__(self, img_base64_str):
  function DoMnistInfer (line 75) | def DoMnistInfer(host, img_path, PrintRequest =  False):
  function Extract (line 106) | def Extract(download):
  function main (line 115) | def main():

FILE: src/drivers/common/devices/device_stream/device_stream.cc
  type modelbox (line 20) | namespace modelbox {}

FILE: src/drivers/common/flowunit/driver_util/driver_util.cc
  type driverutil (line 19) | namespace driverutil {
    function string_masking (line 21) | std::string string_masking(const std::string &input) {

FILE: src/drivers/common/flowunit/driver_util/driver_util.h
  function namespace (line 26) | namespace driverutil {

FILE: src/drivers/common/flowunit/hw_components/iam_auth/iam_api.cc
  type modelbox (line 31) | namespace modelbox {
    function SetHttpConfig (line 39) | void SetHttpConfig(http_client_config &config, bool validate_certifica...
    function CreateRequestBody (line 50) | modelbox::Status CreateRequestBody(const AgencyInfo &agency_info,
    function GetSubjectTokenFromResponse (line 81) | modelbox::Status GetSubjectTokenFromResponse(
    function GetAgencyCredentialFromResponse (line 99) | modelbox::Status GetAgencyCredentialFromResponse(
    function SendHttpRequest (line 166) | modelbox::Status SendHttpRequest(const std::string &request_host,

FILE: src/drivers/common/flowunit/hw_components/iam_auth/iam_api.h
  function namespace (line 32) | namespace modelbox {

FILE: src/drivers/common/flowunit/hw_components/iam_auth/iam_auth.cc
  type modelbox (line 21) | namespace modelbox {

FILE: src/drivers/common/flowunit/hw_components/iam_auth/iam_auth.h
  function class (line 31) | class IAMAuth {

FILE: src/drivers/common/flowunit/hw_components/iam_auth/token_manager.cc
  type modelbox (line 23) | namespace modelbox {

FILE: src/drivers/common/flowunit/hw_components/iam_auth/token_manager.h
  function class (line 28) | class TokenManager {

FILE: src/drivers/common/flowunit/hw_components/obs_client/obs_client.cc
  type modelbox (line 27) | namespace modelbox {
    function obs_status (line 682) | obs_status ResponsePropertiesCallback(const obs_response_properties *p...
    function ListObjectCompleteCallback (line 687) | void ListObjectCompleteCallback(obs_status status,
    function obs_status (line 699) | obs_status ListObjectsCallback(int is_truncated, const char *next_marker,
    function obs_status (line 746) | obs_status GetPropertiesCallback(const obs_response_properties *proper...
    function GetObjectCompleteCallback (line 751) | void GetObjectCompleteCallback(obs_status status,
    function obs_status (line 773) | obs_status GetObjectDataCallback(int buffer_size, const char *buffer,
    function PutBufferCompleteCallback (line 783) | void PutBufferCompleteCallback(obs_status status,
    function PutBufferDataCallback (line 790) | int PutBufferDataCallback(int buffer_size, char *buffer, void *callbac...
    function obs_status (line 813) | obs_status GetObjectSizeCallback(const obs_response_properties *proper...
    function GetObjectSizeCompleteCallback (line 820) | void GetObjectSizeCompleteCallback(obs_status status,
    function obs_status (line 827) | obs_status GetBufferCallback(int buffer_size, const char *buffer,
    function GetBufferCompleteCallback (line 844) | void GetBufferCompleteCallback(obs_status status,

FILE: src/drivers/common/flowunit/image_process/image_process.cc
  type imageprocess (line 23) | namespace imageprocess {
    function align_up (line 24) | int32_t align_up(int32_t num, int32_t align) {
    function RGBBytesCalc (line 34) | static size_t RGBBytesCalc(size_t pix_num) { return pix_num * 3; }
    function NVBytesCalc (line 36) | static size_t NVBytesCalc(size_t pix_num) { return pix_num * 3 / 2; }
    function GetImageBytes (line 44) | modelbox::Status GetImageBytes(const std::string &pix_fmt, size_t pix_...
    function GetImageBytes (line 56) | modelbox::Status GetImageBytes(const std::string &pix_fmt, int32_t width,
    function RGBWidthStrideCalc (line 61) | static int32_t RGBWidthStrideCalc(int32_t width) { return width * 3; }
    function NVWidthStrideCalc (line 63) | static int32_t NVWidthStrideCalc(int32_t width) { return width; }
    function GetWidthStride (line 71) | modelbox::Status GetWidthStride(const std::string &pix_fmt, int32_t wi...
    function RGBBytesCalcByStride (line 83) | static size_t RGBBytesCalcByStride(int32_t width_stride,
    function NVBytesCalcByStride (line 88) | static size_t NVBytesCalcByStride(int32_t width_stride, int32_t height...
    function GetImageBytesByStride (line 98) | modelbox::Status GetImageBytesByStride(const std::string &pix_fmt,
    function GetImgParam (line 112) | modelbox::Status GetImgParam(const std::shared_ptr<modelbox::Buffer> &...
    function CheckImageStride (line 144) | modelbox::Status CheckImageStride(const std::string &pix_fmt,
    function CheckRoiBoxVaild (line 180) | bool CheckRoiBoxVaild(const RoiBox *bbox, int32_t image_width,
    function InitDvppChannel (line 195) | modelbox::Status InitDvppChannel(
    function CreateImgDesc (line 224) | std::shared_ptr<acldvppPicDesc> CreateImgDesc(size_t img_size,
    function CreateImgDesc (line 247) | std::shared_ptr<acldvppPicDesc> CreateImgDesc(size_t img_size, void *i...
    function FillImgDescData (line 302) | modelbox::Status FillImgDescData(
    function SetOutImgMeta (line 333) | modelbox::Status SetOutImgMeta(std::shared_ptr<modelbox::Buffer> &out_...
    class DvppChanMgr (line 358) | class DvppChanMgr : public std::enable_shared_from_this<DvppChanMgr> {
      method Get (line 360) | std::shared_ptr<acldvppChannelDesc> Get(int32_t device_id) {
      method Put (line 403) | void Put(acldvppChannelDesc *desc, int32_t device_id) {
    function GetDvppChannel (line 427) | std::shared_ptr<acldvppChannelDesc> GetDvppChannel(int32_t device_id) {

FILE: src/drivers/common/flowunit/image_process/image_process.h
  type RoiBox (line 37) | typedef struct RoiBox {
  function class (line 41) | class ImageShape {
  function ImgDescDestroyFlag (line 96) | enum class ImgDescDestroyFlag { DESC_AND_BUFFER, DESC_ONLY, NONE };

FILE: src/drivers/common/flowunit/image_rotate/image_rotate_base.h
  function has_rotate_angle_ (line 48) | bool has_rotate_angle_{false};

FILE: src/drivers/common/flowunit/image_rotate/image_rotate_test_base.cc
  type modelbox (line 21) | namespace modelbox {
    function Status (line 27) | Status ImageRotateFlowUnitTest::AddMockFlowUnit() {

FILE: src/drivers/common/flowunit/image_rotate/image_rotate_test_base.h
  function class (line 37) | class ImageRotateFlowUnitTest : public testing::Test {

FILE: src/drivers/common/flowunit/inference/model_decrypt.cc
  type PrefixInfo (line 119) | struct PrefixInfo

FILE: src/drivers/common/flowunit/inference/model_decrypt.h
  function class (line 26) | class ModelDecryption {

FILE: src/drivers/common/flowunit/inference/model_decrypt_interface.h
  type PrefixInfo (line 30) | struct PrefixInfo {
  function class (line 39) | class IModelDecryptPlugin : public modelbox::Driver {

FILE: src/drivers/common/flowunit/mean/mean_flowunit_base.cc
  function BuildOutputBufferList (line 55) | bool BuildOutputBufferList(

FILE: src/drivers/common/flowunit/mean/mean_flowunit_base.h
  function class (line 29) | class MeanParams {
  function class (line 34) | class MeanFlowUnitBase : public modelbox::FlowUnit {

FILE: src/drivers/common/flowunit/normalize/normalize_flowunit_base.cc
  function BuildOutputBufferList (line 55) | bool BuildOutputBufferList(

FILE: src/drivers/common/flowunit/normalize/normalize_flowunit_base.h
  function class (line 29) | class NormalizeParams {
  function class (line 34) | class NormalizeFlowUnitBase : public modelbox::FlowUnit {

FILE: src/drivers/common/flowunit/safe_http/http_util.cc
  function SafeReply (line 7) | void SafeReply(const web::http::http_request &request,
  function SafeReply (line 21) | void SafeReply(const web::http::http_request &request,
  function SafeReply (line 36) | void SafeReply(const web::http::http_request &request,
  function GetSupportedMethods (line 53) | utility::string_t GetSupportedMethods() {
  function HandleError (line 70) | void HandleError(pplx::task<void> &t) {
  function HandleUnSupportMethod (line 78) | void HandleUnSupportMethod(const web::http::http_request &request) {
  function HandleHealthCheck (line 84) | void HandleHealthCheck(const web::http::http_request &request) {

FILE: src/drivers/common/flowunit/safe_http/http_util.h
  function class (line 40) | class HttpRequestLimiter {

FILE: src/drivers/common/flowunit/source_context/source_context.cc
  type modelbox (line 21) | namespace modelbox {
    function RetryStatus (line 52) | RetryStatus SourceContext::NeedRetry() {

FILE: src/drivers/common/flowunit/source_context/source_context.h
  function namespace (line 28) | namespace modelbox {
  function class (line 61) | class SourceContext {

FILE: src/drivers/common/flowunit/video_decode/ffmpeg_color_converter.h
  function class (line 30) | class FfmpegColorConverter {

FILE: src/drivers/common/flowunit/video_decode/video_decode_common.cc
  type videodecode (line 25) | namespace videodecode {
    function NV12BufferSize (line 27) | size_t NV12BufferSize(int32_t width, int32_t height) {
    function RGBBufferSize (line 31) | size_t RGBBufferSize(int32_t width, int32_t height) {
    function GetBufferSize (line 46) | modelbox::Status GetBufferSize(int32_t width, int32_t height,
    function UpdateStatsInfo (line 58) | void UpdateStatsInfo(std::shared_ptr<modelbox::DataContext> &data_ctx,...

FILE: src/drivers/common/flowunit/video_decode/video_decode_common.h
  function namespace (line 35) | namespace videodecode {

FILE: src/drivers/common/libs/file_requester/file_requester.cc
  type modelbox (line 28) | namespace modelbox {
    function Status (line 54) | Status FileRequester::Init() {
    function Status (line 76) | Status FileRequester::RegisterUrlHandler(
    function Status (line 99) | Status FileRequester::DeregisterUrl(const std::string &relative_url) {

FILE: src/drivers/common/libs/fuse/modelbox_fuse.cc
  type modelbox (line 30) | namespace modelbox {
    function SplitPath (line 32) | std::list<std::string> SplitPath(const std::string &s, char delim) {
    type fuse_conn_info (line 72) | struct fuse_conn_info
    type stat (line 83) | struct stat
    type statvfs (line 91) | struct statvfs
    type fuse_file_info (line 104) | struct fuse_file_info
    type fuse_file_info (line 109) | struct fuse_file_info
    type fuse_file_info (line 115) | struct fuse_file_info
    type fuse_file_info (line 123) | struct fuse_file_info
    type fuse_file_info (line 128) | struct fuse_file_info
    type fuse_file_info (line 133) | struct fuse_file_info
    type fuse_file_info (line 138) | struct fuse_file_info
    type fuse_file_info (line 144) | struct fuse_file_info
    type fuse_file_info (line 149) | struct fuse_file_info
    type fuse_file_info (line 152) | struct fuse_file_info
    function ModelBoxFuse (line 156) | ModelBoxFuse *ModelBoxFuseOperation::CurrentModleBoxFuse() {
    function Status (line 184) | Status ModelBoxFuse::InitLowLevelFuse() {
    function Status (line 236) | Status ModelBoxFuse::AddFuseFile(
    function Status (line 259) | Status ModelBoxFuse::RmvFuseFile(const std::string &path) {
    type fuse_conn_info (line 282) | struct fuse_conn_info
    type stat (line 284) | struct stat
    type statvfs (line 310) | struct statvfs
    type stat (line 350) | struct stat
    type fuse_file_info (line 364) | struct fuse_file_info
    type fuse_file_info (line 376) | struct fuse_file_info
    type fuse_file_info (line 383) | struct fuse_file_info
    type stat (line 387) | struct stat
    type stat (line 402) | struct stat
    type fuse_file_info (line 424) | struct fuse_file_info
    type fuse_file_info (line 429) | struct fuse_file_info
    type fuse_file_info (line 467) | struct fuse_file_info
    type fuse_file_info (line 476) | struct fuse_file_info
    type fuse_file_info (line 482) | struct fuse_file_info
    type fuse_file_info (line 488) | struct fuse_file_info
    type fuse_file_info (line 493) | struct fuse_file_info
    function Status (line 498) | Status ModelBoxFuse::Run() {
    type stat (line 523) | struct stat
    type timespec (line 524) | struct timespec
    type stat (line 568) | struct stat
    type stat (line 584) | struct stat
    type stat (line 589) | struct stat

FILE: src/drivers/common/libs/fuse/modelbox_fuse_test.cc
  type modelbox (line 37) | namespace modelbox {
    class ModelBoxFuseTest (line 41) | class ModelBoxFuseTest : public testing::Test {
      method ModelBoxFuseTest (line 43) | ModelBoxFuseTest() : driver_flow_(std::make_shared<MockFlow>()) {}
      method SetUp (line 46) | void SetUp() override {
      method TearDown (line 51) | void TearDown() override { driver_flow_ = nullptr; }
    function Status (line 59) | Status ModelBoxFuseTest::AddMockFlowUnit() { return STATUS_OK; }
    class MockFuseFile (line 61) | class MockFuseFile : public modelbox::ModelBoxFuseFile {
      method Open (line 66) | int Open(const std::string &path) override { return 0; }
      method Release (line 67) | int Release() override { return 0; }
      method Read (line 68) | int Read(char *buff, size_t size, off_t off) override {
      method Write (line 75) | int Write(const char *buff, size_t size, off_t off) override { retur...
      method FSync (line 76) | int FSync(int isdatasync) override { return 0; }
      method Flush (line 77) | int Flush() override { return 0; }
      method FileSize (line 78) | int FileSize() { return msg.length(); }
      method GetMsg (line 79) | std::string GetMsg() { return msg; }
    class MockFuseInode (line 82) | class MockFuseInode : public modelbox::ModelBoxFileInode {
      method MockFuseInode (line 84) | MockFuseInode(const std::string &path) { path_ = path; }
      method FillStat (line 87) | int FillStat(struct stat *stat) override {
      method CreateFile (line 93) | std::shared_ptr<modelbox::ModelBoxFuseFile> CreateFile() override {
      method GetPath (line 97) | std::string GetPath() override { return path_; }
    function TEST_F (line 103) | TEST_F(ModelBoxFuseTest, FuseStat) {
    function TEST_F (line 127) | TEST_F(ModelBoxFuseTest, FuseMountCheckFile) {
    function TEST_F (line 188) | TEST_F(ModelBoxFuseTest, FileOpen) {

FILE: src/drivers/common/libs/include/modelbox/drivers/common/file_requester.h
  function namespace (line 31) | namespace modelbox {

FILE: src/drivers/common/libs/include/modelbox/drivers/common/modelbox_fuse.h
  function namespace (line 40) | namespace modelbox {
  function class (line 159) | class ModelBoxDirInode : public ModelBoxInode {
  function class (line 191) | class ModelBoxFileInode : public ModelBoxInode {
  function class (line 223) | class ModelBoxDEntry : public std::enable_shared_from_this<ModelBoxDEntr...
  type fuse_conn_info (line 391) | struct fuse_conn_info
  type stat (line 393) | struct stat
  type statvfs (line 395) | struct statvfs
  type fuse_file_info (line 397) | struct fuse_file_info
  type fuse_file_info (line 398) | struct fuse_file_info
  type fuse_file_info (line 400) | struct fuse_file_info
  type fuse_file_info (line 401) | struct fuse_file_info
  type fuse_file_info (line 402) | struct fuse_file_info
  type fuse_file_info (line 403) | struct fuse_file_info
  type fuse_file_info (line 405) | struct fuse_file_info
  type fuse_file_info (line 407) | struct fuse_file_info
  type fuse_file_info (line 408) | struct fuse_file_info
  type fuse_file_info (line 409) | struct fuse_file_info
  type stat (line 414) | struct stat
  type fuse_chan (line 415) | struct fuse_chan
  type fuse (line 416) | struct fuse
  function is_running_ (line 417) | bool is_running_{false};
  function class (line 423) | class ModelBoxFuseOperation {

FILE: src/drivers/common/python/modelbox_api/modelbox_api.cc
  type pybind11::detail::npy_format_descriptor<modelbox::Float16> (line 46) | struct pybind11::detail::npy_format_descriptor<modelbox::Float16> {
    method dtype (line 47) | static pybind11::dtype dtype() {
    method format (line 52) | static std::string format() {
    method name (line 58) | static constexpr auto name() -> pybind11::detail::descr<7> {
  type modelbox (line 63) | namespace modelbox {
    class NumpyInfo (line 65) | class NumpyInfo {
      method NumpyInfo (line 67) | NumpyInfo(ssize_t itemsize, const std::string &format, void *ptr,
      method NumpyInfo (line 80) | NumpyInfo(const NumpyInfo &obj) {
      method Type (line 91) | modelbox::ModelBoxDataType Type() const { return dtype_; }
      method Shape (line 92) | std::vector<ssize_t> Shape() const { return shape_; }
      method Strides (line 93) | std::vector<ssize_t> Strides() const { return strides_; }
      method ItemSize (line 95) | std::size_t ItemSize() const { return itemsize_; }
    function DataSet (line 106) | bool DataSet(DataType &data, const std::string &key, py::object set_obj,
    function DataGet (line 126) | bool DataGet(std::size_t hash_code, void *value, py::object &ret) {
    function SetAttributes (line 135) | bool SetAttributes(DataType &context, const std::string &key,
    function GetAttributes (line 176) | bool GetAttributes(void *value, std::size_t value_type,
    function BufferSetAttributes (line 231) | void BufferSetAttributes(Buffer &buffer, const std::string &key,
    function BufferGetAttributes (line 301) | py::object BufferGetAttributes(Buffer &buffer, const std::string &key) {
    function ConfigSet (line 327) | bool ConfigSet(Configuration &config, const std::string &key,
    function ConfigurationSetAttributes (line 350) | void ConfigurationSetAttributes(Configuration &config, const std::stri...
    function DataContextSetAttributes (line 364) | void DataContextSetAttributes(DataContext &data_context, const std::st...
    function DataContextGetAttributes (line 373) | py::object DataContextGetAttributes(DataContext &data_context,
    function SessionContextSetAttributes (line 407) | void SessionContextSetAttributes(SessionContext &session_context,
    function SessionContextGetAttributes (line 436) | py::object SessionContextGetAttributes(SessionContext &session_context,
    function ModelboxPyApiSetUpLog (line 450) | void ModelboxPyApiSetUpLog(pybind11::module &m) {
    function ModelboxPyApiSetUpLogLevel (line 460) | void ModelboxPyApiSetUpLogLevel(pybind11::handle &h) {
    function ModelboxPyApiSetUpStatus (line 471) | void ModelboxPyApiSetUpStatus(pybind11::module &m) {
    function ModelboxPyApiSetUpConfiguration (line 524) | void ModelboxPyApiSetUpConfiguration(pybind11::module &m) {
    function BufferToPyRawBuffer (line 550) | py::array BufferToPyRawBuffer(modelbox::Buffer &buffer) {
    function BufferToPyArrayObject (line 594) | py::array BufferToPyArrayObject(modelbox::Buffer &buffer) {
    function BufferToPyString (line 598) | py::object BufferToPyString(modelbox::Buffer &buffer) {
    function BufferToPyObject (line 616) | py::object BufferToPyObject(modelbox::Buffer &buffer) {
    function StrToBuffer (line 633) | void StrToBuffer(const std::shared_ptr<Buffer> &buffer,
    function ListToBuffer (line 641) | void ListToBuffer(const std::shared_ptr<Buffer> &buffer, const py::lis...
    function ModelboxPyApiSetUpDevice (line 677) | void ModelboxPyApiSetUpDevice(pybind11::module &m) {
    function ModelboxPyApiSetUpDataType (line 685) | void ModelboxPyApiSetUpDataType(pybind11::handle &h) {
    function ModelboxPyApiSetUpBufferDefBuffer (line 702) | py::buffer_info ModelboxPyApiSetUpBufferDefBuffer(Buffer &buffer) {
    function ModelboxPyApiSetUpBuffer (line 734) | void ModelboxPyApiSetUpBuffer(pybind11::module &m) {
    function ModelboxPyApiSetUpBufferList (line 811) | void ModelboxPyApiSetUpBufferList(pybind11::module &m) {
    function ModelBoxPyApiSetUpFlowUnitEvent (line 879) | void ModelBoxPyApiSetUpFlowUnitEvent(pybind11::module &m) {
    function ModelboxPyApiSetUpDataMeta (line 920) | void ModelboxPyApiSetUpDataMeta(pybind11::module &m) {
    function ModelboxPyApiSetUpSessionContext (line 954) | void ModelboxPyApiSetUpSessionContext(pybind11::module &m) {
    function ModelboxPyApiSetUpDataContext (line 1000) | void ModelboxPyApiSetUpDataContext(pybind11::module &m) {
    function ModelboxPyApiSetUpGeneric (line 1065) | void ModelboxPyApiSetUpGeneric(pybind11::module &m) {
    class PyFlowUnit (line 1072) | class PyFlowUnit : public modelbox::FlowUnit {
      method Status (line 1075) | Status Open(const std::shared_ptr<Configuration> &copnfigure) overri...
      method Status (line 1079) | Status Close() override { PYBIND11_OVERLOAD_PURE(Status, FlowUnit, C...
      method Status (line 1081) | Status Process(std::shared_ptr<DataContext> data_ctx) override {
      method Status (line 1085) | Status DataPre(std::shared_ptr<DataContext> data_ctx) override {
      method Status (line 1089) | Status DataPost(std::shared_ptr<DataContext> data_ctx) override {
      method Status (line 1093) | Status DataGroupPre(std::shared_ptr<DataContext> data_ctx) override {
      method Status (line 1097) | Status DataGroupPost(std::shared_ptr<DataContext> data_ctx) override {
      method GetBindDevice (line 1101) | std::shared_ptr<Device> GetBindDevice() {
      method CreateExternalData (line 1105) | std::shared_ptr<ExternalData> CreateExternalData() const {
    function ModelboxPyApiSetUpFlowUnit (line 1111) | void ModelboxPyApiSetUpFlowUnit(pybind11::module &m) {
    function ModelboxPyApiSetUpEngine (line 1136) | void ModelboxPyApiSetUpEngine(pybind11::module &m) {
    function ModelboxPyApiSetUpDataHandler (line 1189) | void ModelboxPyApiSetUpDataHandler(pybind11::module &m) {
    function ModelboxPyApiSetUpFlowGraphDesc (line 1240) | void ModelboxPyApiSetUpFlowGraphDesc(pybind11::module &m) {
    function ModelboxPyApiSetUpFlowNodeDesc (line 1341) | void ModelboxPyApiSetUpFlowNodeDesc(pybind11::module &m) {
    function ModelboxPyApiSetUpFlowPortDesc (line 1359) | void ModelboxPyApiSetUpFlowPortDesc(pybind11::module &m) {
    function ModelboxPyApiSetUpFlowStreamIO (line 1367) | void ModelboxPyApiSetUpFlowStreamIO(pybind11::module &m) {
    function ModelBoxPyApiSetUpExternalDataMapSimple (line 1453) | void ModelBoxPyApiSetUpExternalDataMapSimple(pybind11::module &m) {
    function ModelboxPyApiSetUpModel (line 1479) | void ModelboxPyApiSetUpModel(pybind11::module &m) {

FILE: src/drivers/common/python/modelbox_api/modelbox_api.h
  function namespace (line 26) | namespace modelbox {

FILE: src/drivers/common/python/modelbox_api/python_common.cc
  type modelbox (line 30) | namespace modelbox {
    function BuildTypeToNumpyType (line 37) | void BuildTypeToNumpyType() {
    function FormatStrFromType (line 66) | std::string FormatStrFromType(const modelbox::ModelBoxDataType &type) {
    function TypeFromFormatStr (line 79) | modelbox::ModelBoxDataType TypeFromFormatStr(const std::string &format) {
    function Status (line 90) | Status PyBufferToBuffer(const std::shared_ptr<Buffer> &buffer,

FILE: src/drivers/common/python/modelbox_api/python_common.h
  function namespace (line 24) | namespace modelbox {

FILE: src/drivers/common/python/modelbox_api/python_flow.cc
  type modelbox (line 21) | namespace modelbox {

FILE: src/drivers/common/python/modelbox_api/python_flow.h
  function namespace (line 26) | namespace modelbox {

FILE: src/drivers/common/python/modelbox_api/python_flowunit.h
  function namespace (line 26) | namespace modelbox {

FILE: src/drivers/common/python/modelbox_api/python_log.cc
  type modelbox (line 8) | namespace modelbox {
    function FlowUnitPythonLog (line 24) | FlowUnitPythonLog& FlowUnitPythonLog::Instance() {

FILE: src/drivers/common/python/modelbox_api/python_log.h
  function namespace (line 26) | namespace modelbox {

FILE: src/drivers/common/python/modelbox_api/python_model.cc
  type modelbox (line 26) | namespace modelbox {

FILE: src/drivers/common/python/modelbox_api/python_model.h
  function namespace (line 26) | namespace modelbox {

FILE: src/drivers/devices/ascend/core/ascend_memory.cc
  type modelbox (line 21) | namespace modelbox {
    function AscendReleaseMemoryTask (line 30) | void AscendReleaseMemoryTask(void *mem_list_ptr) {
    function AscendReleaseMemoryAsync (line 37) | void AscendReleaseMemoryAsync(void *mem_list_ptr) {
    function Status (line 51) | Status AscendStream::Sync() const {
    function Status (line 69) | Status AscendStream::Bind(
    function Status (line 98) | Status AscendStream::Init() {
    function Status (line 253) | Status AscendStreamPool::Free(AscendStream *&stream) {
    function Status (line 268) | Status AscendMemoryPool::Init() {
    function Status (line 310) | Status AscendMemory::BindStream(
    function Status (line 335) | Status AscendMemory::DetachStream() {
    function Status (line 349) | Status AscendMemory::CopyExtraMetaTo(
    function Status (line 360) | Status AscendMemory::CombineExtraMeta(
    function Status (line 404) | Status AscendMemoryManager::Init() { return STATUS_OK; }
    function Status (line 472) | Status AscendMemoryManager::Copy(void *dest, size_t dest_size,
    function Status (line 505) | Status AscendMemoryManager::GetDeviceMemUsage(size_t *free,
    function Status (line 528) | Status AscendMemoryManager::DeviceMemoryCopy(
    function Status (line 601) | Status AscendMemoryManager::SetupAscendStream(

FILE: src/drivers/devices/ascend/core/device_ascend.cc
  type modelbox (line 30) | namespace modelbox {
    function Status (line 40) | Status Ascend::DeviceExecute(const DevExecuteCallBack &fun, int32_t pr...
    function Status (line 116) | Status AscendFlowUnit::Process(

FILE: src/drivers/devices/ascend/core/driver_desc.cc
  function CreateDriverFactory (line 28) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 34) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 41) | modelbox::Status DriverInit() {
  function DriverFini (line 52) | void DriverFini() {

FILE: src/drivers/devices/ascend/core/include/modelbox/device/ascend/ascend_memory.h
  function IsInDevice (line 62) | inline bool IsInDevice(const std::string &device_id) const {
  function IsInDevice (line 67) | inline bool IsInDevice(int32_t device_id) const {
  function Status (line 73) | Status Sync() const;
  function device_id_ (line 121) | int32_t device_id_{0}
  function callback_thread_id_ (line 123) | uint64_t callback_thread_id_{0}
  function is_exit_ (line 124) | bool is_exit_{false};

FILE: src/drivers/devices/ascend/core/include/modelbox/device/ascend/device_ascend.h
  function namespace (line 25) | namespace modelbox {

FILE: src/drivers/devices/ascend/flowunit/crop/crop_flowunit.cc
  function MODELBOX_FLOWUNIT (line 256) | MODELBOX_FLOWUNIT(CropFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 267) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/ascend/flowunit/crop/crop_flowunit.h
  function class (line 59) | class CropFlowUnit : public modelbox::AscendFlowUnit {

FILE: src/drivers/devices/ascend/flowunit/crop/crop_flowunit_test.cc
  type modelbox (line 37) | namespace modelbox {
    class CropFlowUnitTest (line 38) | class CropFlowUnitTest : public testing::Test {
      method CropFlowUnitTest (line 40) | CropFlowUnitTest() : driver_flow_(std::make_shared<MockFlow>()) {}
      method SetUp (line 43) | void SetUp() override {
      method TearDown (line 53) | void TearDown() override {
    function TEST_F (line 75) | TEST_F(CropFlowUnitTest, RunUnit) {

FILE: src/drivers/devices/ascend/flowunit/inference/atc_inference.h
  function device_id_ (line 83) | int32_t device_id_{0}
  function model_id_ (line 89) | uint32_t model_id_{0}

FILE: src/drivers/devices/ascend/flowunit/inference/atc_inference_flowunit.h
  function class (line 33) | class AtcInferenceFlowUnit : public modelbox::AscendFlowUnit {
  function class (line 54) | class AtcInferenceFlowUnitDesc : public modelbox::FlowUnitDesc {
  function class (line 66) | class AtcInferenceFlowUnitFactory : public modelbox::FlowUnitFactory {

FILE: src/drivers/devices/ascend/flowunit/inference/atc_inference_flowunit_test.cc
  type modelbox (line 34) | namespace modelbox {
    class InferenceAscendFlowUnitTest (line 35) | class InferenceAscendFlowUnitTest : public testing::Test {
      method InferenceAscendFlowUnitTest (line 37) | InferenceAscendFlowUnitTest() : driver_flow_(std::make_shared<MockFl...
      method SetUp (line 40) | void SetUp() override {
      method TearDown (line 70) | void TearDown() override {
    function Status (line 97) | Status InferenceAscendFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 191) | TEST_F(InferenceAscendFlowUnitTest, RunUnit) {
    function TEST_F (line 213) | TEST_F(InferenceAscendFlowUnitTest, RunUnitEncrypt) {

FILE: src/drivers/devices/ascend/flowunit/inference/flowunit_desc.cc
  function CreateDriverFactory (line 30) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 36) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 43) | modelbox::Status DriverInit() {
  function DriverFini (line 48) | void DriverFini() {

FILE: src/drivers/devices/ascend/flowunit/mindspore_lite_inference/flowunit_desc.cc
  function CreateDriverFactory (line 30) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 36) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 45) | modelbox::Status DriverInit() {
  function DriverFini (line 50) | void DriverFini() {

FILE: src/drivers/devices/ascend/flowunit/mindspore_lite_inference/mindspore_ascend_inference_flowunit.h
  function class (line 27) | class MindSporeInferenceAsendFlowUnit : public modelbox::AscendFlowUnit {
  function class (line 48) | class MindSporeInferenceAsendFlowUnitFactory

FILE: src/drivers/devices/ascend/flowunit/mindspore_lite_inference/mindspore_lite_ascend_inference_flowunit_test.cc
  type modelbox (line 35) | namespace modelbox {
    class InferenceMindSporeLiteAscendFlowUnitTest (line 36) | class InferenceMindSporeLiteAscendFlowUnitTest : public testing::Test {
      method InferenceMindSporeLiteAscendFlowUnitTest (line 38) | InferenceMindSporeLiteAscendFlowUnitTest()
      method SetUp (line 42) | virtual void SetUp() {
      method TearDown (line 71) | virtual void TearDown() {
    function TEST_F (line 94) | TEST_F(InferenceMindSporeLiteAscendFlowUnitTest, RunUnit) {
    function TEST_F (line 116) | TEST_F(InferenceMindSporeLiteAscendFlowUnitTest, RunUnitEncrypt) {

FILE: src/drivers/devices/ascend/flowunit/padding/padding_flowunit.cc
  function SetInImageSize (line 211) | modelbox::Status SetInImageSize(std::shared_ptr<modelbox::Buffer> &in_im...
  function MODELBOX_FLOWUNIT (line 458) | MODELBOX_FLOWUNIT(PaddingFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 478) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/ascend/flowunit/padding/padding_flowunit.h
  type class (line 50) | enum class
  function class (line 51) | class Rect {
  function class (line 59) | class ImageSize {
  function class (line 68) | class ResizeCropParam {
  function need_scale_ (line 127) | bool need_scale_{true};

FILE: src/drivers/devices/ascend/flowunit/padding/padding_flowunit_test.cc
  type modelbox (line 37) | namespace modelbox {
    function Status (line 39) | Status yuvI420ToNV12(uint8_t *in_data, int32_t w, int32_t h,
    class AscendPaddingFlowUnitTest (line 59) | class AscendPaddingFlowUnitTest : public testing::Test {
      method AscendPaddingFlowUnitTest (line 61) | AscendPaddingFlowUnitTest() : driver_flow_(std::make_shared<MockFlow...
      method SetUp (line 64) | void SetUp() override {
      method TearDown (line 74) | void TearDown() override { driver_flow_ = nullptr; }
    function TEST_F (line 89) | TEST_F(AscendPaddingFlowUnitTest, TestPaddingImage) {

FILE: src/drivers/devices/ascend/flowunit/resize/resize_flowunit.cc
  function MODELBOX_FLOWUNIT (line 207) | MODELBOX_FLOWUNIT(ResizeFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 221) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/ascend/flowunit/resize/resize_flowunit.h
  function class (line 53) | class ResizeFlowUnit : public modelbox::AscendFlowUnit {

FILE: src/drivers/devices/ascend/flowunit/resize/resize_flowunit_test.cc
  type modelbox (line 37) | namespace modelbox {
    class ResizeFlowUnitTest (line 38) | class ResizeFlowUnitTest : public testing::Test {
      method ResizeFlowUnitTest (line 40) | ResizeFlowUnitTest() : driver_flow_(std::make_shared<MockFlow>()) {}
      method SetUp (line 43) | void SetUp() override {
      method TearDown (line 53) | void TearDown() override { driver_flow_ = nullptr; }
    function TEST_F (line 68) | TEST_F(ResizeFlowUnitTest, RunUnit) {

FILE: src/drivers/devices/ascend/flowunit/video_decoder/ascend_video_decode.cc
  function DestroyStreamDesc (line 26) | void DestroyStreamDesc(acldvppStreamDesc *stream_desc) {
  function DestroyPicDesc (line 42) | void DestroyPicDesc(acldvppPicDesc *pic_desc) {

FILE: src/drivers/devices/ascend/flowunit/video_decoder/ascend_video_decode.h
  function pthread_t (line 45) | pthread_t GetThreadId() { return threadId_; }
  function pthread_t (line 50) | pthread_t threadId_{0}
  function class (line 57) | class DvppPacket {
  function acldvppStreamDesc (line 66) | acldvppStreamDesc *GetStreamDesc() { return stream_desc_; }
  function SetStreamDesc (line 67) | void SetStreamDesc(acldvppStreamDesc *stream_desc) {
  function GetPts (line 71) | int32_t GetPts() { return pts_; }
  function GetWidth (line 73) | int32_t GetWidth() { return width_; }
  function GetHeight (line 74) | int32_t GetHeight() { return height_; }
  function IsEnd (line 75) | bool IsEnd() { return is_end_; }
  function SetEnd (line 76) | void SetEnd(bool is_end) { is_end_ = is_end; }
  function width_ (line 80) | int32_t width_{0}
  function height_ (line 81) | int32_t height_{0}
  function pts_ (line 82) | int32_t pts_{0}
  function is_end_ (line 83) | bool is_end_{false};
  function class (line 87) | class DvppFrame {
  function class (line 98) | class DvppVideoDecodeContext {
  function class (line 116) | class AscendVideoDecoder {

FILE: src/drivers/devices/ascend/flowunit/video_decoder/video_decoder_flowunit.cc
  function MODELBOX_FLOWUNIT (line 677) | MODELBOX_FLOWUNIT(VideoDecodeFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 690) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/ascend/flowunit/video_decoder/video_decoder_flowunit.h
  function class (line 90) | class VideoDecodeFlowUnit : public modelbox::FlowUnit {
  function format_ (line 153) | int32_t format_{0}
  function acldvppChannelDesc (line 154) | acldvppChannelDesc *dvpp_channel_desc_{nullptr};

FILE: src/drivers/devices/ascend/flowunit/video_decoder/video_decoder_flowunit_test.cc
  type modelbox (line 33) | namespace modelbox {
    class DvppVideoDecoderFlowUnitTest (line 34) | class DvppVideoDecoderFlowUnitTest : public testing::Test {
      method DvppVideoDecoderFlowUnitTest (line 36) | DvppVideoDecoderFlowUnitTest() = default;
      method SetUp (line 39) | void SetUp() override {
    function GetGraphToml (line 70) | std::string GetGraphToml(const std::string& device,
    function Status (line 106) | Status DvppVideoDecoderFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 223) | TEST_F(DvppVideoDecoderFlowUnitTest, ascendDecoderRgbTest) {

FILE: src/drivers/devices/cpu/core/cpu_memory.cc
  type modelbox (line 24) | namespace modelbox {
    function Status (line 35) | Status CpuMemory::ReadFrom(
    function Status (line 49) | Status CpuMemory::Verify() const {
    function Status (line 66) | Status CpuMemoryPool::Init() {
    function Status (line 102) | Status CpuMemoryManager::Init() {
    function Status (line 169) | Status CpuMemoryManager::Copy(void *dest, size_t dest_size,
    function Status (line 182) | Status CpuMemoryManager::GetDeviceMemUsage(size_t *free, size_t *total...
    function Status (line 186) | Status CpuMemoryManager::DeviceMemoryCopy(

FILE: src/drivers/devices/cpu/core/device_cpu.cc
  type modelbox (line 24) | namespace modelbox {
    function Status (line 32) | Status CPU::DeviceExecute(const DevExecuteCallBack &fun, int32_t prior...

FILE: src/drivers/devices/cpu/core/driver_desc.cc
  function CreateDriverFactory (line 29) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 35) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 42) | modelbox::Status DriverInit() {
  function DriverFini (line 53) | void DriverFini() {

FILE: src/drivers/devices/cpu/core/include/modelbox/device/cpu/cpu_memory.h
  function namespace (line 26) | namespace modelbox {

FILE: src/drivers/devices/cpu/core/include/modelbox/device/cpu/device_cpu.h
  function namespace (line 25) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/base64_decoder/base64_decoder.cc
  function MODELBOX_FLOWUNIT (line 141) | MODELBOX_FLOWUNIT(Base64DecoderFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 152) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/base64_decoder/base64_decoder.h
  function class (line 43) | class Base64DecoderFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/cpu/flowunit/base64_decoder/base64_decoder_test.cc
  type modelbox (line 31) | namespace modelbox {
    class Base64DecoderFlowUnitTest (line 32) | class Base64DecoderFlowUnitTest : public testing::Test {
      method Base64DecoderFlowUnitTest (line 34) | Base64DecoderFlowUnitTest()
      method SetUp (line 38) | void SetUp() override {}
      method TearDown (line 40) | void TearDown() override { driver_flow_ = nullptr; }
    function TEST_F (line 55) | TEST_F(Base64DecoderFlowUnitTest, DecodeTest) {
    function TEST_F (line 121) | TEST_F(Base64DecoderFlowUnitTest, JsonDecodeTest) {

FILE: src/drivers/devices/cpu/flowunit/color_transpose/color_transpose_flowunit.cc
  function MODELBOX_FLOWUNIT (line 123) | MODELBOX_FLOWUNIT(ColorTransposeFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 132) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/color_transpose/color_transpose_flowunit.h
  function class (line 47) | class ColorTransposeFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/cpu/flowunit/common_yolobox/flowunit_desc.cc
  function CreateDriverFactory (line 27) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 33) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 41) | modelbox::Status DriverInit() {
  function DriverFini (line 46) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/common_yolobox/yolo_helper.h
  function class (line 30) | class YoloParam {
  function class (line 44) | class YoloHelper {

FILE: src/drivers/devices/cpu/flowunit/common_yolobox/yolobox_flowuint_test.cc
  type modelbox (line 14) | namespace modelbox {
    class CommonYoloboxFlowUintTest (line 15) | class CommonYoloboxFlowUintTest : public testing::Test {
      method CommonYoloboxFlowUintTest (line 17) | CommonYoloboxFlowUintTest() : driver_flow_(std::make_shared<MockFlow...
      method SetUp (line 20) | void SetUp() override {
      method TearDown (line 31) | void TearDown() override {
      method GetDriverFlow (line 39) | std::shared_ptr<MockFlow> GetDriverFlow() { return driver_flow_; }
      method Status (line 51) | Status AddMockFlowUnit() { return STATUS_OK; }
    function TEST_F (line 61) | TEST_F(CommonYoloboxFlowUintTest, Process) {

FILE: src/drivers/devices/cpu/flowunit/common_yolobox/yolobox_flowunit.cc
  function Comp (line 147) | bool Comp(const BoundingBox &box1, const BoundingBox &box2) {
  function Overlap (line 151) | bool Overlap(const BoundingBox &box1, const BoundingBox &box2,

FILE: src/drivers/devices/cpu/flowunit/common_yolobox/yolobox_flowunit.h
  function class (line 33) | class BoundingBox {
  function class (line 68) | class YoloboxFlowUnit : public modelbox::FlowUnit {
  function class (line 98) | class YoloboxFlowUnitDesc : public modelbox::FlowUnitDesc {
  function class (line 104) | class YoloboxFlowUnitFactory : public modelbox::FlowUnitFactory {

FILE: src/drivers/devices/cpu/flowunit/cv_crop/cv_crop_flowunit.cc
  function MODELBOX_FLOWUNIT (line 141) | MODELBOX_FLOWUNIT(CVCropFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 152) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/cv_crop/cv_crop_flowunit.h
  function class (line 56) | class CVCropFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/cpu/flowunit/cv_crop/cv_crop_flowunit_test.cc
  type modelbox (line 36) | namespace modelbox {
    class CVCropFlowUnitTest (line 37) | class CVCropFlowUnitTest : public testing::Test {
      method CVCropFlowUnitTest (line 39) | CVCropFlowUnitTest() : driver_flow_(std::make_shared<MockFlow>()) {}
      method SetUp (line 42) | void SetUp() override {
      method TearDown (line 47) | void TearDown() override { driver_flow_ = nullptr; }
    type RoiBox (line 59) | struct RoiBox {
    function Status (line 63) | Status CVCropFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 230) | TEST_F(CVCropFlowUnitTest, InitUnit) {

FILE: src/drivers/devices/cpu/flowunit/data_source_generator/data_source_generator.cc
  function MODELBOX_FLOWUNIT (line 108) | MODELBOX_FLOWUNIT(DataSourceGeneratorFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 116) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/data_source_generator/data_source_generator.h
  function class (line 36) | class DataSourceGeneratorFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/cpu/flowunit/data_source_generator/data_source_generator_test.cc
  type modelbox (line 33) | namespace modelbox {
    class DataSourceGeneratorFlowUnitTest (line 35) | class DataSourceGeneratorFlowUnitTest : public testing::Test {
      method DataSourceGeneratorFlowUnitTest (line 37) | DataSourceGeneratorFlowUnitTest()
      method SetUp (line 41) | void SetUp() override { auto ret = AddMockFlowUnit(); }
      method TearDown (line 43) | void TearDown() override { driver_flow_ = nullptr; }
    function Status (line 80) | Status DataSourceGeneratorFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 109) | TEST_F(DataSourceGeneratorFlowUnitTest, UrlInputTest) {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/data_source_parser_flowunit.cc
  function MODELBOX_FLOWUNIT (line 181) | MODELBOX_FLOWUNIT(DataSourceParserFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 199) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/data_source_parser_flowunit.h
  function class (line 56) | class DataSourceParserFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/data_source_parser_flowunit_test.cc
  type modelbox (line 43) | namespace modelbox {
    class DataSourceParserFlowUnitTest (line 45) | class DataSourceParserFlowUnitTest : public testing::Test {
      method DataSourceParserFlowUnitTest (line 47) | DataSourceParserFlowUnitTest() : driver_flow_(std::make_shared<MockF...
      method SetUp (line 53) | void SetUp() override {
      method TearDown (line 62) | void TearDown() override {
      method GetMockKey (line 74) | void GetMockKey(std::string &key, std::string &cert) {
    function Status (line 137) | Status DataSourceParserFlowUnitTest::AddMockFlowUnit() {
    function Status (line 144) | Status DataSourceParserFlowUnitTest::AddMockUrl() {
    function Status (line 177) | Status DataSourceParserFlowUnitTest::AddMockVis() {
    function Status (line 204) | Status DataSourceParserFlowUnitTest::AddMockRestful() {
    function TEST_F (line 231) | TEST_F(DataSourceParserFlowUnitTest, UrlInputTest) {
    function TEST_F (line 252) | TEST_F(DataSourceParserFlowUnitTest, VisInputTest) {
    function TEST_F (line 311) | TEST_F(DataSourceParserFlowUnitTest, CredentialTest) {
    function TEST_F (line 332) | TEST_F(DataSourceParserFlowUnitTest, TokenTest) {
    function TEST_F (line 428) | TEST_F(DataSourceParserFlowUnitTest, RestfulInputTest) {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/obs_source_parser/driver_desc.cc
  function CreateDriverFactory (line 27) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 33) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 40) | modelbox::Status DriverInit() {
  function DriverFini (line 45) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/obs_source_parser/obs_file_handler.cc
  type modelbox (line 19) | namespace modelbox {
    function Status (line 21) | Status OBSFileHandler::Get(unsigned char *buff, size_t size, off_t off) {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/obs_source_parser/obs_file_handler.h
  function namespace (line 24) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/obs_source_parser/obs_source_parser.cc
  function RemoveFileCallback (line 234) | void RemoveFileCallback(const std::string &uri) {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/obs_source_parser/obs_source_parser.h
  type OBSDownloadInfo (line 32) | typedef struct tag_OBSDownloadInfo {
  function class (line 46) | class ObsSourceParser : public modelbox::DataSourceParserPlugin {
  function class (line 86) | class ObsSourceParserFactory : public modelbox::DriverFactory {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/obs_source_parser/obs_source_parser_test.cc
  type modelbox (line 36) | namespace modelbox {
    class DataSourceObsParserPluginTest (line 38) | class DataSourceObsParserPluginTest : public testing::Test {
      method DataSourceObsParserPluginTest (line 40) | DataSourceObsParserPluginTest()
      method SetUp (line 45) | void SetUp() override {
      method TearDown (line 50) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 112) | Status DataSourceObsParserPluginTest::AddMockFlowUnit() {
    function Status (line 117) | Status DataSourceObsParserPluginTest::AddMockObs() {
    function TEST_F (line 195) | TEST_F(DataSourceObsParserPluginTest, ObsInputTest) {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/restful_source_parser/driver_desc.cc
  function CreateDriverFactory (line 27) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 33) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 40) | modelbox::Status DriverInit() {
  function DriverFini (line 45) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/restful_source_parser/restful_source_parser.h
  type RestfulInputInfo (line 32) | typedef struct tag_RestfulInputInfo {
  function class (line 39) | class RestfulSourceParser : public modelbox::DataSourceParserPlugin {
  function class (line 68) | class RestfulSourceParserFactory : public modelbox::DriverFactory {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/url_source_parser/driver_desc.cc
  function CreateDriverFactory (line 27) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 33) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 40) | modelbox::Status DriverInit() {
  function DriverFini (line 45) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/url_source_parser/url_source_parser.h
  function class (line 28) | class UrlSourceParser : public modelbox::DataSourceParserPlugin {
  function class (line 53) | class UrlSourceParserFactory : public modelbox::DriverFactory {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_common/vcn_info.cc
  type modelbox (line 23) | namespace modelbox {
    function IsVcnInfoValid (line 24) | bool IsVcnInfoValid(const VcnInfo &info) {
    function GetVcnInfo (line 29) | modelbox::Status GetVcnInfo(modelbox::VcnInfo &vcn_info,
    function ReadConfVcnCommon (line 84) | void ReadConfVcnCommon(const std::shared_ptr<modelbox::Configuration> ...

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_common/vcn_info.h
  function namespace (line 26) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_restful_source_parser/driver_desc.cc
  function CreateDriverFactory (line 27) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 33) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 40) | modelbox::Status DriverInit() {
  function DriverFini (line 45) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_restful_source_parser/vcn_restful_client.cc
  type modelbox (line 21) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_restful_source_parser/vcn_restful_client.h
  function namespace (line 32) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_restful_source_parser/vcn_restful_source_parser.h
  function class (line 31) | class VcnRestfulSourceParser : public modelbox::DataSourceParserPlugin {
  function class (line 54) | class VcnRestfulSourceParserFactory : public modelbox::DriverFactory {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_restful_source_parser/vcn_restful_source_parser_test.cc
  type modelbox (line 22) | namespace modelbox {
    class DataSourceVcnRestfulParserPluginTest (line 23) | class DataSourceVcnRestfulParserPluginTest : public testing::Test {
      method DataSourceVcnRestfulParserPluginTest (line 25) | DataSourceVcnRestfulParserPluginTest()
      method SetUp (line 30) | void SetUp() override {
      method TearDown (line 35) | void TearDown() override { driver_flow_->Clear(); }
      method GetDriverFlow (line 36) | std::shared_ptr<DriverFlowTest> GetDriverFlow() { return driver_flow...
    function Status (line 99) | Status DataSourceVcnRestfulParserPluginTest::AddMockFlowUnit() {
    function Status (line 104) | Status DataSourceVcnRestfulParserPluginTest::AddMockVcn() {
    function TEST_F (line 182) | TEST_F(DataSourceVcnRestfulParserPluginTest, VcnInputTest) {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_restful_source_parser/vcn_restful_wrapper.cc
  type modelbox (line 37) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_restful_source_parser/vcn_restful_wrapper.h
  function namespace (line 30) | namespace modelbox {
  type REQ_METHOD (line 38) | typedef enum REQ_METHOD { REQ_GET, REQ_POST } REQ_METHOD;
  function class (line 51) | class VcnRestfulWrapper {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_restful_source_parser/vcn_restful_wrapper_mock_test.cc
  type modelbox (line 24) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_restful_source_parser/vcn_restful_wrapper_mock_test.h
  function namespace (line 24) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_source_parser/driver_desc.cc
  function CreateDriverFactory (line 27) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 33) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 41) | modelbox::Status DriverInit() {
  function DriverFini (line 46) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_source_parser/vcn_client.cc
  type modelbox (line 24) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_source_parser/vcn_client.h
  function namespace (line 29) | namespace modelbox {
  function class (line 157) | class VcnStream : public VcnStreamBase {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_source_parser/vcn_sdk_wrapper.cc
  type modelbox (line 22) | namespace modelbox {
    function IVS_INT32 (line 24) | IVS_INT32 VcnSdkWrapper::VcnSdkInit() { return IVS_SDK_Init(); }
    function IVS_INT32 (line 26) | IVS_INT32 VcnSdkWrapper::VcnSdkLogin(IVS_LOGIN_INFO *login_req_info,
    function IVS_INT32 (line 35) | IVS_INT32 VcnSdkWrapper::VcnSdkLogout(IVS_INT32 session_id) {
    function IVS_INT32 (line 40) | IVS_INT32 VcnSdkWrapper::VcnSdkGetUrl(
    function IVS_INT32 (line 55) | IVS_INT32 VcnSdkWrapper::VcnSdkCleanup() { return IVS_SDK_Cleanup(); }

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_source_parser/vcn_sdk_wrapper.h
  function namespace (line 32) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_source_parser/vcn_sdk_wrapper_mock_test.cc
  type modelbox (line 23) | namespace modelbox {
    function IVS_INT32 (line 25) | IVS_INT32 VcnSdkWrapperMock::VcnSdkInit() { return IVS_SUCCEED; }
    function IVS_INT32 (line 27) | IVS_INT32 VcnSdkWrapperMock::VcnSdkLogin(IVS_LOGIN_INFO *login_req_info,
    function IVS_INT32 (line 71) | IVS_INT32 VcnSdkWrapperMock::VcnSdkLogout(IVS_INT32 session_id) {
    function IVS_INT32 (line 80) | IVS_INT32 VcnSdkWrapperMock::VcnSdkGetUrl(
    function IVS_INT32 (line 109) | IVS_INT32 VcnSdkWrapperMock::VcnSdkCleanup() { return IVS_SUCCEED; }

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_source_parser/vcn_sdk_wrapper_mock_test.h
  function namespace (line 27) | namespace modelbox {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_source_parser/vcn_source_parser.h
  function class (line 30) | class VcnSourceParser : public modelbox::DataSourceParserPlugin {
  function class (line 54) | class VcnSourceParserFactory : public modelbox::DriverFactory {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vcn_source_parser/vcn_source_parser_test.cc
  type modelbox (line 39) | namespace modelbox {
    class DataSourceVcnParserPluginTest (line 41) | class DataSourceVcnParserPluginTest : public testing::Test {
      method DataSourceVcnParserPluginTest (line 43) | DataSourceVcnParserPluginTest()
      method SetUp (line 48) | virtual void SetUp() {
      method TearDown (line 53) | virtual void TearDown() { driver_flow_->Clear(); }
    function Status (line 115) | Status DataSourceVcnParserPluginTest::AddMockFlowUnit() {
    function Status (line 120) | Status DataSourceVcnParserPluginTest::AddMockVcn() {
    function TEST_F (line 197) | TEST_F(DataSourceVcnParserPluginTest, VcnInputTest) {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vis_source_parser/driver_desc.cc
  function CreateDriverFactory (line 27) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 33) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 40) | modelbox::Status DriverInit() {
  function DriverFini (line 45) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/data_source_parser/parser_plugin/vis_source_parser/vis_source_parser.h
  type VisInputInfo (line 28) | typedef struct tag_VisInputInfo {
  function class (line 41) | class VisSourceParser : public modelbox::DataSourceParserPlugin {
  function class (line 67) | class VisSourceParserFactory : public modelbox::DriverFactory {

FILE: src/drivers/devices/cpu/flowunit/dlengine/dlengine_cpu_inference_flowunit.h
  function class (line 25) | class DLEngineCPUInferenceFlowUnit : public modelbox::FlowUnit {
  function class (line 43) | class DLEngineCPUInferenceFlowUnitFactory : public modelbox::FlowUnitFac...

FILE: src/drivers/devices/cpu/flowunit/dlengine/dlengine_cpu_inference_flowunit_test.cc
  class DLEngineCPUInferenceFlowUnitTest (line 22) | class DLEngineCPUInferenceFlowUnitTest : public testing::Test {
    method SetUp (line 24) | void SetUp() override {
    method TearDown (line 28) | void TearDown() override { test_impl_ = nullptr; }
  function TEST_F (line 33) | TEST_F(DLEngineCPUInferenceFlowUnitTest, OnnxRunUnit) {

FILE: src/drivers/devices/cpu/flowunit/dlengine/flowunit_desc.cc
  function CreateDriverFactory (line 23) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 27) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 34) | modelbox::Status DriverInit() { return modelbox::STATUS_OK; }
  function DriverFini (line 36) | void DriverFini() {}

FILE: src/drivers/devices/cpu/flowunit/draw_bbox/draw_bbox_flowunit.cc
  function MODELBOX_FLOWUNIT (line 137) | MODELBOX_FLOWUNIT(DrawBBoxFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 148) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/draw_bbox/draw_bbox_flowunit.h
  type BBox (line 51) | typedef struct BBox {
  function class (line 57) | class DrawBBoxFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/cpu/flowunit/draw_bbox/draw_bbox_flowunit_test.cc
  type modelbox (line 37) | namespace modelbox {
    class DrawBBoxFlowUnitTest (line 38) | class DrawBBoxFlowUnitTest : public testing::Test {
      method DrawBBoxFlowUnitTest (line 40) | DrawBBoxFlowUnitTest() : driver_flow_(std::make_shared<DriverFlowTes...
      method SetUp (line 43) | void SetUp() override {
      method TearDown (line 48) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 60) | Status DrawBBoxFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 313) | TEST_F(DrawBBoxFlowUnitTest, InitUnit) {

FILE: src/drivers/devices/cpu/flowunit/httpserver_async/httpserver_async.cc
  function MODELBOX_FLOWUNIT (line 233) | MODELBOX_FLOWUNIT(HTTPServerAsync, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 257) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/httpserver_async/httpserver_async.h
  type RequestInfo (line 39) | struct RequestInfo {
  function keep_alive_time_out_sec_ (line 66) | uint64_t keep_alive_time_out_sec_{200};

FILE: src/drivers/devices/cpu/flowunit/httpserver_async/httpserver_async_test.cc
  type modelbox (line 28) | namespace modelbox {
    class HttpServerAsyncFlowUnitTest (line 29) | class HttpServerAsyncFlowUnitTest : public testing::Test {
      method HttpServerAsyncFlowUnitTest (line 31) | HttpServerAsyncFlowUnitTest() : driver_flow_(std::make_shared<MockFl...
      method SetUp (line 34) | void SetUp() override {
      method TearDown (line 39) | void TearDown() override { driver_flow_ = nullptr; }
    function Status (line 51) | Status HttpServerAsyncFlowUnitTest::AddMockFlowUnit() {
    function PutRequestAsync (line 112) | void PutRequestAsync(
    function PostRequestAsync (line 141) | void PostRequestAsync(
    function GetRequestAsync (line 172) | void GetRequestAsync(
    function DelRequestAsync (line 196) | void DelRequestAsync(
    function TEST_F (line 223) | TEST_F(HttpServerAsyncFlowUnitTest, InitUnit) {

FILE: src/drivers/devices/cpu/flowunit/httpserver_sync/httpserver_sync.cc
  function MODELBOX_DRIVER_FLOWUNIT (line 24) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/httpserver_sync/httpserver_sync_test.cc
  type modelbox (line 30) | namespace modelbox {
    class HttpServerSyncFlowUnitTest (line 31) | class HttpServerSyncFlowUnitTest : public testing::Test {
      method HttpServerSyncFlowUnitTest (line 33) | HttpServerSyncFlowUnitTest() : driver_flow_(std::make_shared<MockFlo...
      method SetUp (line 36) | void SetUp() override {
      method TearDown (line 41) | void TearDown() override { driver_flow_ = nullptr; }
    function Status (line 53) | Status HttpServerSyncFlowUnitTest::AddMockFlowUnit() {
    function PutRequestSync (line 179) | void PutRequestSync(const web::http::uri& uri,
    function PostRequestSync (line 211) | void PostRequestSync(const web::http::uri& uri,
    function GetRequestSync (line 245) | void GetRequestSync(const web::http::uri& uri,
    function HealthCheckRequesSync (line 271) | void HealthCheckRequesSync(
    function DelRequestSync (line 299) | void DelRequestSync(const web::http::uri& uri,
    function TEST_F (line 329) | TEST_F(HttpServerSyncFlowUnitTest, InitUnit) {
  function TEST_F (line 389) | TEST_F(HttpServerSyncFlowUnitTest, HealthCheck) {

FILE: src/drivers/devices/cpu/flowunit/httpserver_sync/receive/httpserver_sync_receive.cc
  function MODELBOX_FLOWUNIT (line 277) | MODELBOX_FLOWUNIT(HTTPServerReceiveSync, desc) {

FILE: src/drivers/devices/cpu/flowunit/httpserver_sync/receive/httpserver_sync_receive.h
  type RequestInfo (line 39) | struct RequestInfo {
  function class (line 46) | class ReplyHandle {
  function keep_alive_time_out_sec_ (line 93) | uint64_t keep_alive_time_out_sec_{200};

FILE: src/drivers/devices/cpu/flowunit/httpserver_sync/reply/httpserver_sync_reply.cc
  function MODELBOX_FLOWUNIT (line 95) | MODELBOX_FLOWUNIT(HTTPServerReplySync, desc) {

FILE: src/drivers/devices/cpu/flowunit/httpserver_sync/reply/httpserver_sync_reply.h
  function class (line 34) | class HTTPServerReplySync : public modelbox::FlowUnit {

FILE: src/drivers/devices/cpu/flowunit/image_decoder/image_decoder.cc
  function MODELBOX_FLOWUNIT (line 154) | MODELBOX_FLOWUNIT(ImageDecoderFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 168) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/image_decoder/image_decoder.h
  function class (line 44) | class ImageDecoderFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/cpu/flowunit/image_decoder/image_decoder_test.cc
  type modelbox (line 36) | namespace modelbox {
    class ImageDecoderFlowUnitTest (line 37) | class ImageDecoderFlowUnitTest : public testing::Test {
      method ImageDecoderFlowUnitTest (line 39) | ImageDecoderFlowUnitTest()
      method SetUp (line 43) | void SetUp() override {
      method TearDown (line 48) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 60) | Status ImageDecoderFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 278) | TEST_F(ImageDecoderFlowUnitTest, DecodeTest) {

FILE: src/drivers/devices/cpu/flowunit/image_rotate/image_rotate.cc
  function MODELBOX_FLOWUNIT (line 44) | MODELBOX_FLOWUNIT(ImageRotateCpuFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 57) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/image_rotate/image_rotate_test.cc
  type modelbox (line 21) | namespace modelbox {
    function TEST_F (line 23) | TEST_F(ImageRotateFlowUnitTest, CpuRotateTest) {

FILE: src/drivers/devices/cpu/flowunit/java/flowunit_desc.cc
  function CreateDriverFactory (line 32) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 38) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 47) | modelbox::Status DriverInit() {
  function DriverFini (line 63) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/java/java_flowunit.h
  function class (line 29) | class JavaFlowUnitDesc : public modelbox::FlowUnitDesc {
  function class (line 40) | class JavaFlowUnit : public modelbox::FlowUnit {
  function class (line 72) | class JavaFlowUnitFactory : public modelbox::FlowUnitFactory {

FILE: src/drivers/devices/cpu/flowunit/java/java_flowunit_test.cc
  type modelbox (line 31) | namespace modelbox {
    class JavaFlowUnitTest (line 32) | class JavaFlowUnitTest : public testing::Test {
      method JavaFlowUnitTest (line 34) | JavaFlowUnitTest() : driver_flow_(std::make_shared<DriverFlowTest>()...
      method SetUp (line 39) | void SetUp() override {}
      method TearDown (line 41) | void TearDown() override { driver_flow_->Clear(); }
    function TEST_F (line 54) | TEST_F(JavaFlowUnitTest, DISABLED_Init) {

FILE: src/drivers/devices/cpu/flowunit/java/java_module.cc
  function JNIEnv (line 31) | JNIEnv *JavaJVM::GetEnv() { return env_; }

FILE: src/drivers/devices/cpu/flowunit/java/java_module.h
  function class (line 23) | class JavaJVM {

FILE: src/drivers/devices/cpu/flowunit/mean/mean_flowunit.cc
  function MODELBOX_FLOWUNIT (line 90) | MODELBOX_FLOWUNIT(MeanFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 102) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/mean/mean_flowunit.h
  function class (line 38) | class MeanFlowUnit : public MeanFlowUnitBase {

FILE: src/drivers/devices/cpu/flowunit/mean/mean_flowunit_test.cc
  type modelbox (line 33) | namespace modelbox {
    class MeanCpuFlowUnitTest (line 34) | class MeanCpuFlowUnitTest : public testing::Test {
      method MeanCpuFlowUnitTest (line 36) | MeanCpuFlowUnitTest() : driver_flow_(std::make_shared<DriverFlowTest...
      method SetUp (line 39) | void SetUp() override {
      method TearDown (line 44) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 56) | Status MeanCpuFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 252) | TEST_F(MeanCpuFlowUnitTest, RunUnit) {

FILE: src/drivers/devices/cpu/flowunit/meta_mapping/meta_mapping_flowunit.cc
  function MODELBOX_FLOWUNIT (line 226) | MODELBOX_FLOWUNIT(MetaMappingFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 241) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/meta_mapping/meta_mapping_flowunit.h
  function class (line 47) | class MetaMappingFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/cpu/flowunit/meta_mapping/meta_mapping_flowunit_test.cc
  type modelbox (line 32) | namespace modelbox {
    class MetaMappingFlowUnitTest (line 33) | class MetaMappingFlowUnitTest : public testing::Test {
      method MetaMappingFlowUnitTest (line 35) | MetaMappingFlowUnitTest() : driver_flow_(std::make_shared<MockFlow>(...
      method SetUp (line 38) | void SetUp() override {
      method TearDown (line 43) | void TearDown() override { driver_flow_ = nullptr; }
    function Status (line 80) | Status MetaMappingFlowUnitTest::AddMockFlowUnit() { return STATUS_OK; }
    function TEST_F (line 82) | TEST_F(MetaMappingFlowUnitTest, NameMapping) {
    function TEST_F (line 105) | TEST_F(MetaMappingFlowUnitTest, Int32Mapping) {
    function TEST_F (line 152) | TEST_F(MetaMappingFlowUnitTest, StringMapping) {

FILE: src/drivers/devices/cpu/flowunit/mindspore_lite_inference/flowunit_desc.cc
  function CreateDriverFactory (line 30) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 36) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 44) | modelbox::Status DriverInit() {
  function DriverFini (line 49) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/mindspore_lite_inference/mindspore_cpu_inference_flowunit.h
  function class (line 26) | class MindSporeInferenceCPUFlowUnit : public modelbox::FlowUnit {
  function class (line 43) | class MindSporeInferenceCPUFlowUnitFactory : public modelbox::FlowUnitFa...

FILE: src/drivers/devices/cpu/flowunit/mindspore_lite_inference/mindspore_cpu_inference_flowunit_test.cc
  type modelbox (line 31) | namespace modelbox {
    class InferenceMindSporeCPUFlowUnitTest (line 32) | class InferenceMindSporeCPUFlowUnitTest : public testing::Test {
      method InferenceMindSporeCPUFlowUnitTest (line 34) | InferenceMindSporeCPUFlowUnitTest()
      method SetUp (line 38) | void SetUp() override {
      method TearDown (line 60) | void TearDown() override {
    function TEST_F (line 83) | TEST_F(InferenceMindSporeCPUFlowUnitTest, RunUnit) {
    function TEST_F (line 105) | TEST_F(InferenceMindSporeCPUFlowUnitTest, RunUnitEncrypt) {

FILE: src/drivers/devices/cpu/flowunit/model_decrypt_plugin/driver_desc.cc
  function CreateDriverFactory (line 31) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 37) | void DriverDescription(modelbox::DriverDesc* desc) {
  function DriverInit (line 45) | modelbox::Status DriverInit() {
  function DriverFini (line 50) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/model_decrypt_plugin/model_decrypt_plugin.h
  function class (line 25) | class ModelDecryptPlugin : public IModelDecryptPlugin {
  function class (line 41) | class ModelDecryptFactory : public modelbox::DriverFactory {

FILE: src/drivers/devices/cpu/flowunit/model_decrypt_plugin/model_decrypt_plugin_test.cc
  type modelbox (line 43) | namespace modelbox {
    class ModelDecryptPluginTest (line 47) | class ModelDecryptPluginTest : public testing::Test {
      method ModelDecryptPluginTest (line 49) | ModelDecryptPluginTest() = default;
      method SetUp (line 53) | void SetUp() override {
      method TearDown (line 58) | void TearDown() override {
    function TEST_F (line 87) | TEST_F(ModelDecryptPluginTest, ModelDecryptTest) {

FILE: src/drivers/devices/cpu/flowunit/normalize/normalize_flowunit.cc
  function MODELBOX_FLOWUNIT (line 89) | MODELBOX_FLOWUNIT(NormalizeFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 101) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/normalize/normalize_flowunit.h
  function class (line 37) | class NormalizeFlowUnit : public NormalizeFlowUnitBase {

FILE: src/drivers/devices/cpu/flowunit/normalize/normalize_flowunit_test.cc
  type modelbox (line 32) | namespace modelbox {
    class NormalizeCpuFlowUnitTest (line 33) | class NormalizeCpuFlowUnitTest : public testing::Test {
      method NormalizeCpuFlowUnitTest (line 35) | NormalizeCpuFlowUnitTest()
      method SetUp (line 39) | void SetUp() override {
      method TearDown (line 44) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 56) | Status NormalizeCpuFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 255) | TEST_F(NormalizeCpuFlowUnitTest, RunUnit) {

FILE: src/drivers/devices/cpu/flowunit/output_broker/broker_plugin/dis_output_broker/dis_output_broker.cc
  function DISStatus (line 212) | DISStatus DisOutputBroker::GetUserAuthInfo(char *project_id, char *ak_ar...
  function DISStatus (line 413) | DISStatus DisOutputBroker::PutRecordCallBack(

FILE: src/drivers/devices/cpu/flowunit/output_broker/broker_plugin/dis_output_broker/dis_output_broker.h
  type DisOutputInfo (line 31) | typedef struct tag_DisOutputInfo {
  function class (line 47) | class DisOutputBroker : public modelbox::OutputBrokerPlugin {
  function class (line 90) | class DisOutputBrokerFactory : public modelbox::DriverFactory {

FILE: src/drivers/devices/cpu/flowunit/output_broker/broker_plugin/dis_output_broker/driver_desc.cc
  function CreateDriverFactory (line 27) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 33) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 42) | modelbox::Status DriverInit() {
  function DriverFini (line 47) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/output_broker/broker_plugin/obs_output_broker/driver_desc.cc
  function CreateDriverFactory (line 27) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 33) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 40) | modelbox::Status DriverInit() {
  function DriverFini (line 45) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/output_broker/broker_plugin/obs_output_broker/obs_output_broker.h
  type OBSOutputInfo (line 34) | typedef struct tag_OBSOutputInfo {
  function class (line 52) | class ObsOutputBroker : public modelbox::OutputBrokerPlugin {
  function class (line 105) | class OBSOutputBrokerFactory : public modelbox::DriverFactory {

FILE: src/drivers/devices/cpu/flowunit/output_broker/broker_plugin/obs_output_broker/obs_output_broker_test.cc
  type _OutputDataPack (line 34) | struct _OutputDataPack {
  type modelbox (line 40) | namespace modelbox {
    class OutputBrokerObsPluginTest (line 41) | class OutputBrokerObsPluginTest : public testing::Test {
      method OutputBrokerObsPluginTest (line 43) | OutputBrokerObsPluginTest()
      method SetUp (line 48) | void SetUp() override {
      method TearDown (line 53) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 122) | Status OutputBrokerObsPluginTest::AddMockFlowUnit() { return STATUS_OK; }
    function TEST_F (line 124) | TEST_F(OutputBrokerObsPluginTest, ObsOutputTest) {
    function TEST_F (line 185) | TEST_F(OutputBrokerObsPluginTest, ObsOutputTestWithNoFileName) {

FILE: src/drivers/devices/cpu/flowunit/output_broker/broker_plugin/webhook_output_broker/driver_desc.cc
  function CreateDriverFactory (line 27) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 33) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 40) | modelbox::Status DriverInit() {
  function DriverFini (line 45) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/output_broker/broker_plugin/webhook_output_broker/webhook_output_broker.h
  type WebhookOutputInfo (line 30) | typedef struct tag_WebhookOutputInfo {
  function class (line 35) | class WebhookOutputBroker : public modelbox::OutputBrokerPlugin {
  function class (line 70) | class WebhookOutputBrokerFactory : public modelbox::DriverFactory {

FILE: src/drivers/devices/cpu/flowunit/output_broker/output_broker_flowunit.cc
  function MODELBOX_FLOWUNIT (line 507) | MODELBOX_FLOWUNIT(OutputBrokerFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 516) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/output_broker/output_broker_flowunit.h
  function class (line 57) | class BrokerDataQueue {
  function class (line 78) | class BrokerInstance {

FILE: src/drivers/devices/cpu/flowunit/output_broker/output_broker_flowunit_test.cc
  type modelbox (line 38) | namespace modelbox {
    class OutputBrokerFlowUnitTest (line 39) | class OutputBrokerFlowUnitTest : public testing::Test {
      method OutputBrokerFlowUnitTest (line 41) | OutputBrokerFlowUnitTest() : driver_flow_(std::make_shared<MockFlow>...
      method SetUp (line 46) | void SetUp() override {
      method TearDown (line 51) | void TearDown() override { driver_flow_ = nullptr; }
    function Status (line 116) | Status OutputBrokerFlowUnitTest::AddMockFlowUnit() { return STATUS_OK; }
    function TEST_F (line 118) | TEST_F(OutputBrokerFlowUnitTest, InitUnit) {
    function TEST_F (line 148) | TEST_F(OutputBrokerFlowUnitTest, DisOutputTest) {
    function TEST_F (line 198) | TEST_F(OutputBrokerFlowUnitTest, WebhookOutputTest) {

FILE: src/drivers/devices/cpu/flowunit/padding/padding_flowunit.cc
  type dest_roi_proportions (line 151) | struct dest_roi_proportions
  type dest_roi_proportions (line 152) | struct dest_roi_proportions
  function MODELBOX_FLOWUNIT (line 253) | MODELBOX_FLOWUNIT(PaddingFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 291) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/padding/padding_flowunit.h
  type class (line 51) | enum class
  type dest_roi_proportions (line 52) | struct dest_roi_proportions {
  function width_ (line 86) | int32_t width_{0}
  function height_ (line 87) | int32_t height_{0}
  function output_buffer_size_ (line 88) | size_t output_buffer_size_{0}

FILE: src/drivers/devices/cpu/flowunit/padding/padding_flowunit_test.cc
  type modelbox (line 36) | namespace modelbox {
    class PaddingFlowUnitTest (line 38) | class PaddingFlowUnitTest : public testing::Test {
      method PaddingFlowUnitTest (line 40) | PaddingFlowUnitTest() : driver_flow_(std::make_shared<MockFlow>()) {}
    function TEST_F (line 52) | TEST_F(PaddingFlowUnitTest, TestPaddingImage) {

FILE: src/drivers/devices/cpu/flowunit/python/flowunit_desc.cc
  function CreateDriverFactory (line 33) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 39) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 48) | modelbox::Status DriverInit() {
  function DriverFini (line 64) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/python/python_flowunit.h
  function class (line 34) | class PythonFlowUnitDesc : public modelbox::FlowUnitDesc {
  function is_enable_debug_ (line 84) | bool is_enable_debug_{false};
  function class (line 87) | class PythonFlowUnitFactory : public modelbox::FlowUnitFactory {

FILE: src/drivers/devices/cpu/flowunit/python/python_flowunit_test.cc
  type modelbox (line 35) | namespace modelbox {
    class PythonFlowUnitTest (line 36) | class PythonFlowUnitTest : public testing::Test {
      method PythonFlowUnitTest (line 38) | PythonFlowUnitTest() : driver_flow_(std::make_shared<DriverFlowTest>...
      method SetUp (line 43) | void SetUp() override {}
      method TearDown (line 45) | void TearDown() override { driver_flow_->Clear(); }
    function TEST_F (line 58) | TEST_F(PythonFlowUnitTest, Init) {
    function TEST_F (line 86) | TEST_F(PythonFlowUnitTest, StatusCount) {

FILE: src/drivers/devices/cpu/flowunit/python/python_module.cc
  function PYBIND11_MODULE (line 62) | PYBIND11_MODULE(_flowunit, m) {

FILE: src/drivers/devices/cpu/flowunit/python/python_module.h
  function class (line 24) | class PythonInterpreter {

FILE: src/drivers/devices/cpu/flowunit/resize/resize_flowunit.cc
  function MODELBOX_FLOWUNIT (line 166) | MODELBOX_FLOWUNIT(CVResizeFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 190) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/resize/resize_flowunit_test.cc
  type modelbox (line 36) | namespace modelbox {
    class CVResizeFlowUnitTest (line 37) | class CVResizeFlowUnitTest : public testing::Test {
      method CVResizeFlowUnitTest (line 39) | CVResizeFlowUnitTest() : driver_flow_(std::make_shared<DriverFlowTes...
      method SetUp (line 42) | void SetUp() override {
      method TearDown (line 47) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 59) | Status CVResizeFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 270) | TEST_F(CVResizeFlowUnitTest, InitUnit) {

FILE: src/drivers/devices/cpu/flowunit/tensorflow/flowunit_desc.cc
  function CreateDriverFactory (line 30) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 36) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 44) | modelbox::Status DriverInit() {
  function DriverFini (line 49) | void DriverFini() {

FILE: src/drivers/devices/cpu/flowunit/tensorflow/tensorflow_cpu_inference_flowunit.h
  function class (line 26) | class InferenceTensorflowCpuFlowUnit : public InferenceTensorflowFlowUnit {
  function class (line 32) | class InferenceTensorflowCpuFlowUnitFactory : public modelbox::FlowUnitF...

FILE: src/drivers/devices/cpu/flowunit/tensorflow/tensorflow_cpu_inference_flowunit_test.cc
  type modelbox (line 35) | namespace modelbox {
    class InferenceTensorflowCpuFlowUnitTest (line 36) | class InferenceTensorflowCpuFlowUnitTest : public testing::Test {
      method InferenceTensorflowCpuFlowUnitTest (line 38) | InferenceTensorflowCpuFlowUnitTest()
      method SetUp (line 42) | void SetUp() override {
      method TearDown (line 58) | void TearDown() override {
    function TEST_F (line 110) | TEST_F(InferenceTensorflowCpuFlowUnitTest, RunUnitBatch) {

FILE: src/drivers/devices/cpu/flowunit/video_decoder/ffmpeg_video_decoder.h
  function class (line 31) | class FfmpegVideoDecoder {

FILE: src/drivers/devices/cpu/flowunit/video_decoder/video_decoder_flowunit.cc
  function MODELBOX_FLOWUNIT (line 388) | MODELBOX_FLOWUNIT(VideoDecoderFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 405) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/video_decoder/video_decoder_flowunit.h
  function class (line 72) | class VideoDecoderFlowUnit : public modelbox::FlowUnit {
  function AVPixelFormat (line 124) | AVPixelFormat out_pix_fmt_{AV_PIX_FMT_NV12};

FILE: src/drivers/devices/cpu/flowunit/video_decoder/video_decoder_flowunit_test.cc
  type modelbox (line 31) | namespace modelbox {
    class VideoDecoderFlowUnitTest (line 32) | class VideoDecoderFlowUnitTest : public testing::Test {
      method VideoDecoderFlowUnitTest (line 34) | VideoDecoderFlowUnitTest() = default;
    function TEST_F (line 57) | TEST_F(VideoDecoderFlowUnitTest, cpuDecoderNv12Test) {
    function TEST_F (line 62) | TEST_F(VideoDecoderFlowUnitTest, cpuDecoderRgbTest) {
    function TEST_F (line 67) | TEST_F(VideoDecoderFlowUnitTest, cpuDecoderBgrTest) {

FILE: src/drivers/devices/cpu/flowunit/video_demuxer/ffmpeg_reader.cc
  function CheckTimeout (line 28) | static int CheckTimeout(void *ctx) {

FILE: src/drivers/devices/cpu/flowunit/video_demuxer/ffmpeg_reader.h
  function class (line 32) | class FfmpegReader {

FILE: src/drivers/devices/cpu/flowunit/video_demuxer/ffmpeg_video_demuxer.cc
  function AVCodecID (line 97) | AVCodecID FfmpegVideoDemuxer::GetCodecID() { return codec_id_; }
  function AVCodecParameters (line 101) | const AVCodecParameters *FfmpegVideoDemuxer::GetCodecParam() {

FILE: src/drivers/devices/cpu/flowunit/video_demuxer/ffmpeg_video_demuxer.h
  function stream_id_ (line 96) | int32_t stream_id_{0}
  function AVCodecID (line 97) | AVCodecID codec_id_{AVCodecID::AV_CODEC_ID_H264};

FILE: src/drivers/devices/cpu/flowunit/video_demuxer/video_demux_flowunit_retry_test.cc
  type modelbox (line 32) | namespace modelbox {
    class VideoDemuxerFlowUnitRetryTest (line 33) | class VideoDemuxerFlowUnitRetryTest : public testing::Test {
      method VideoDemuxerFlowUnitRetryTest (line 35) | VideoDemuxerFlowUnitRetryTest()
      method GetDriverFlow (line 38) | std::shared_ptr<MockFlow> GetDriverFlow() { return driver_flow_; }
    function TEST_F (line 74) | TEST_F(VideoDemuxerFlowUnitRetryTest, RtspInputTest) {

FILE: src/drivers/devices/cpu/flowunit/video_demuxer/video_demuxer_flowunit.cc
  function MODELBOX_FLOWUNIT (line 346) | MODELBOX_FLOWUNIT(VideoDemuxerFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 356) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/video_demuxer/video_demuxer_flowunit.h
  type DemuxStatus (line 55) | enum DemuxStatus { DEMUX_FAIL = 0, DEMUX_SUCCESS = 1 }
  function is_retry_reset_ (line 111) | bool is_retry_reset_{false};
  function IsRunning (line 129) | bool IsRunning() const;
  function packet_drop_count_ (line 151) | size_t packet_drop_count_{0}
  function missing_pre_packet_ (line 152) | bool missing_pre_packet_{false};

FILE: src/drivers/devices/cpu/flowunit/video_demuxer/video_demuxer_flowunit_test.cc
  type modelbox (line 30) | namespace modelbox {
    class VideoDemuxerFlowUnitTest (line 31) | class VideoDemuxerFlowUnitTest : public testing::Test {
      method VideoDemuxerFlowUnitTest (line 33) | VideoDemuxerFlowUnitTest() = default;

FILE: src/drivers/devices/cpu/flowunit/video_encoder/ffmpeg_video_encoder.h
  function class (line 29) | class FfmpegVideoEncoder {

FILE: src/drivers/devices/cpu/flowunit/video_encoder/ffmpeg_video_muxer.h
  function is_header_wrote_ (line 42) | bool is_header_wrote_{false};

FILE: src/drivers/devices/cpu/flowunit/video_encoder/ffmpeg_writer.h
  function class (line 29) | class FfmpegWriter {

FILE: src/drivers/devices/cpu/flowunit/video_encoder/video_encoder_flowunit.cc
  function MODELBOX_FLOWUNIT (line 415) | MODELBOX_FLOWUNIT(VideoEncoderFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 436) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/video_encoder/video_encoder_flowunit.h
  function class (line 60) | class VideoEncoderFlowUnit : public modelbox::FlowUnit {
  function bit_rate_ (line 127) | uint64_t bit_rate_{0}
  function reopen_remote_ (line 128) | bool reopen_remote_{false};

FILE: src/drivers/devices/cpu/flowunit/video_encoder/video_encoder_flowunit_test.cc
  type modelbox (line 31) | namespace modelbox {
    class VideoEncoderFlowUnitTest (line 32) | class VideoEncoderFlowUnitTest : public testing::Test {
      method VideoEncoderFlowUnitTest (line 34) | VideoEncoderFlowUnitTest() = default;
    function Status (line 60) | Status VideoEncoderFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 159) | TEST_F(VideoEncoderFlowUnitTest, InitUnit) {

FILE: src/drivers/devices/cpu/flowunit/video_input/video_input_flowunit.cc
  function MODELBOX_FLOWUNIT (line 77) | MODELBOX_FLOWUNIT(VideoInputFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 87) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cpu/flowunit/video_input/video_input_flowunit.h
  function class (line 39) | class VideoInputFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/cuda/core/cuda_memory.cc
  type modelbox (line 20) | namespace modelbox {
    function CudaReleaseMemoryAsync (line 30) | void CudaReleaseMemoryAsync(void *mem_list_ptr) {
    function Status (line 40) | Status CudaStream::Sync() const {
    function Status (line 58) | Status CudaStream::Bind(
    function Status (line 139) | Status CudaStreamPool::Free(const CudaStream *stream) {
    function Status (line 155) | Status CudaMemory::BindStream(const std::shared_ptr<CudaStream> &strea...
    function Status (line 179) | Status CudaMemory::DetachStream() {
    function Status (line 193) | Status CudaMemory::CopyExtraMetaTo(std::shared_ptr<DeviceMemory> &devi...
    function Status (line 203) | Status CudaMemory::CombineExtraMeta(
    function Status (line 234) | Status CudaMemoryPool::Init() {
    function Status (line 333) | Status CudaMemoryManager::Init() {
    function Status (line 397) | Status CudaMemoryManager::Copy(void *dest, size_t dest_size,
    function Status (line 430) | Status CudaMemoryManager::GetDeviceMemUsage(size_t *free, size_t *tota...
    function Status (line 458) | Status CudaMemoryManager::DeviceMemoryCopy(
    function Status (line 495) | Status CudaMemoryManager::CudaMemcpyAsync(
    function Status (line 552) | Status CudaMemoryManager::SetupCudaStream(

FILE: src/drivers/devices/cuda/core/device_cuda.cc
  type modelbox (line 27) | namespace modelbox {
    function Status (line 36) | Status Cuda::DeviceExecute(const DevExecuteCallBack &fun, int32_t prio...
    function Status (line 113) | Status CudaFlowUnit::Process(std::shared_ptr<modelbox::DataContext> da...

FILE: src/drivers/devices/cuda/core/driver_desc.cc
  function CreateDriverFactory (line 39) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 45) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 52) | modelbox::Status DriverInit() {
  function DriverFini (line 82) | void DriverFini() {

FILE: src/drivers/devices/cuda/core/include/modelbox/device/cuda/cuda_memory.h
  function IsInDevice (line 50) | inline bool IsInDevice(const std::string &device_id) const {
  function IsInDevice (line 55) | inline bool IsInDevice(int32_t device_id) const {
  function Status (line 61) | Status Sync() const;

FILE: src/drivers/devices/cuda/core/include/modelbox/device/cuda/device_cuda.h
  function namespace (line 57) | namespace modelbox {

FILE: src/drivers/devices/cuda/flowunit/color_transpose/color_transpose.cc
  function NppStatus (line 27) | NppStatus RGBToGRAY(NppiSize &size, const uint8_t *input_data,
  function NppStatus (line 36) | NppStatus BGRToGRAY(NppiSize &size, const uint8_t *input_data,
  function NppStatus (line 54) | NppStatus ColorTransposeFunction(const std::string &source_color,
  function IsColor (line 84) | bool IsColor(const std::string &type) {
  function NumberOfChannels (line 88) | std::size_t NumberOfChannels(const std::string &type) {
  function GetParm (line 92) | modelbox::Status GetParm(const std::shared_ptr<modelbox::Buffer> &buffer,
  function GetAndCheckParm (line 141) | modelbox::Status GetAndCheckParm(
  function MODELBOX_FLOWUNIT (line 249) | MODELBOX_FLOWUNIT(ColorTransposeFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 267) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cuda/flowunit/color_transpose/color_transpose.h
  function class (line 45) | class ColorTransposeFlowUnit : public modelbox::CudaFlowUnit {

FILE: src/drivers/devices/cuda/flowunit/color_transpose/color_transpose_test.cc
  type modelbox (line 37) | namespace modelbox {
    class ColorTransposeFlowUnitTest (line 38) | class ColorTransposeFlowUnitTest : public testing::Test {
      method ColorTransposeFlowUnitTest (line 40) | ColorTransposeFlowUnitTest() : driver_flow_(std::make_shared<MockFlo...
      method SetUp (line 43) | void SetUp() override {
      method TearDown (line 56) | void TearDown() override { driver_flow_ = nullptr; }
    function Status (line 71) | Status ColorTransposeFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 92) | TEST_F(ColorTransposeFlowUnitTest, ColorTransposeTest) {

FILE: src/drivers/devices/cuda/flowunit/dlengine/dlengine_cuda_inference_flowunit.h
  function class (line 26) | class DLEngineCUDAInferenceFlowUnit : public modelbox::CudaFlowUnit {
  function class (line 44) | class DLEngineCUDAInferenceFlowUnitFactory : public modelbox::FlowUnitFa...

FILE: src/drivers/devices/cuda/flowunit/dlengine/dlengine_cuda_inference_flowunit_test.cc
  class DLEngineCUDAInferenceFlowUnitTest (line 22) | class DLEngineCUDAInferenceFlowUnitTest : public testing::Test {
    method SetUp (line 24) | void SetUp() override {
    method TearDown (line 28) | void TearDown() override { test_impl_ = nullptr; }
  function TEST_F (line 33) | TEST_F(DLEngineCUDAInferenceFlowUnitTest, OnnxRunUnit) {

FILE: src/drivers/devices/cuda/flowunit/dlengine/flowunit_desc.cc
  function CreateDriverFactory (line 23) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 27) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 34) | modelbox::Status DriverInit() { return modelbox::STATUS_OK; }
  function DriverFini (line 36) | void DriverFini() {}

FILE: src/drivers/devices/cuda/flowunit/image_rotate/image_rotate.cc
  function MODELBOX_FLOWUNIT (line 74) | MODELBOX_FLOWUNIT(ImageRotateGpuFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 87) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cuda/flowunit/image_rotate/image_rotate.h
  function class (line 42) | class ImageRotateGpuFlowUnit : public ImageRotateFlowUnitBase {

FILE: src/drivers/devices/cuda/flowunit/image_rotate/image_rotate_test.cc
  type modelbox (line 23) | namespace modelbox {
    function TEST_F (line 25) | TEST_F(ImageRotateFlowUnitTest, CudaRotateTest) {

FILE: src/drivers/devices/cuda/flowunit/mean/mean.cc
  function CheckRoiValid (line 22) | bool CheckRoiValid(const ImageRect &roi) {
  function Mean_PLANAR_32f_P3R (line 32) | int32_t Mean_PLANAR_32f_P3R(const float *pSrcPlanarData, int width, int ...

FILE: src/drivers/devices/cuda/flowunit/mean/mean.h
  type ImageRect (line 37) | typedef struct {
  type ImageMean_32f (line 44) | typedef struct {

FILE: src/drivers/devices/cuda/flowunit/mean/mean_flowunit.cc
  function MODELBOX_FLOWUNIT (line 159) | MODELBOX_FLOWUNIT(MeanFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 171) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cuda/flowunit/mean/mean_flowunit.h
  function class (line 42) | class MeanFlowUnit : public modelbox::CudaFlowUnit {

FILE: src/drivers/devices/cuda/flowunit/mean/mean_flowunit_test.cc
  type modelbox (line 34) | namespace modelbox {
    class MeanGpuFlowUnitTest (line 35) | class MeanGpuFlowUnitTest : public testing::Test {
      method MeanGpuFlowUnitTest (line 37) | MeanGpuFlowUnitTest() : driver_flow_(std::make_shared<DriverFlowTest...
      method SetUp (line 40) | void SetUp() override {
      method TearDown (line 52) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 64) | Status MeanGpuFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 257) | TEST_F(MeanGpuFlowUnitTest, RunUnit) {

FILE: src/drivers/devices/cuda/flowunit/mindspore_lite_inference/flowunit_desc.cc
  function CreateDriverFactory (line 30) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 36) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 45) | modelbox::Status DriverInit() {
  function DriverFini (line 50) | void DriverFini() {

FILE: src/drivers/devices/cuda/flowunit/mindspore_lite_inference/mindspore_cuda_inference_flowunit.h
  function class (line 27) | class MindSporeInferenceCudaFlowUnit : public modelbox::CudaFlowUnit {
  function class (line 44) | class MindSporeInferenceCudaFlowUnitFactory : public modelbox::FlowUnitF...

FILE: src/drivers/devices/cuda/flowunit/mindspore_lite_inference/mindspore_cuda_inference_flowunit_test.cc
  type modelbox (line 33) | namespace modelbox {
    class InferenceMindSporeCudaFlowUnitTest (line 34) | class InferenceMindSporeCudaFlowUnitTest : public testing::Test {
      method InferenceMindSporeCudaFlowUnitTest (line 36) | InferenceMindSporeCudaFlowUnitTest()
      method SetUp (line 40) | virtual void SetUp() {
      method TearDown (line 69) | virtual void TearDown() {
    function TEST_F (line 92) | TEST_F(InferenceMindSporeCudaFlowUnitTest, RunUnit) {
    function TEST_F (line 114) | TEST_F(InferenceMindSporeCudaFlowUnitTest, RunUnitEncrypt) {

FILE: src/drivers/devices/cuda/flowunit/normalize/normalize.cc
  function CheckRoiValid (line 22) | bool CheckRoiValid(const ImageRect &roi) {
  function Scale_32f_C1IR (line 32) | int32_t Scale_32f_C1IR(float *imageData, int width, ImageRect &rect,

FILE: src/drivers/devices/cuda/flowunit/normalize/normalize.h
  type ImageRect (line 37) | typedef struct {

FILE: src/drivers/devices/cuda/flowunit/normalize/normalize_flowunit.cc
  function MODELBOX_FLOWUNIT (line 171) | MODELBOX_FLOWUNIT(NormalizeFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 183) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cuda/flowunit/normalize/normalize_flowunit.h
  function class (line 39) | class NormalizeFlowUnit : public modelbox::CudaFlowUnit {

FILE: src/drivers/devices/cuda/flowunit/normalize/normalize_flowunit_test.cc
  type modelbox (line 34) | namespace modelbox {
    class NormalizeGpuFlowUnitTest (line 35) | class NormalizeGpuFlowUnitTest : public testing::Test {
      method NormalizeGpuFlowUnitTest (line 37) | NormalizeGpuFlowUnitTest()
      method SetUp (line 41) | void SetUp() override {
      method TearDown (line 53) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 65) | Status NormalizeGpuFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 262) | TEST_F(NormalizeGpuFlowUnitTest, RunUnit) {

FILE: src/drivers/devices/cuda/flowunit/normalize_v2/normalize_flowunit.cc
  function GetParm (line 57) | modelbox::Status GetParm(const std::shared_ptr<modelbox::Buffer> &buffer,
  function GetAndCheckParm (line 95) | modelbox::Status GetAndCheckParm(
  function MODELBOX_FLOWUNIT (line 191) | MODELBOX_FLOWUNIT(NormalizeFlowUnitV2, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 207) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cuda/flowunit/normalize_v2/normalize_flowunit.h
  function class (line 35) | class NormalizeFlowUnitV2 : public modelbox::CudaFlowUnit {

FILE: src/drivers/devices/cuda/flowunit/normalize_v2/normalize_flowunit_test.cc
  type modelbox (line 37) | namespace modelbox {
    class NormalizeV2FlowUnitTest (line 38) | class NormalizeV2FlowUnitTest : public testing::Test {
      method NormalizeV2FlowUnitTest (line 40) | NormalizeV2FlowUnitTest()
      method SetUp (line 44) | void SetUp() override {
      method TearDown (line 56) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 68) | Status NormalizeV2FlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 134) | TEST_F(NormalizeV2FlowUnitTest, NormalizeV2Test) {

FILE: src/drivers/devices/cuda/flowunit/nppi_crop/nppi_crop_flowunit.cc
  function MODELBOX_FLOWUNIT (line 214) | MODELBOX_FLOWUNIT(NppiCropFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 225) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cuda/flowunit/nppi_crop/nppi_crop_flowunit.h
  type ImageSize (line 57) | typedef struct {
  function class (line 62) | class NppiCropFlowUnit : public modelbox::CudaFlowUnit {

FILE: src/drivers/devices/cuda/flowunit/nppi_crop/nppi_crop_flowunit_test.cc
  type modelbox (line 35) | namespace modelbox {
    class NppiCropFlowUnitTest (line 36) | class NppiCropFlowUnitTest : public testing::Test {
      method NppiCropFlowUnitTest (line 38) | NppiCropFlowUnitTest() : driver_flow_(std::make_shared<MockFlow>()) {}
      method SetUp (line 41) | void SetUp() override {
      method TearDown (line 53) | void TearDown() override { driver_flow_ = nullptr; }
    function Status (line 65) | Status NppiCropFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 234) | TEST_F(NppiCropFlowUnitTest, TestC3r) {

FILE: src/drivers/devices/cuda/flowunit/nppi_resize/resize_flowunit.cc
  function NppiInterpolationMode (line 270) | NppiInterpolationMode NppiResizeFlowUnit::GetNppiResizeInterpolation(
  function MODELBOX_FLOWUNIT (line 285) | MODELBOX_FLOWUNIT(NppiResizeFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 308) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cuda/flowunit/nppi_resize/resize_flowunit.h
  type ImageSize (line 51) | typedef struct {
  function class (line 57) | class NppiResizeFlowUnit : public modelbox::CudaFlowUnit {
  function dest_width_ (line 107) | size_t dest_width_{0}
  function dest_height_ (line 108) | size_t dest_height_{0}

FILE: src/drivers/devices/cuda/flowunit/nppi_resize/resize_flowunit_test.cc
  type modelbox (line 37) | namespace modelbox {
    class NppiResizeFlowUnitTest (line 38) | class NppiResizeFlowUnitTest : public testing::Test {
      method NppiResizeFlowUnitTest (line 40) | NppiResizeFlowUnitTest() : driver_flow_(std::make_shared<DriverFlowT...
      method SetUp (line 43) | void SetUp() override {
      method TearDown (line 55) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 67) | Status NppiResizeFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 501) | TEST_F(NppiResizeFlowUnitTest, TestC3r) {

FILE: src/drivers/devices/cuda/flowunit/nv_image_decoder/nv_image_decoder.cc
  function ImageType (line 133) | ImageType NvImageDecoderFlowUnit::CheckImageType(const uint8_t *input_da...
  function MODELBOX_FLOWUNIT (line 263) | MODELBOX_FLOWUNIT(NvImageDecoderFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 283) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cuda/flowunit/nv_image_decoder/nv_image_decoder.h
  type ImageType (line 47) | enum ImageType {
  function nvjpegHandle_t (line 79) | nvjpegHandle_t handle_{nullptr};

FILE: src/drivers/devices/cuda/flowunit/nv_image_decoder/nv_image_decoder_test.cc
  type modelbox (line 39) | namespace modelbox {
    class NvImageDecoderFlowUnitTest (line 40) | class NvImageDecoderFlowUnitTest : public testing::Test {
      method NvImageDecoderFlowUnitTest (line 42) | NvImageDecoderFlowUnitTest()
      method SetUp (line 46) | void SetUp() override {
      method TearDown (line 58) | void TearDown() override { driver_flow_->Clear(); }
    function Status (line 70) | Status NvImageDecoderFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 290) | TEST_F(NvImageDecoderFlowUnitTest, NvDecodeTest) {

FILE: src/drivers/devices/cuda/flowunit/padding/padding_flowunit.cc
  function MODELBOX_FLOWUNIT (line 259) | MODELBOX_FLOWUNIT(PaddingFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 298) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cuda/flowunit/padding/padding_flowunit.h
  type class (line 52) | enum class
  function width_ (line 78) | int32_t width_{0}
  function height_ (line 79) | int32_t height_{0}
  function output_buffer_size_ (line 80) | size_t output_buffer_size_{0}
  function NppiInterpolationMode (line 85) | NppiInterpolationMode interpolation_{NPPI_INTER_LINEAR};

FILE: src/drivers/devices/cuda/flowunit/padding/padding_flowunit_test.cc
  type modelbox (line 36) | namespace modelbox {
    class NppiPaddingFlowUnitTest (line 37) | class NppiPaddingFlowUnitTest : public testing::Test {
      method NppiPaddingFlowUnitTest (line 39) | NppiPaddingFlowUnitTest() : driver_flow_(std::make_shared<MockFlow>(...
      method SetUp (line 42) | void SetUp() override {
      method TearDown (line 51) | void TearDown() override { driver_flow_ = nullptr; }
    function TEST_F (line 62) | TEST_F(NppiPaddingFlowUnitTest, TestPaddingImage) {

FILE: src/drivers/devices/cuda/flowunit/tensorflow/flowunit_desc.cc
  function CreateDriverFactory (line 30) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 36) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 44) | modelbox::Status DriverInit() {
  function DriverFini (line 49) | void DriverFini() {

FILE: src/drivers/devices/cuda/flowunit/tensorflow/tensorflow_gpu_inference_flowunit.h
  function class (line 26) | class InferenceTensorflowGpuFlowUnit : public InferenceTensorflowFlowUnit {
  function class (line 32) | class InferenceTensorflowGpuFlowUnitFactory : public modelbox::FlowUnitF...

FILE: src/drivers/devices/cuda/flowunit/tensorflow/tensorflow_gpu_inference_flowunit_test.cc
  type modelbox (line 36) | namespace modelbox {
    class InferenceTensorflowCudaFlowUnitTest (line 37) | class InferenceTensorflowCudaFlowUnitTest : public testing::Test {
      method InferenceTensorflowCudaFlowUnitTest (line 39) | InferenceTensorflowCudaFlowUnitTest()
      method SetUp (line 43) | void SetUp() override {
      method TearDown (line 66) | void TearDown() override {
    function TEST_F (line 156) | TEST_F(InferenceTensorflowCudaFlowUnitTest, RunUnitBatch) {
    function TEST_F (line 178) | TEST_F(InferenceTensorflowCudaFlowUnitTest, RunUnitSingle) {
    function TEST_F (line 199) | TEST_F(InferenceTensorflowCudaFlowUnitTest, RunPlugin) {
    function TEST_F (line 221) | TEST_F(InferenceTensorflowCudaFlowUnitTest, RunSaveModel) {

FILE: src/drivers/devices/cuda/flowunit/tensorrt/common_util.h
  function Volume (line 25) | inline int Volume(nvinfer1::Dims dims) {
  type TensorRTInferDeleter (line 31) | struct TensorRTInferDeleter {

FILE: src/drivers/devices/cuda/flowunit/tensorrt/flowunit_desc.cc
  function CreateDriverFactory (line 28) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 34) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 41) | modelbox::Status DriverInit() {
  function DriverFini (line 48) | void DriverFini() {

FILE: src/drivers/devices/cuda/flowunit/tensorrt/nvplugin/plugin_factory.h
  function isLeakyRelu (line 44) | inline bool isLeakyRelu(const char *layerName) {
  function isUpsample (line 51) | inline bool isUpsample(const char *layerName) {
  function isPlugin (line 125) | bool isPlugin(const char *name) override { return isPluginExt(name); }
  function isPluginExt (line 127) | bool isPluginExt(const char *name) override {
  function destroyPlugin (line 136) | void destroyPlugin() {

FILE: src/drivers/devices/cuda/flowunit/tensorrt/nvplugin/upsample-layer.cpp
  type nvinfer1 (line 24) | namespace nvinfer1 {
    function write_buffer (line 26) | void write_buffer(char *&buffer, const T &val) {
    function read_buffer (line 32) | void read_buffer(const char *&buffer, T &val) {
    function Dims (line 118) | Dims UpsampleLayerPlugin2::getOutputDimensions(int index, const Dims *...

FILE: src/drivers/devices/cuda/flowunit/tensorrt/nvplugin/upsample-layer.h
  function supportsFormat (line 44) | bool supportsFormat(DataType type, PluginFormat format) const override {
  function initialize (line 54) | int initialize() override;
  function getWorkspaceSize (line 58) | size_t getWorkspaceSize(int maxBatchSize) const override { return 0; }
  function getSerializationSize (line 63) | size_t getSerializationSize() override {

FILE: src/drivers/devices/cuda/flowunit/tensorrt/tensorrt_inference_flowunit.cc
  function ConvertTrtTypeToModelBoxType (line 49) | modelbox::Status ConvertTrtTypeToModelBoxType(
  function ConvertModelBoxTypeToTorchType (line 61) | modelbox::Status ConvertModelBoxTypeToTorchType(

FILE: src/drivers/devices/cuda/flowunit/tensorrt/tensorrt_inference_flowunit.h
  function class (line 51) | class iLogger : public nvinfer1::ILogger {
  function device (line 86) | int device{0}
  function onnx_opt_batch_size (line 87) | int onnx_opt_batch_size{1}
  function onnx_max_batch_size (line 88) | int onnx_max_batch_size{1}
  function pct (line 98) | float pct{99};
  function class (line 182) | class RndInt8Calibrator : public nvinfer1::IInt8EntropyCalibrator {

FILE: src/drivers/devices/cuda/flowunit/tensorrt/tensorrt_inference_flowunit_test.cc
  type modelbox (line 35) | namespace modelbox {
    class TensorRTFlowUnitTest (line 36) | class TensorRTFlowUnitTest : public testing::Test {
      method TensorRTFlowUnitTest (line 38) | TensorRTFlowUnitTest() : driver_flow_(std::make_shared<DriverFlowTes...
      method SetUp (line 41) | void SetUp() override {
      method TearDown (line 54) | void TearDown() override {
    function Status (line 150) | Status TensorRTFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 335) | TEST_F(TensorRTFlowUnitTest, RunUnitSingle) {
    function TEST_F (line 356) | TEST_F(TensorRTFlowUnitTest, RunUnitPlugin) {
    function TEST_F (line 377) | TEST_F(TensorRTFlowUnitTest, RunUnitSingleEncrypt) {

FILE: src/drivers/devices/cuda/flowunit/tensorrt/tensorrt_inference_plugin.h
  function class (line 27) | class TensorRTInferencePlugin {

FILE: src/drivers/devices/cuda/flowunit/tensorrt/test_plugin/generate_plugin.cc
  function CreatePlugin (line 20) | std::shared_ptr<TensorRTInferencePlugin> CreatePlugin() {

FILE: src/drivers/devices/cuda/flowunit/tensorrt/test_plugin/generate_plugin.h
  function class (line 28) | class OriginInferencePlugin : public TensorRTInferencePlugin {

FILE: src/drivers/devices/cuda/flowunit/torch/flowunit_desc.cc
  function CreateDriverFactory (line 31) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 37) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 45) | modelbox::Status DriverInit() {
  function DriverFini (line 50) | void DriverFini() {

FILE: src/drivers/devices/cuda/flowunit/torch/torch_inference_flowunit.cc
  function ConvertTorchTypeToModelBoxType (line 57) | modelbox::Status ConvertTorchTypeToModelBoxType(
  function ConvertModelBoxTypeToTorchType (line 69) | modelbox::Status ConvertModelBoxTypeToTorchType(

FILE: src/drivers/devices/cuda/flowunit/torch/torch_inference_flowunit.h
  function class (line 37) | class TorchInferenceFlowUnitDesc : public modelbox::FlowUnitDesc {
  function class (line 50) | class TorchInferenceParam {
  function class (line 58) | class TorchInferenceFlowUnit : public modelbox::FlowUnit {
  function class (line 120) | class TorchInferenceFlowUnitFactory : public modelbox::FlowUnitFactory {

FILE: src/drivers/devices/cuda/flowunit/torch/torch_inference_flowunit_test.cc
  type modelbox (line 35) | namespace modelbox {
    class TorchInferenceFlowUnitTest (line 36) | class TorchInferenceFlowUnitTest : public testing::Test {
      method TorchInferenceFlowUnitTest (line 38) | TorchInferenceFlowUnitTest()
      method SetUp (line 42) | void SetUp() override {
      method TearDown (line 54) | void TearDown() override {
    function TEST_F (line 332) | TEST_F(TorchInferenceFlowUnitTest, RunUnitSingleOutput) {
    function TEST_F (line 355) | TEST_F(TorchInferenceFlowUnitTest, RunUnitSingleOutputEncrypt) {
    function TEST_F (line 378) | TEST_F(TorchInferenceFlowUnitTest, RunUnitMutiOutput) {

FILE: src/drivers/devices/cuda/flowunit/video_decoder/nppi_color_converter.h
  function class (line 26) | class NppiColorConverter {

FILE: src/drivers/devices/cuda/flowunit/video_decoder/nvcodec_video_decoder.cc
  function NvcodecConcurrencyLimiter (line 26) | NvcodecConcurrencyLimiter *NvcodecConcurrencyLimiter::GetInstance() {

FILE: src/drivers/devices/cuda/flowunit/video_decoder/nvcodec_video_decoder.h
  function count_ (line 49) | uint32_t count_{0}
  function limited_ (line 50) | bool limited_{false};
  function class (line 53) | class NVDECException : public std::exception {
  function NVDECException (line 73) | inline NVDECException NVDECException::MakeNVDECException(
  function height (line 87) | int32_t height{0}
  function timestamp (line 88) | int64_t timestamp{0}
  function GetSize (line 101) | size_t GetSize() { return size_; }
  function GetPts (line 105) | int64_t GetPts() { return pts_; }
  function pts_ (line 110) | int64_t pts_{0}
  function GetWidth (line 128) | int32_t GetWidth() { return frame_width_; }
  function GetHeight (line 130) | int32_t GetHeight() { return frame_height_; }
  function std (line 132) | const std::string &GetFileUrl() { return file_url_; }
  function HandleVideoSequenceProc (line 142) | static int32_t CUDAAPI HandleVideoSequenceProc(void *user_data,
  function HandlePictureDecodeProc (line 148) | static int32_t CUDAAPI HandlePictureDecodeProc(void *user_data,
  function HandlePictureDisplayProc (line 153) | static int32_t CUDAAPI
  function GetFrameSize (line 179) | inline int32_t GetFrameSize() {
  function frame_width_ (line 194) | int32_t frame_width_{0}
  function frame_height_ (line 195) | int32_t frame_height_{0}
  function luma_height_ (line 196) | int32_t luma_height_{0}
  function chroma_height_ (line 197) | int32_t chroma_height_{0}
  function chroma_planes_number_ (line 198) | int32_t chroma_planes_number_{0}
  function surface_height_ (line 199) | int32_t surface_height_{0}
  function surface_width_ (line 200) | int32_t surface_width_{0}
  function cudaVideoChromaFormat (line 201) | cudaVideoChromaFormat chroma_format_{}
  function cudaVideoSurfaceFormat (line 202) | cudaVideoSurfaceFormat output_format_{}
  function byte_depth_per_pixel_ (line 203) | uint8_t byte_depth_per_pixel_{1}
  function cudaVideoCodec (line 204) | cudaVideoCodec codec_id_{}
  function CUVIDEOFORMAT (line 205) | CUVIDEOFORMAT video_format_{}
  function frame_count_in_one_decode_ (line 208) | size_t frame_count_in_one_decode_{0}
  function latest_pts_ (line 214) | int64_t latest_pts_{0}
  function gpu_id_ (line 215) | int32_t gpu_id_{0}
  function is_limiter_released_ (line 217) | bool is_limiter_released_{false};

FILE: src/drivers/devices/cuda/flowunit/video_decoder/video_decoder_flowunit.cc
  function MODELBOX_FLOWUNIT (line 383) | MODELBOX_FLOWUNIT(VideoDecoderFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 409) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/cuda/flowunit/video_decoder/video_decoder_flowunit.h
  function class (line 72) | class VideoDecoderFlowUnit : public modelbox::FlowUnit {
  function skip_err_frame_ (line 125) | bool skip_err_frame_{false};

FILE: src/drivers/devices/cuda/flowunit/video_decoder/video_decoder_flowunit_test.cc
  type modelbox (line 31) | namespace modelbox {
    class VideoDecoderCudaFlowUnitTest (line 32) | class VideoDecoderCudaFlowUnitTest : public testing::Test {
      method VideoDecoderCudaFlowUnitTest (line 34) | VideoDecoderCudaFlowUnitTest() = default;
      method SetUp (line 37) | void SetUp() override {
    function TEST_F (line 63) | TEST_F(VideoDecoderCudaFlowUnitTest, cudaDecoderNv12Test) {
    function TEST_F (line 68) | TEST_F(VideoDecoderCudaFlowUnitTest, cudaDecoderRgbTest) {
    function TEST_F (line 73) | TEST_F(VideoDecoderCudaFlowUnitTest, cudaDecoderBgrTest) {

FILE: src/drivers/devices/rockchip/common/video_out/ffmpeg_video_muxer.h
  function is_header_wrote_ (line 44) | bool is_header_wrote_{false};

FILE: src/drivers/devices/rockchip/common/video_out/ffmpeg_writer.h
  function class (line 29) | class FfmpegWriter {

FILE: src/drivers/devices/rockchip/core/device_rockchip.cc
  type modelbox (line 36) | namespace modelbox {
    function Status (line 45) | Status RockChip::DeviceExecute(const DevExecuteCallBack &rkfun,
    type sysinfo (line 102) | struct sysinfo
    type sysinfo (line 135) | struct sysinfo

FILE: src/drivers/devices/rockchip/core/driver_desc.cc
  type modelbox (line 25) | namespace modelbox {
    function Timer (line 29) | Timer *GetTimer() { return kRKDeviceTimer.get(); }
    function CreateDriverFactory (line 31) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
    function DriverDescription (line 37) | void DriverDescription(DriverDesc *desc) {
    function Status (line 44) | Status DriverInit() {
    function DriverFini (line 61) | void DriverFini() {

FILE: src/drivers/devices/rockchip/core/driver_desc.h
  function namespace (line 26) | namespace modelbox {

FILE: src/drivers/devices/rockchip/core/include/modelbox/device/rockchip/device_rockchip.h
  type MppBufHdl (line 27) | typedef void MppBufHdl;
  function SupportMemContiguous (line 43) | bool SupportMemContiguous() const override;
  function class (line 63) | class RockChipDesc : public DeviceDesc {
  function class (line 70) | class RKNNDevs {

FILE: src/drivers/devices/rockchip/core/include/modelbox/device/rockchip/rockchip_api.h
  function MppApi (line 81) | MppApi *rk_api_{nullptr};

FILE: src/drivers/devices/rockchip/core/include/modelbox/device/rockchip/rockchip_memory.h
  function namespace (line 32) | namespace modelbox {

FILE: src/drivers/devices/rockchip/core/rockchip_api.cc
  type modelbox (line 23) | namespace modelbox {
    function CreateEmptyMppImg (line 36) | std::shared_ptr<modelbox::Buffer> CreateEmptyMppImg(
    function RgaSURF_FORMAT (line 66) | RgaSURF_FORMAT GetRGAFormat(const std::string &fmt_str) {
    function RgaSURF_FORMAT (line 82) | RgaSURF_FORMAT GetRGAFormat(const MppFrameFormat &fmt_mpp) {
    function Status (line 92) | Status CopyNVMemory(uint8_t *psrc, uint8_t *pdst, int w, int h, int ws,
    function Status (line 120) | Status CopyRGBMemory(uint8_t *psrc, uint8_t *pdst, int w, int h, int ws,
    function Status (line 138) | Status GetRGAFromImgBuffer(const std::shared_ptr<Buffer> &in_img,
    function ColorChange (line 184) | std::shared_ptr<modelbox::Buffer> ColorChange(
    function MirrorImg (line 277) | std::shared_ptr<modelbox::Buffer> MirrorImg(
    function Status (line 415) | Status MppJpegDecode::Init() {
    function Status (line 450) | Status MppJpegDecode::ShutDown() {
    function Status (line 467) | Status MppJpegDecode::DecPkt(MppPacket &packet, int w, int h) {
    function MppPacket (line 542) | MppPacket MppJpegDecode::SendBuf(void *in_buf, int buf_len, int &w, in...
    function MppPacket (line 586) | MppPacket MppJpegDecode::SendBuf(MppBuffer &in_buf, int &w, int &h) {
    function Status (line 616) | Status MppJpegDecode::ReceiveFrame(MppFrame &out_frame) {
    function MppFrame (line 664) | MppFrame MppJpegDecode::Decode(void *in_buf, int buf_len, int &w, int ...
    function MppFrame (line 683) | MppFrame MppJpegDecode::Decode(MppBuffer &in_buf, int &w, int &h) {

FILE: src/drivers/devices/rockchip/core/rockchip_memory.cc
  type modelbox (line 28) | namespace modelbox {
    function Status (line 34) | Status RockChipMemoryPool::Init() {
    function Status (line 85) | Status RockChipMemoryManager::Init() {
    function Status (line 131) | Status RockChipMemoryManager::Copy(void *dest, size_t dest_size,
    function Status (line 166) | Status RockChipMemoryManager::GetDeviceMemUsage(size_t *free,
    function Status (line 189) | Status RockChipMemoryManager::DeviceMemoryCopy(

FILE: src/drivers/devices/rockchip/flowunit/crop/crop_flowunit.cc
  function MODELBOX_FLOWUNIT (line 157) | MODELBOX_FLOWUNIT(RockchipCropFlowUnit, rk_crop_desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 168) | MODELBOX_DRIVER_FLOWUNIT(rk_crop_desc) {

FILE: src/drivers/devices/rockchip/flowunit/crop/crop_flowunit.h
  function class (line 55) | class RockchipCropFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/rockchip/flowunit/crop/crop_flowunit_test.cc
  type modelbox (line 32) | namespace modelbox {
    class RockchipCropFlowUnitTest (line 33) | class RockchipCropFlowUnitTest : public testing::Test {
      method RockchipCropFlowUnitTest (line 35) | RockchipCropFlowUnitTest()
      method SetUp (line 40) | void SetUp() override {
      method TearDown (line 50) | void TearDown() override { crop_driver_flow_ = nullptr; }
    function TEST_F (line 66) | TEST_F(RockchipCropFlowUnitTest, RunUnit) {

FILE: src/drivers/devices/rockchip/flowunit/image_decoder/image_decoder.cc
  function MppFrame (line 54) | MppFrame ImageDecoderFlowUnit::JpegDec(
  function MODELBOX_FLOWUNIT (line 219) | MODELBOX_FLOWUNIT(ImageDecoderFlowUnit, rk_imgdec_desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 234) | MODELBOX_DRIVER_FLOWUNIT(rk_imgdec_desc) {

FILE: src/drivers/devices/rockchip/flowunit/image_decoder/image_decoder.h
  function RgaSURF_FORMAT (line 66) | RgaSURF_FORMAT out_pix_fmt_{RK_FORMAT_YCbCr_420_SP};

FILE: src/drivers/devices/rockchip/flowunit/image_decoder/image_decoder_test.cc
  type modelbox (line 34) | namespace modelbox {
    class RockchipImageDecoderFlowUnitTest (line 35) | class RockchipImageDecoderFlowUnitTest : public testing::Test {
      method RockchipImageDecoderFlowUnitTest (line 37) | RockchipImageDecoderFlowUnitTest()
      method SetUp (line 42) | void SetUp() override {
      method TearDown (line 52) | void TearDown() override { driver_flow_ = nullptr; }
    function TEST_F (line 69) | TEST_F(RockchipImageDecoderFlowUnitTest, DecodeTest) {
    function TEST_F (line 192) | TEST_F(RockchipImageDecoderFlowUnitTest, DecodeBase64Test) {

FILE: src/drivers/devices/rockchip/flowunit/inference_rknpu2/flowunit_desc.cc
  function CreateDriverFactory (line 30) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 36) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 43) | modelbox::Status DriverInit() {
  function DriverFini (line 48) | void DriverFini() {

FILE: src/drivers/devices/rockchip/flowunit/inference_rknpu2/rknpu2_inference.h
  function namespace (line 31) | namespace modelbox {

FILE: src/drivers/devices/rockchip/flowunit/inference_rknpu2/rknpu2_inference_flowunit.h
  function class (line 32) | class RKNPU2InferenceFlowUnit : public modelbox::FlowUnit {
  function class (line 48) | class RKNPU2InferenceFlowUnitDesc : public modelbox::FlowUnitDesc {
  function class (line 59) | class RKNPU2InferenceFlowUnitFactory : public modelbox::FlowUnitFactory {

FILE: src/drivers/devices/rockchip/flowunit/local_camera/local_camera_flowunit.cc
  function MppFrame (line 177) | MppFrame RockChipLocalCameraFlowUnit::SetMppFrameInfo(size_t w, size_t h,
  function MppFrame (line 198) | MppFrame RockChipLocalCameraFlowUnit::ProcessYVY2(
  function MppFrame (line 222) | MppFrame RockChipLocalCameraFlowUnit::ProcessJpg(
  function MppFrame (line 239) | MppFrame RockChipLocalCameraFlowUnit::ProcessNV12(
  function MppFrame (line 262) | MppFrame RockChipLocalCameraFlowUnit::ProcessRGB24(
  function MODELBOX_FLOWUNIT (line 351) | MODELBOX_FLOWUNIT(RockChipLocalCameraFlowUnit, rk_cam_desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 374) | MODELBOX_DRIVER_FLOWUNIT(rk_cam_desc) {

FILE: src/drivers/devices/rockchip/flowunit/local_camera/local_camera_flowunit.h
  function camWidth_ (line 71) | uint32_t camWidth_{0}
  function camHeight_ (line 72) | uint32_t camHeight_{0}
  function camera_id_ (line 73) | uint32_t camera_id_{0}
  function RgaSURF_FORMAT (line 79) | RgaSURF_FORMAT out_pix_fmt_{RK_FORMAT_YCbCr_420_SP};

FILE: src/drivers/devices/rockchip/flowunit/local_camera/v4l2_camera.cc
  type v4l2_buffer (line 45) | struct v4l2_buffer
  type v4l2_capability (line 82) | struct v4l2_capability
  type stat (line 84) | struct stat
  type v4l2_format (line 168) | struct v4l2_format
  type v4l2_format (line 187) | struct v4l2_format
  type v4l2_streamparm (line 229) | struct v4l2_streamparm
  type v4l2_requestbuffers (line 241) | struct v4l2_requestbuffers
  type v4l2_buffer (line 265) | struct v4l2_buffer
  type v4l2_plane (line 269) | struct v4l2_plane
  type v4l2_plane (line 307) | struct v4l2_plane
  type v4l2_buffer (line 308) | struct v4l2_buffer
  type v4l2_buf_type (line 330) | enum v4l2_buf_type
  type v4l2_buffer (line 404) | struct v4l2_buffer
  type v4l2_plane (line 408) | struct v4l2_plane
  type v4l2_buffer (line 440) | struct v4l2_buffer
  type v4l2_plane (line 445) | struct v4l2_plane

FILE: src/drivers/devices/rockchip/flowunit/local_camera/v4l2_camera.h
  type CamFrame (line 27) | typedef struct CamFrame_t {
  function GetWidth (line 40) | inline uint32_t GetWidth() { return width_; }
  function GetHeight (line 41) | inline uint32_t GetHeight() { return height_; }
  function GetFmt (line 42) | inline uint32_t GetFmt() { return cam_fmt_; }
  function type_ (line 59) | enum v4l2_buf_type type_ { V4L2_BUF_TYPE_VIDEO_CAPTURE };

FILE: src/drivers/devices/rockchip/flowunit/resize/resize_flowunit.cc
  function MODELBOX_FLOWUNIT (line 132) | MODELBOX_FLOWUNIT(ResizeFlowUnit, rk_resize_desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 146) | MODELBOX_DRIVER_FLOWUNIT(rk_resize_desc) {

FILE: src/drivers/devices/rockchip/flowunit/resize/resize_flowunit.h
  function class (line 50) | class ResizeFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/rockchip/flowunit/resize/resize_flowunit_test.cc
  type modelbox (line 36) | namespace modelbox {
    class RockchipResizeFlowUnitTest (line 37) | class RockchipResizeFlowUnitTest : public testing::Test {
      method RockchipResizeFlowUnitTest (line 39) | RockchipResizeFlowUnitTest()
      method SetUp (line 44) | void SetUp() override {
      method TearDown (line 53) | void TearDown() override { driver_flow_ = nullptr; }
      method GetJpegDecode (line 60) | std::shared_ptr<modelbox::MppJpegDecode> GetJpegDecode() {
    function TEST_F (line 73) | TEST_F(RockchipResizeFlowUnitTest, RunUnit) {

FILE: src/drivers/devices/rockchip/flowunit/to_cpuimg/mpp_to_cpu_flowunit.cc
  function MODELBOX_FLOWUNIT (line 129) | MODELBOX_FLOWUNIT(MppToCpuFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 138) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/rockchip/flowunit/to_cpuimg/mpp_to_cpu_flowunit.h
  function class (line 48) | class MppToCpuFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/rockchip/flowunit/to_cpuimg/mpp_to_cpu_flowunit_test.cc
  type modelbox (line 36) | namespace modelbox {
    class RockchipMppToCpuFlowUnitTest (line 37) | class RockchipMppToCpuFlowUnitTest : public testing::Test {
      method RockchipMppToCpuFlowUnitTest (line 39) | RockchipMppToCpuFlowUnitTest()
      method SetUp (line 44) | void SetUp() override {
      method TearDown (line 53) | void TearDown() override { driver_flow_ = nullptr; }
      method GetJpegDecode (line 60) | std::shared_ptr<modelbox::MppJpegDecode> GetJpegDecode() {
    function TEST_F (line 73) | TEST_F(RockchipMppToCpuFlowUnitTest, RunUnit) {

FILE: src/drivers/devices/rockchip/flowunit/video_decoder/rk_video_decoder.h
  function class (line 32) | class RKNPUVideoDecoder {

FILE: src/drivers/devices/rockchip/flowunit/video_decoder/video_decoder_flowunit.cc
  function MODELBOX_FLOWUNIT (line 171) | MODELBOX_FLOWUNIT(VideoDecoderFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 184) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/rockchip/flowunit/video_decoder/video_decoder_flowunit.h
  function class (line 73) | class VideoDecoderFlowUnit : public modelbox::FlowUnit {
  function RgaSURF_FORMAT (line 102) | RgaSURF_FORMAT out_pix_fmt_{RK_FORMAT_YCbCr_420_SP};

FILE: src/drivers/devices/rockchip/flowunit/video_decoder/video_decoder_flowunit_test.cc
  type modelbox (line 30) | namespace modelbox {
    class VideoDecoderRockchipFlowUnitTest (line 31) | class VideoDecoderRockchipFlowUnitTest : public testing::Test {
      method VideoDecoderRockchipFlowUnitTest (line 33) | VideoDecoderRockchipFlowUnitTest()
      method SetUp (line 38) | void SetUp() override {
      method TearDown (line 46) | void TearDown() override {}
    function TEST_F (line 63) | TEST_F(VideoDecoderRockchipFlowUnitTest, rockchipDecoderNv12Test) {
    function TEST_F (line 68) | TEST_F(VideoDecoderRockchipFlowUnitTest, rockchipDecoderRgbTest) {
    function TEST_F (line 73) | TEST_F(VideoDecoderRockchipFlowUnitTest, rockchipDecoderBgrTest) {

FILE: src/drivers/devices/rockchip/flowunit/video_out/ffmpeg_video_encoder.h
  function class (line 38) | class FfmpegVideoEncoder {

FILE: src/drivers/devices/rockchip/flowunit/video_out/video_out_flowunit.cc
  function MODELBOX_FLOWUNIT (line 366) | MODELBOX_FLOWUNIT(VideoOutFlowUnit, desc) {
  function MODELBOX_DRIVER_FLOWUNIT (line 379) | MODELBOX_DRIVER_FLOWUNIT(desc) {

FILE: src/drivers/devices/rockchip/flowunit/video_out/video_out_flowunit.h
  function class (line 62) | class VideoOutFlowUnit : public modelbox::FlowUnit {

FILE: src/drivers/devices/rockchip/flowunit/video_out/video_out_flowunit_test.cc
  type modelbox (line 30) | namespace modelbox {
    class RockchipVideoEncoderFlowUnitTest (line 31) | class RockchipVideoEncoderFlowUnitTest : public testing::Test {
      method RockchipVideoEncoderFlowUnitTest (line 33) | RockchipVideoEncoderFlowUnitTest() : flow_(std::make_shared<MockFlow...
    function Status (line 59) | Status RockchipVideoEncoderFlowUnitTest::AddMockFlowUnit() {
    function TEST_F (line 158) | TEST_F(RockchipVideoEncoderFlowUnitTest, InitUnit) {

FILE: src/drivers/graph_conf/graphviz/graph_conf_desc.cc
  function CreateDriverFactory (line 25) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 31) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 39) | modelbox::Status DriverInit() { return modelbox::STATUS_OK; }
  function DriverFini (line 41) | void DriverFini() {}

FILE: src/drivers/graph_conf/graphviz/graphviz_conf.cc
  type modelbox (line 9) | namespace modelbox {
    function GraphvizeError (line 13) | int GraphvizeError(char *errmsg) {
    function Status (line 165) | Status GraphvizConfig::TraversalsGraph(const std::shared_ptr<Agraph_t>...
    function Status (line 197) | Status GraphvizConfig::TraversalsNode(const std::shared_ptr<Agraph_t> &g,
    function Status (line 309) | Status GraphvizConfig::TraversalsEdge(const std::shared_ptr<Agraph_t> &g,

FILE: src/drivers/graph_conf/graphviz/graphviz_conf.h
  function namespace (line 14) | namespace modelbox {

FILE: src/drivers/inference_engine/dlengine/dlengine_inference.h
  function fix_shape_ (line 41) | bool fix_shape_{false};
  function device_id_ (line 95) | int32_t device_id_{0}

FILE: src/drivers/inference_engine/dlengine/dlengine_inference_flowunit_test.cc
  function Status (line 25) | Status DLEngineInferenceFlowUnitTest::SetUp(

FILE: src/drivers/inference_engine/dlengine/dlengine_inference_flowunit_test.h
  function class (line 23) | class DLEngineInferenceFlowUnitTest {

FILE: src/drivers/inference_engine/mindspore/mindspore_inference.h
  type MindSporeIOList (line 26) | struct MindSporeIOList {
  function batch_size_ (line 75) | int64_t batch_size_{0}
  type MindSporeIOList (line 76) | struct MindSporeIOList
  function model_need_padding_ (line 80) | bool model_need_padding_{false};

FILE: src/drivers/inference_engine/mindspore/mindspore_inference_flowunit_test.cc
  type modelbox (line 32) | namespace modelbox {
    function Status (line 34) | Status InferenceMindSporeFlowUnitTest::Init() {
    function Status (line 39) | Status InferenceMindSporeFlowUnitTest::Run(const std::string &name,
    function Status (line 46) | Status InferenceMindSporeFlowUnitTest::AddMockFlowUnit() {

FILE: src/drivers/inference_engine/mindspore/mindspore_inference_flowunit_test.h
  function namespace (line 30) | namespace modelbox {

FILE: src/drivers/inference_engine/tensorflow/tensorflow_inference_common.cc
  function ConvertTFTypeToModelBoxType (line 47) | modelbox::Status ConvertTFTypeToModelBoxType(
  function ConvertModelBoxTypeToTFType (line 58) | modelbox::Status ConvertModelBoxTypeToTFType(
  function DeleteTensor (line 70) | void DeleteTensor(TF_Tensor *tensor) {
  function StringHex2Hex (line 360) | static void StringHex2Hex(const std::vector<std::string> &string_vector,

FILE: src/drivers/inference_engine/tensorflow/tensorflow_inference_common.h
  function device (line 50) | int device{0}
  function class (line 65) | class InferenceTensorflowFlowUnitDesc : public modelbox::FlowUnitDesc {
  function TensorflowProcess (line 132) | TensorflowProcess post_process_{nullptr};

FILE: src/drivers/inference_engine/tensorflow/tensorflow_inference_plugin.h
  function class (line 29) | class InferencePlugin {

FILE: src/drivers/inference_engine/tensorflow/test_plugin/generate_plugin.cc
  function CreatePlugin (line 23) | std::shared_ptr<InferencePlugin> CreatePlugin() {

FILE: src/drivers/inference_engine/tensorflow/test_plugin/generate_plugin.h
  function class (line 28) | class OriginInferencePlugin : public InferencePlugin {

FILE: src/drivers/virtual/inference/virtualdriver_desc.cc
  function CreateDriverFactory (line 25) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 31) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 39) | modelbox::Status DriverInit() {
  function DriverFini (line 44) | void DriverFini() {

FILE: src/drivers/virtual/inference/virtualdriver_inference.h
  function class (line 30) | class InferenceVirtualDriverDesc : public modelbox::VirtualDriverDesc {
  function class (line 36) | class VirtualInferenceFlowUnitDesc : public modelbox::FlowUnitDesc {
  function class (line 52) | class InferenceVirtualDriver : public modelbox::VirtualDriver {
  function class (line 67) | class VirtualInferenceFlowUnitFactory : public modelbox::FlowUnitFactory {
  function class (line 112) | class InferenceVirtualDriverManager : public modelbox::VirtualDriverMana...

FILE: src/drivers/virtual/java/virtualdriver_desc.cc
  function CreateDriverFactory (line 25) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 31) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 39) | modelbox::Status DriverInit() {
  function DriverFini (line 44) | void DriverFini() {

FILE: src/drivers/virtual/java/virtualdriver_java.h
  function class (line 31) | class JavaVirtualDriverDesc : public modelbox::VirtualDriverDesc {
  function class (line 37) | class VirtualJavaFlowUnitDesc : public modelbox::FlowUnitDesc {
  function class (line 57) | class JavaVirtualDriver : public modelbox::VirtualDriver {
  function GetDriver (line 82) | void SetFlowUnitFactory(

FILE: src/drivers/virtual/python/virtualdriver_desc.cc
  function CreateDriverFactory (line 25) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 31) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 39) | modelbox::Status DriverInit() {
  function DriverFini (line 44) | void DriverFini() {

FILE: src/drivers/virtual/python/virtualdriver_python.h
  function class (line 31) | class PythonVirtualDriverDesc : public modelbox::VirtualDriverDesc {
  function class (line 37) | class VirtualPythonFlowUnitDesc : public modelbox::FlowUnitDesc {
  function class (line 57) | class PythonVirtualDriver : public modelbox::VirtualDriver {
  function GetDriver (line 82) | void SetFlowUnitFactory(

FILE: src/drivers/virtual/yolobox/virtualdriver_desc.cc
  function CreateDriverFactory (line 23) | std::shared_ptr<modelbox::DriverFactory> CreateDriverFactory() {
  function DriverDescription (line 29) | void DriverDescription(modelbox::DriverDesc *desc) {
  function DriverInit (line 36) | modelbox::Status DriverInit() {
  function DriverFini (line 41) | void DriverFini() {

FILE: src/drivers/virtual/yolobox/virtualdriver_yolobox.h
  function class (line 31) | class YoloBoxVirtualDriverDesc : public modelbox::VirtualDriverDesc {
  function class (line 37) | class YoloBoxVirtualFlowUnitDesc : public modelbox::FlowUnitDesc {
  function class (line 49) | class YoloBoxVirtualDriver : public modelbox::VirtualDriver {
  function class (line 63) | class YoloBoxVirtualFlowUnitFactory : public modelbox::FlowUnitFactory {
  function class (line 104) | class YoloBoxVirtualDriverManager : public modelbox::VirtualDriverManager {

FILE: src/java/jni/jni_export/buffer.cc
  function JNIEXPORT (line 33) | JNIEXPORT void JNICALL Java_com_modelbox_Buffer_BufferBuild__J(JNIEnv *env,
  function JNIEXPORT (line 53) | JNIEXPORT void JNICALL Java_com_modelbox_Buffer_BufferBuild___3B(
  function JNIEXPORT (line 97) | JNIEXPORT jbyteArray JNICALL
  function JNIEXPORT (line 131) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 186) | JNIEXPORT jboolean JNICALL
  function JNIEXPORT (line 204) | JNIEXPORT void JNICALL Java_com_modelbox_Buffer_BufferSetError(
  function JNIEXPORT (line 229) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 247) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 265) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 283) | JNIEXPORT void JNICALL Java_com_modelbox_Buffer_BufferSetMetaLong(
  function JNIEXPORT (line 309) | JNIEXPORT void JNICALL Java_com_modelbox_Buffer_BufferSetMetaInt(JNIEnv ...
  function JNIEXPORT (line 337) | JNIEXPORT void JNICALL Java_com_modelbox_Buffer_BufferSetMetaString(
  function JNIEXPORT (line 363) | JNIEXPORT void JNICALL Java_com_modelbox_Buffer_BufferSetMetaDouble(
  function JNIEXPORT (line 389) | JNIEXPORT void JNICALL Java_com_modelbox_Buffer_BufferSetMetaFloat(
  function JNIEXPORT (line 415) | JNIEXPORT void JNICALL Java_com_modelbox_Buffer_BufferSetMetaBool(
  function JNIEXPORT (line 441) | JNIEXPORT jlong JNICALL Java_com_modelbox_Buffer_BufferGetMetaLong(
  function JNIEXPORT (line 473) | JNIEXPORT jint JNICALL Java_com_modelbox_Buffer_BufferGetMetaInt(
  function JNIEXPORT (line 505) | JNIEXPORT jstring JNICALL Java_com_modelbox_Buffer_BufferGetMetaString(
  function JNIEXPORT (line 537) | JNIEXPORT jdouble JNICALL Java_com_modelbox_Buffer_BufferGetMetaDouble(
  function JNIEXPORT (line 569) | JNIEXPORT jfloat JNICALL Java_com_modelbox_Buffer_BufferGetMetaFloat(
  function JNIEXPORT (line 601) | JNIEXPORT jboolean JNICALL Java_com_modelbox_Buffer_BufferGetMetaBool(
  function JNIEXPORT (line 633) | JNIEXPORT void JNICALL Java_com_modelbox_Buffer_BufferCopyMeta(
  function JNIEXPORT (line 666) | JNIEXPORT jobject JNICALL

FILE: src/java/jni/jni_export/bufferlist.cc
  function JNIEXPORT (line 30) | JNIEXPORT void JNICALL Java_com_modelbox_BufferList_BufferListBuild(
  function JNIEXPORT (line 76) | JNIEXPORT jobject JNICALL Java_com_modelbox_BufferList_BufferListAt(
  function JNIEXPORT (line 108) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 126) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 159) | JNIEXPORT void JNICALL Java_com_modelbox_BufferList_BufferListPushBack__...
  function JNIEXPORT (line 203) | JNIEXPORT void JNICALL Java_com_modelbox_BufferList_BufferListAssign(
  function JNIEXPORT (line 221) | JNIEXPORT jbyteArray JNICALL
  function JNIEXPORT (line 249) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 305) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 369) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 399) | JNIEXPORT void JNICALL

FILE: src/java/jni/jni_export/configuration.cc
  function JNIEXPORT (line 32) | JNIEXPORT jboolean JNICALL
  function JNIEXPORT (line 59) | JNIEXPORT jint JNICALL Java_com_modelbox_Configuration_ConfigurationGetInt(
  function JNIEXPORT (line 83) | JNIEXPORT jlong JNICALL Java_com_modelbox_Configuration_ConfigurationGet...
  function JNIEXPORT (line 107) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 141) | JNIEXPORT jfloat JNICALL Java_com_modelbox_Configuration_ConfigurationGe...
  function JNIEXPORT (line 166) | JNIEXPORT jdouble JNICALL
  function JNIEXPORT (line 194) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 220) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 246) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 272) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 298) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 324) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 352) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 418) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 478) | JNIEXPORT void JNICALL Java_com_modelbox_Configuration_ConfigurationParser(
  function JNIEXPORT (line 503) | JNIEXPORT jlong JNICALL

FILE: src/java/jni/jni_export/data_meta.cc
  function JNIEXPORT (line 31) | JNIEXPORT jlong JNICALL Java_com_modelbox_DataMeta_DataMetaNew(JNIEnv *env,
  function JNIEXPORT (line 42) | JNIEXPORT void JNICALL Java_com_modelbox_DataMeta_DataMetaSet(JNIEnv *env,
  function JNIEXPORT (line 70) | JNIEXPORT jstring JNICALL Java_com_modelbox_DataMeta_DataMetaGetString(

FILE: src/java/jni/jni_export/datacontext.cc
  function JNIEXPORT (line 32) | JNIEXPORT jobject JNICALL Java_com_modelbox_DataContext_DataContext_1Input(
  function JNIEXPORT (line 71) | JNIEXPORT jobject JNICALL Java_com_modelbox_DataContext_DataContext_1Out...
  function JNIEXPORT (line 110) | JNIEXPORT jobject JNICALL Java_com_modelbox_DataContext_DataContext_1Ext...
  function JNIEXPORT (line 142) | JNIEXPORT jboolean JNICALL Java_com_modelbox_DataContext_DataContext_1Ha...
  function JNIEXPORT (line 160) | JNIEXPORT void JNICALL Java_com_modelbox_DataContext_DataContext_1SendEv...
  function JNIEXPORT (line 192) | JNIEXPORT void JNICALL Java_com_modelbox_DataContext_DataContext_1SetPri...
  function JNIEXPORT (line 222) | JNIEXPORT jobject JNICALL Java_com_modelbox_DataContext_DataContext_1Get...
  function JNIEXPORT (line 251) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 291) | JNIEXPORT void JNICALL Java_com_modelbox_DataContext_DataContext_1SetOut...
  function JNIEXPORT (line 324) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 355) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 386) | JNIEXPORT jobject JNICALL

FILE: src/java/jni/jni_export/device.cc
  function JNIEXPORT (line 32) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 50) | JNIEXPORT jstring JNICALL

FILE: src/java/jni/jni_export/external_data_map.cc
  function JNIEXPORT (line 31) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 64) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 99) | JNIEXPORT void JNICALL Java_com_modelbox_ExternalDataMap_ExternalDataMap...
  function JNIEXPORT (line 133) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 188) | JNIEXPORT void JNICALL Java_com_modelbox_ExternalDataMap_ExternalDataMap...
  function JNIEXPORT (line 206) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 225) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 256) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 287) | JNIEXPORT jobject JNICALL

FILE: src/java/jni/jni_export/external_data_select.cc
  function JNIEXPORT (line 31) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 43) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 83) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 116) | JNIEXPORT jobject JNICALL

FILE: src/java/jni/jni_export/flow.cc
  function JNIEXPORT (line 33) | JNIEXPORT jlong JNICALL Java_com_modelbox_Flow_FlowNew(JNIEnv *env,
  function JNIEXPORT (line 44) | JNIEXPORT jboolean JNICALL Java_com_modelbox_Flow_FlowWait(JNIEnv *env,
  function JNIEXPORT (line 83) | JNIEXPORT void JNICALL Java_com_modelbox_Flow_FlowStartRun(JNIEnv *env,
  function JNIEXPORT (line 101) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 127) | JNIEXPORT void JNICALL Java_com_modelbox_Flow_FlowInit__Ljava_lang_Strin...
  function JNIEXPORT (line 152) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 194) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 233) | JNIEXPORT void JNICALL Java_com_modelbox_Flow_FlowRegisterFlowUnit(
  function JNIEXPORT (line 265) | JNIEXPORT void JNICALL Java_com_modelbox_Flow_FlowStop(JNIEnv *env,
  function JNIEXPORT (line 282) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 313) | JNIEXPORT jobject JNICALL

FILE: src/java/jni/jni_export/flow_streamio.cc
  function JNIEXPORT (line 31) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 64) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 99) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 147) | JNIEXPORT jobject JNICALL Java_com_modelbox_FlowStreamIO_FlowStreamIO_1R...
  function JNIEXPORT (line 184) | JNIEXPORT void JNICALL Java_com_modelbox_FlowStreamIO_FlowStreamIO_1Clos...

FILE: src/java/jni/jni_export/flowunit.cc
  class JavaFlowUnit (line 29) | class JavaFlowUnit : public modelbox::FlowUnit {
    method JavaFlowUnit (line 31) | JavaFlowUnit() = default;
    method JavaInit (line 33) | modelbox::Status JavaInit(JNIEnv *env, jobject j_flowunit) {
    method Open (line 99) | modelbox::Status Open(
    method Process (line 130) | modelbox::Status Process(
    method Close (line 174) | modelbox::Status Close() override {
    method DataPre (line 197) | modelbox::Status DataPre(
    method DataPost (line 229) | modelbox::Status DataPost(
  function JNIEXPORT (line 270) | JNIEXPORT jlong JNICALL

FILE: src/java/jni/jni_export/flowunit_builder.cc
  class JavaFlowUnitBuilder (line 30) | class JavaFlowUnitBuilder : public modelbox::FlowUnitBuilder {
    method JavaFlowUnitBuilder (line 32) | JavaFlowUnitBuilder(jobject j_builder) {
    method Probe (line 52) | void Probe(std::shared_ptr<modelbox::FlowUnitDesc> &desc) override {
    method Build (line 85) | std::shared_ptr<modelbox::FlowUnit> Build() override {
  function JNIEXPORT (line 135) | JNIEXPORT jlong JNICALL Java_com_modelbox_FlowUnitBuilder_FlowUnitBuilde...

FILE: src/java/jni/jni_export/flowunit_desc.cc
  function JNIEXPORT (line 34) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 45) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 64) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 83) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 101) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 119) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 138) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 157) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 184) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 211) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 238) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 261) | JNIEXPORT void JNICALL Java_com_modelbox_FlowUnitDesc_FlowUnitDescSetLoo...
  function JNIEXPORT (line 282) | JNIEXPORT void JNICALL Java_com_modelbox_FlowUnitDesc_FlowUnitDescSetOut...
  function JNIEXPORT (line 303) | JNIEXPORT void JNICALL Java_com_modelbox_FlowUnitDesc_FlowUnitDescSetFlo...
  function JNIEXPORT (line 324) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 342) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 360) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 379) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 397) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 415) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 435) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 453) | JNIEXPORT void JNICALL

FILE: src/java/jni/jni_export/flowunit_error.cc
  function JNIEXPORT (line 31) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 50) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 79) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 98) | JNIEXPORT jobject JNICALL

FILE: src/java/jni/jni_export/flowunit_event.cc
  function JNIEXPORT (line 32) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 43) | JNIEXPORT void JNICALL Java_com_modelbox_FlowUnitEvent_FlowUnitEventSet(
  function JNIEXPORT (line 73) | JNIEXPORT jobject JNICALL Java_com_modelbox_FlowUnitEvent_FlowUnitEventGet(

FILE: src/java/jni/jni_export/flowunit_input.cc
  function JNIEXPORT (line 34) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 47) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 61) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 75) | JNIEXPORT jlong JNICALL

FILE: src/java/jni/jni_export/flowunit_output.cc
  function JNIEXPORT (line 34) | JNIEXPORT jlong JNICALL
  function JNIEXPORT (line 47) | JNIEXPORT jlong JNICALL

FILE: src/java/jni/jni_export/log.cc
  function JNIEXPORT (line 34) | JNIEXPORT jlong JNICALL Java_com_modelbox_Log_LogNew(JNIEnv *env,
  function JNIEXPORT (line 45) | JNIEXPORT void JNICALL Java_com_modelbox_Log_LogSetLogLevel(JNIEnv *env,
  function JNIEXPORT (line 64) | JNIEXPORT jlong JNICALL Java_com_modelbox_Log_LogGetLogLevel(JNIEnv *env,
  function JNIEXPORT (line 86) | JNIEXPORT jobject JNICALL Java_com_modelbox_Log_LogGetLogger(JNIEnv *env,
  function JNIEXPORT (line 110) | JNIEXPORT void JNICALL Java_com_modelbox_Log_LogReg(JNIEnv *env, jclass ...
  function JNIEXPORT (line 129) | JNIEXPORT void JNICALL Java_com_modelbox_Log_LogUnReg(JNIEnv *env,
  function JNIEXPORT (line 139) | JNIEXPORT void JNICALL Java_com_modelbox_Log_LogPrint(

FILE: src/java/jni/jni_export/native_object.cc
  function JNIEXPORT (line 31) | JNIEXPORT void JNICALL Java_com_modelbox_NativeObject_delete_1handle(

FILE: src/java/jni/jni_export/session_context.cc
  function JNIEXPORT (line 32) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 51) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 70) | JNIEXPORT jobject JNICALL
  function JNIEXPORT (line 102) | JNIEXPORT void JNICALL
  function JNIEXPORT (line 131) | JNIEXPORT jobject JNICALL

FILE: src/java/jni/jni_export/status.cc
  function jobject (line 28) | jobject GetJStatusCodeFromStatus(JNIEnv *env, modelbox::Status &status) {
  function JNIEXPORT (line 56) | JNIEXPORT jlong JNICALL Java_com_modelbox_Status_StatusNew(JNIEnv *env,
  function JNIEXPORT (line 67) | JNIEXPORT void JNICALL Java_com_modelbox_Status_StatusSetCode(JNIEnv *env,
  function JNIEXPORT (line 92) | JNIEXPORT void JNICALL Java_com_modelbox_Status_StatusWrap(
  function JNIEXPORT (line 126) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 144) | JNIEXPORT jobject JNICALL Java_com_modelbox_Status_StatusCode(JNIEnv *env,
  function JNIEXPORT (line 166) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 184) | JNIEXPORT void JNICALL Java_com_modelbox_Status_StatusSetErrorMsg(
  function JNIEXPORT (line 202) | JNIEXPORT jstring JNICALL
  function JNIEXPORT (line 220) | JNIEXPORT jstring JNICALL

FILE: src/java/jni/jni_native_object.cc
  type modelbox (line 23) | namespace modelbox {
    function jobject (line 34) | jobject JNINativeObject::GetJObject() { return jni_object_; }
    function Status (line 42) | Status JNINativeObject::SetNativeSharedPtr(
    function Status (line 54) | Status JNINativeObject::SetNativeSharedPtr(
    function JNINativeObject (line 72) | JNINativeObject *JNINativeObject::FromHandle(jlong handle) {
    function JNINativeObject (line 76) | JNINativeObject *JNINativeObject::FromJObject(JNIEnv *env, jobject obj...
    function jlong (line 114) | jlong JNINativeObject::NewHandle(
    function jobject (line 120) | jobject JNINativeObject::NewJObject(

FILE: src/java/jni/jni_native_object.h
  function namespace (line 27) | namespace modelbox {

FILE: src/java/jni/log.cc
  type modelbox (line 23) | namespace modelbox {
    function jobject (line 49) | jobject LoggerJava::GetJNICaller() { return logger_; }
    function LogLevel (line 87) | LogLevel LoggerJava::GetLogLevel() { return level_; }

FILE: src/java/jni/log.h
  function jmethodID (line 45) | jmethodID log_mid_{nullptr};

FILE: src/java/jni/modelbox_jni.cc
  function JNIEXPORT (line 26) | JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {
  function JNIEXPORT (line 37) | JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) {
  function JNIEXPORT (line 46) | JNIEXPORT void JNICALL Java_com_modelbox_ModelBox_SetDefaultScanPath(
  function JNIEXPORT (line 63) | JNIEXPORT void JNICALL Java_com_modelbox_ModelBox_SetDefaultInfoPath(

FILE: src/java/jni/scoped_jvm.cc
  type modelbox (line 24) | namespace modelbox {
    function JavaVM (line 28) | JavaVM *ScopedJvm::GetJavaVM() { return jvm_; }
    function JNIEnv (line 67) | JNIEnv *ScopedJvm::GetJNIEnv() { return env_; }

FILE: src/java/jni/scoped_jvm.h
  function do_attach_ (line 37) | bool do_attach_{false};

FILE: src/java/jni/throw.cc
  type modelbox (line 26) | namespace modelbox {
    function do_jni_throw (line 62) | static void do_jni_throw(JNIEnv *env, const char *except_name,
    function ModelBoxJNIThrow (line 82) | void ModelBoxJNIThrow(JNIEnv *env, Status &status) {
    function ModelBoxJNIThrow (line 86) | void ModelBoxJNIThrow(JNIEnv *env, StatusCode code,
    function ModelBoxJNIThrow (line 101) | void ModelBoxJNIThrow(JNIEnv *env, const char *runtime_exception,
    function ModelboxJNICatchException (line 106) | std::shared_ptr<Status> ModelboxJNICatchException(JNIEnv *env) {
    function ModelboxExceptionMsg (line 154) | std::string ModelboxExceptionMsg(JNIEnv *env, std::string *stack) {

FILE: src/java/jni/throw.h
  function namespace (line 24) | namespace modelbox {

FILE: src/java/jni/utils.cc
  type modelbox (line 21) | namespace modelbox {
    function jstring2string (line 23) | std::string jstring2string(JNIEnv *env, jstring jStr) {

FILE: src/java/jni/utils.h
  function namespace (line 27) | namespace modelbox {

FILE: src/java/src/main/java/com/modelbox/Buffer.java
  class Buffer (line 24) | public class Buffer extends NativeObject {
    method Buffer (line 25) | private Buffer() {
    method build (line 33) | public void build(long size) throws ModelBoxException {
    method build (line 41) | public void build(byte[] data) throws ModelBoxException {
    method getData (line 49) | public byte[] getData() throws ModelBoxException {
    method getDirectData (line 58) | public ByteBuffer getDirectData() throws ModelBoxException {
    method hasError (line 65) | public boolean hasError() {
    method setError (line 74) | public void setError(String code, String message) throws ModelBoxExcep...
    method getErrorCode (line 82) | public String getErrorCode() {
    method getErrorMsg (line 90) | public String getErrorMsg() {
    method getBytes (line 98) | public long getBytes() {
    method copyMeta (line 108) | public void copyMeta(Buffer buffer, boolean isOverWrite) throws ModelB...
    method copyMeta (line 116) | public void copyMeta(Buffer buffer) {
    method setMetaLong (line 125) | public void setMetaLong(String key, long value) throws ModelBoxExcepti...
    method setMetaInt (line 134) | public void setMetaInt(String key, int value) throws ModelBoxException {
    method setMetaString (line 143) | public void setMetaString(String key, String value) throws ModelBoxExc...
    method setMetaDouble (line 152) | public void setMetaDouble(String key, double value) throws ModelBoxExc...
    method setMetaFloat (line 161) | public void setMetaFloat(String key, float value) throws ModelBoxExcep...
    method setMetaBoolean (line 170) | public void setMetaBoolean(String key, boolean value) throws ModelBoxE...
    method getMetaLong (line 179) | public long getMetaLong(String key) throws ModelBoxException {
    method getMetaLong (line 189) | public long getMetaLong(String key, long defaultValue) {
    method getMetaInt (line 202) | public int getMetaInt(String key) throws ModelBoxException {
    method getMetaInt (line 212) | public int getMetaInt(String key, int defaultValue) {
    method getMetaString (line 225) | public String getMetaString(String key) throws ModelBoxException {
    method getMetaString (line 235) | public String getMetaString(String key, String defaultValue) {
    method getMetaDouble (line 248) | public double getMetaDouble(String key) throws ModelBoxException {
    method getMetaDouble (line 258) | public double getMetaDouble(String key, double defaultValue) {
    method getMetaFloat (line 271) | public float getMetaFloat(String key) throws ModelBoxException {
    method getMetaFloat (line 281) | public float getMetaFloat(String key, float defaultValue) {
    method getMetaBool (line 294) | public boolean getMetaBool(String key) throws ModelBoxException {
    method getMetaBool (line 304) | public boolean getMetaBool(String key, boolean defaultValue) {
    method getDevice (line 316) | public Device getDevice() {
    method BufferBuild (line 320) | private native void BufferBuild(long size);
    method BufferBuild (line 322) | private native void BufferBuild(byte[] data);
    method BufferGetData (line 324) | private native byte[] BufferGetData();
    method BufferGetDirectData (line 326) | private native ByteBuffer BufferGetDirectData();
    method BufferHasError (line 328) | private native boolean BufferHasError();
    method BufferSetError (line 330) | private native void BufferSetError(String code, String message);
    method BufferGetErrorCode (line 332) | private native String BufferGetErrorCode();
    method BufferGetErrorMsg (line 334) | private native String BufferGetErrorMsg();
    method BufferGetBytes (line 336) | private native long BufferGetBytes();
    method BufferSetMetaLong (line 338) | private native void BufferSetMetaLong(String key, long value);
    method BufferSetMetaInt (line 340) | private native void BufferSetMetaInt(String key, int value);
    method BufferSetMetaString (line 342) | private native void BufferSetMetaString(String key, String value);
    method BufferSetMetaDouble (line 344) | private native void BufferSetMetaDouble(String key, double value);
    method BufferSetMetaFloat (line 346) | private native void BufferSetMetaFloat(String key, float value);
    method BufferSetMetaBoolean (line 348) | private native void BufferSetMetaBoolean(String key, boolean value);
    method BufferGetMetaLong (line 350) | private native long BufferGetMetaLong(String key);
    method BufferGetMetaInt (line 352) | private native int BufferGetMetaInt(String key);
    method BufferGetMetaString (line 354) | private native String BufferGetMetaString(String key);
    method BufferGetMetaDouble (line 356) | private native double BufferGetMetaDouble(String key);
    method BufferGetMetaFloat (line 358) | private native float BufferGetMetaFloat(String key);
    method BufferGetMetaBool (line 360) | private native boolean BufferGetMetaBool(String key);
    method BufferCopyMeta (line 362) | private native void BufferCopyMeta(Buffer buffer, boolean isOverWrite);
    method BufferGetDevice (line 364) | private native Device BufferGetDevice();

FILE: src/java/src/main/java/com/modelbox/BufferList.java
  class BufferList (line 27) | public class BufferList extends NativeObject implements Iterable<Buffer> {
    class BufferListIterator (line 29) | class BufferListIterator implements Iterator<Buffer> {
      method hasNext (line 31) | @Override
      method next (line 39) | @Override
      method SetBufferList (line 46) | protected void SetBufferList(BufferList list) {
    method iterator (line 54) | public Iterator<Buffer> iterator() {
    method BufferList (line 64) | private BufferList() {
    method build (line 72) | public void build(int[] sizeList) {
    method at (line 81) | public Buffer at(long index) {
    method size (line 89) | public long size() {
    method pushBack (line 97) | public void pushBack(Buffer buffer) {
    method pushBack (line 105) | public void pushBack(byte[] data) {
    method assign (line 113) | public void assign(Buffer[] buffers) {
    method getData (line 121) | public byte[] getData() {
    method getDirectData (line 130) | public ByteBuffer getDirectData() {
    method getDirectData (line 140) | public ByteBuffer getDirectData(int index) {
    method getDevice (line 148) | public Device getDevice() {
    method reset (line 156) | public void reset() {
    method BufferListBuild (line 160) | private native void BufferListBuild(int[] sizeList);
    method BufferListAt (line 162) | private native Buffer BufferListAt(long index);
    method BufferListSize (line 164) | private native long BufferListSize();
    method BufferListPushBack (line 166) | private native void BufferListPushBack(Buffer buffer);
    method BufferListPushBack (line 168) | private native void BufferListPushBack(byte[] data);
    method BufferListAssign (line 170) | private native void BufferListAssign(Buffer[] buffers);
    method BufferListGetData (line 172) | private native byte[] BufferListGetData();
    method BufferListGetDirectData (line 174) | private native ByteBuffer BufferListGetDirectData();
    method BufferListGetDirectData (line 176) | private native ByteBuffer BufferListGetDirectData(int index);
    method BufferListGetDevice (line 178) | private native Device BufferListGetDevice();
    method BufferListReset (line 180) | private native void BufferListReset();

FILE: src/java/src/main/java/com/modelbox/Configuration.java
  class Configuration (line 24) | public class Configuration extends NativeObject {
    method Configuration (line 25) | public Configuration() {
    method Parser (line 34) | public void Parser(String file) throws ModelBoxException {
    method getBoolean (line 43) | public boolean getBoolean(String key, boolean defaultValue) {
    method getInt (line 52) | public int getInt(String key, int defaultValue) {
    method getLong (line 61) | public long getLong(String key, long defaultValue) {
    method getString (line 70) | public String getString(String key, String defaultValue) {
    method getFloat (line 79) | public float getFloat(String key, float defaultValue) {
    method getDouble (line 88) | public double getDouble(String key, double defaultValue) {
    method set (line 97) | public void set(String key, boolean value) {
    method set (line 104) | public void set(String key, int value) {
    method set (line 111) | public void set(String key, long value) {
    method set (line 121) | public void set(String key, float value) {
    method set (line 130) | public void set(String key, double value) {
    method set (line 139) | public void set(String key, String value) {
    method getStrings (line 148) | public ArrayList<String> getStrings(String key, ArrayList<String> defa...
    method set (line 157) | public void set(String key, ArrayList<String> values) {
    method ConfigurationGetBoolean (line 161) | private native boolean ConfigurationGetBoolean(String key, boolean def...
    method ConfigurationGetInt (line 163) | private native int ConfigurationGetInt(String key, int defaultValue);
    method ConfigurationGetLong (line 165) | private native long ConfigurationGetLong(String key, long defaultValue);
    method ConfigurationGetString (line 167) | private native String ConfigurationGetString(String key, String defaul...
    method ConfigurationGetFloat (line 169) | private native float ConfigurationGetFloat(String key, float defaultVa...
    method ConfigurationGetDouble (line 171) | private native double ConfigurationGetDouble(String key, double defaul...
    method ConfigurationSet (line 173) | private native void ConfigurationSet(String key, boolean value);
    method ConfigurationSet (line 175) | private native void ConfigurationSet(String key, int value);
    method ConfigurationSet (line 177) | private native void ConfigurationSet(String key, long value);
    method ConfigurationSet (line 179) | private native void ConfigurationSet(String key, float value);
    method ConfigurationSet (line 181) | private native void ConfigurationSet(String key, double value);
    method ConfigurationSet (line 183) | private native void ConfigurationSet(String key, String value);
    method ConfigurationGetStrings (line 185) | private native ArrayList<String> ConfigurationGetStrings(String key,
    method ConfigurationSet (line 188) | private native void ConfigurationSet(String key, ArrayList<String> val...
    method ConfigurationParser (line 190) | private native void ConfigurationParser(String file);
    method ConfigurationNew (line 192) | private native long ConfigurationNew();

FILE: src/java/src/main/java/com/modelbox/DataContext.java
  class DataContext (line 19) | public class DataContext extends NativeObject {
    method DataContext (line 20) | private DataContext() {
    method input (line 29) | public BufferList input(String portName) {
    method output (line 38) | public BufferList output(String portName) {
    method external (line 46) | public BufferList external() {
    method hasError (line 54) | public boolean hasError() {
    method sendEvent (line 62) | public void sendEvent(FlowUnitEvent event) {
    method setPrivate (line 71) | public void setPrivate(String key, Object priv) {
    method getPrivate (line 80) | public Object getPrivate(String key) {
    method getInputMeta (line 89) | public DataMeta getInputMeta(String portName) {
    method setOutputMeta (line 98) | public void setOutputMeta(String portName, DataMeta dataMeta) {
    method getSessionContext (line 106) | public SessionContext getSessionContext() {
    method getSessionConfig (line 114) | public Configuration getSessionConfig() {
    method getStatistics (line 122) | public StatisticsItem getStatistics() {
    method DataContext_Input (line 126) | private native BufferList DataContext_Input(String portName);
    method DataContext_Output (line 128) | private native BufferList DataContext_Output(String portName);
    method DataContext_External (line 130) | private native BufferList DataContext_External();
    method DataContext_HasError (line 132) | private native boolean DataContext_HasError();
    method DataContext_SendEvent (line 134) | private native void DataContext_SendEvent(FlowUnitEvent event);
    method DataContext_SetPrivate (line 136) | private native void DataContext_SetPrivate(String key, Object priv);
    method DataContext_GetPrivate (line 138) | private native Object DataContext_GetPrivate(String key);
    method DataContext_GetInputMeta (line 140) | private native DataMeta DataContext_GetInputMeta(String portName);
    method DataContext_SetOututMeta (line 142) | private native void DataContext_SetOututMeta(String portName, DataMeta...
    method DataContext_GetSessionContext (line 144) | private native SessionContext DataContext_GetSessionContext();
    method DataContext_GetSessionConfig (line 146) | private native Configuration DataContext_GetSessionConfig();
    method DataContext_GetStatistics (line 148) | private native StatisticsItem DataContext_GetStatistics();

FILE: src/java/src/main/java/com/modelbox/DataMeta.java
  class DataMeta (line 22) | public class DataMeta extends NativeObject {
    method DataMeta (line 23) | public DataMeta() {
    method set (line 32) | public void set(String key, String value) {
    method getString (line 36) | public String getString(String key) {
    method DataMetaNew (line 40) | private native long DataMetaNew();
    method DataMetaSet (line 42) | private native void DataMetaSet(String key, String meta);
    method DataMetaGetString (line 44) | private native String DataMetaGetString(String key);

FILE: src/java/src/main/java/com/modelbox/Device.java
  class Device (line 22) | public class Device extends NativeObject {
    method Device (line 23) | private Device() {
    method getType (line 31) | public String getType() {
    method getDeviceID (line 39) | public String getDeviceID() {
    method DeviceGetType (line 43) | private native String DeviceGetType();
    method DeviceGetDeviceID (line 45) | private native String DeviceGetDeviceID();

FILE: src/java/src/main/java/com/modelbox/ExternalDataMap.java
  class ExternalDataMap (line 25) | public class ExternalDataMap extends NativeObject {
    method ExternalDataMap (line 28) | private ExternalDataMap() {
    method CreateBufferList (line 36) | public BufferList CreateBufferList() {
    method setOutputMeta (line 45) | public void setOutputMeta(String name, DataMeta meta) {
    method send (line 55) | public void send(String portName, BufferList bufferlist) throws ModelB...
    method recv (line 68) | public HashMap<String, BufferList> recv(long timeout) throws ModelBoxE...
    method recv (line 77) | public HashMap<String, BufferList> recv() throws ModelBoxException {
    method close (line 84) | public void close() {
    method shutdown (line 91) | public void shutdown() {
    method setPrivate (line 99) | public void setPrivate(Object o) {
    method getPrivate (line 108) | @SuppressWarnings("unchecked")
    method getSessionContext (line 121) | public SessionContext getSessionContext() {
    method getSessionConfig (line 129) | public Configuration getSessionConfig() {
    method getLastError (line 137) | public FlowUnitError getLastError() {
    method ExternalDataMap_CreateBufferList (line 141) | private native BufferList ExternalDataMap_CreateBufferList();
    method ExternalDataMap_SetOutputMeta (line 143) | private native void ExternalDataMap_SetOutputMeta(String name, DataMet...
    method ExternalDataMap_Send (line 145) | private native void ExternalDataMap_Send(String portName, BufferList b...
    method ExternalDataMap_Recv (line 147) | private native HashMap<String, BufferList> ExternalDataMap_Recv(long t...
    method ExternalDataMap_Close (line 149) | private native void ExternalDataMap_Close();
    method ExternalDataMap_Shutdown (line 151) | private native void ExternalDataMap_Shutdown();
    method ExternalDataMap_GetSessionContext (line 153) | private native SessionContext ExternalDataMap_GetSessionContext();
    method ExternalDataMap_GetSessionConfig (line 155) | private native Configuration ExternalDataMap_GetSessionConfig();
    method ExternalDataMap_GetLastError (line 157) | private native FlowUnitError ExternalDataMap_GetLastError();

FILE: src/java/src/main/java/com/modelbox/ExternalDataSelect.java
  class ExternalDataSelect (line 24) | public class ExternalDataSelect extends NativeObject {
    method ExternalDataSelect (line 25) | public ExternalDataSelect() {
    method register (line 33) | public void register(ExternalDataMap dataMap) {
    method remove (line 41) | public void remove(ExternalDataMap dataMap) {
    method select (line 51) | public ArrayList<ExternalDataMap> select(long timeout) throws ModelBox...
    method select (line 61) | public ArrayList<ExternalDataMap> select() throws ModelBoxException {
    method ExternalDataSelect_New (line 65) | private native long ExternalDataSelect_New();
    method ExternalDataSelect_RegisterExternalData (line 67) | private native void ExternalDataSelect_RegisterExternalData(ExternalDa...
    method ExternalDataSelect_RemoveExternalData (line 69) | private native void ExternalDataSelect_RemoveExternalData(ExternalData...
    method ExternalDataSelect_SelectExternalData (line 71) | private native ArrayList<ExternalDataMap> ExternalDataSelect_SelectExt...

FILE: src/java/src/main/java/com/modelbox/Flow.java
  class Flow (line 22) | public class Flow extends NativeObject {
    method Flow (line 23) | public Flow() {
    method init (line 33) | public void init(String name, String graph) throws ModelBoxException {
    method init (line 42) | public void init(String file) throws ModelBoxException {
    method initByName (line 53) | public void initByName(String name, Configuration args, String flowDir...
    method initByName (line 63) | public void initByName(String name, Configuration args) throws ModelBo...
    method initByName (line 73) | public void initByName(String name) throws ModelBoxException {
    method RegisterFlowUnit (line 82) | public void RegisterFlowUnit(FlowUnitBuilder flowunit_builder) throws ...
    method startRun (line 90) | public void startRun() throws ModelBoxException {
    method waitFor (line 98) | public void waitFor() throws ModelBoxException {
    method waitFor (line 108) | public boolean waitFor(long timeout) throws ModelBoxException {
    method waitFor (line 120) | public boolean waitFor(long timeout, Status retval) throws ModelBoxExc...
    method stop (line 128) | public void stop() throws ModelBoxException {
    method createExternalDataMap (line 137) | public ExternalDataMap createExternalDataMap() throws ModelBoxException {
    method CreateStreamIO (line 146) | public FlowStreamIO CreateStreamIO() throws ModelBoxException {
    method FlowNew (line 150) | private native long FlowNew();
    method FlowWait (line 152) | private native boolean FlowWait(long timeout, Status status);
    method FlowStartRun (line 154) | private native void FlowStartRun();
    method FlowInit (line 156) | private native void FlowInit(String name, String graph);
    method FlowInit (line 158) | private native void FlowInit(String file);
    method FlowInitByName (line 160) | private native void FlowInitByName(String name, Configuration args, St...
    method FlowInitByName (line 162) | private native void FlowInitByName(String name, Configuration args);
    method FlowRegisterFlowUnit (line 164) | private native void FlowRegisterFlowUnit(FlowUnitBuilder flowunit_buil...
    method FlowStop (line 166) | private native void FlowStop();
    method FlowCreateExternalDataMap (line 168) | private native ExternalDataMap FlowCreateExternalDataMap();
    method FlowCreateStreamIO (line 170) | private native FlowStreamIO FlowCreateStreamIO();

FILE: src/java/src/main/java/com/modelbox/FlowStreamIO.java
  class FlowStreamIO (line 22) | public class FlowStreamIO extends NativeObject {
    method FlowStreamIO (line 23) | private FlowStreamIO() {
    method createBuffer (line 32) | public Buffer createBuffer() throws ModelBoxException {
    method send (line 42) | public void send(String inputName, Buffer buffer) throws ModelBoxExcep...
    method send (line 52) | public void send(String inputName, byte[] data) throws ModelBoxExcepti...
    method recv (line 73) | public Buffer recv(String outputName, long timeout) throws ModelBoxExc...
    method closeInput (line 80) | public void closeInput() {
    method FlowStreamIO_CreateBuffer (line 84) | private native Buffer FlowStreamIO_CreateBuffer();
    method FlowStreamIO_Send (line 86) | private native void FlowStreamIO_Send(String inputName, Buffer buffer);
    method FlowStreamIO_Send (line 88) | private native void FlowStreamIO_Send(String inputName, byte[] data);
    method FlowStreamIO_Recv (line 90) | private native Buffer FlowStreamIO_Recv(String outputName, long timeout);
    method FlowStreamIO_CloseInput (line 92) | private native void FlowStreamIO_CloseInput();

FILE: src/java/src/main/java/com/modelbox/FlowUnit.java
  class FlowUnit (line 19) | abstract public class FlowUnit extends NativeObject {
    method FlowUnit (line 20) | public FlowUnit() {
    method open (line 29) | public void open(Configuration opts) throws ModelBoxException {}
    method close (line 35) | public void close() throws ModelBoxException {}
    method process (line 42) | abstract public Status process(DataContext data_ctx) throws ModelBoxEx...
    method dataPre (line 49) | public void dataPre(DataContext data_ctx) throws ModelBoxException {}
    method dataPost (line 56) | public void dataPost(DataContext data_ctx) throws ModelBoxException {}
    method FlowUnit_New (line 58) | private native long FlowUnit_New();

FILE: src/java/src/main/java/com/modelbox/FlowUnitBuilder.java
  class FlowUnitBuilder (line 22) | abstract public class FlowUnitBuilder extends NativeObject {
    method FlowUnitBuilder (line 23) | public FlowUnitBuilder() {
    method probe (line 31) | abstract public void probe(FlowUnitDesc desc) throws ModelBoxException;
    method build (line 37) | abstract public FlowUnit build() throws ModelBoxException;
    method FlowUnitBuilderNew (line 39) | private native long FlowUnitBuilderNew();

FILE: src/java/src/main/java/com/modelbox/FlowUnitDesc.java
  class FlowUnitDesc (line 22) | public class FlowUnitDesc extends NativeObject {
    type FlowOutputType (line 23) | public enum FlowOutputType {
    type FlowType (line 27) | public enum FlowType {
    type ConditionType (line 31) | public enum ConditionType {
    type LoopType (line 35) | public enum LoopType {
    method FlowUnitDesc (line 39) | public FlowUnitDesc() {
    method GetFlowUnitName (line 47) | public String GetFlowUnitName() {
    method GetFlowUnitType (line 55) | public String GetFlowUnitType() {
    method GetFlowUnitAliasName (line 63) | public String GetFlowUnitAliasName() {
    method GetFlowUnitArgument (line 71) | public String GetFlowUnitArgument() {
    method SetFlowUnitName (line 79) | public void SetFlowUnitName(String flowunit_name) {
    method SetFlowUnitType (line 87) | public void SetFlowUnitType(String flowunit_type) {
    method AddFlowUnitInput (line 95) | public void AddFlowUnitInput(FlowUnitInput flowunit_input) throws Mode...
    method AddFlowUnitOutput (line 103) | public void AddFlowUnitOutput(FlowUnitOutput flowunit_output) throws M...
    method SetConditionType (line 111) | public void SetConditionType(ConditionType condition_type) {
    method SetLoopType (line 119) | public void SetLoopType(LoopType loop_type) {
    method SetOutputType (line 127) | public void SetOutputType(FlowOutputType output_type) {
    method SetFlowType (line 135) | public void SetFlowType(FlowType flow_type) {
    method SetStreamSameCount (line 143) | public void SetStreamSameCount(boolean is_stream_same_count) {
    method SetInputContiguous (line 151) | public void SetInputContiguous(boolean is_input_contiguous) {
    method SetResourceNice (line 159) | public void SetResourceNice(boolean is_resource_nice) {
    method SetCollapseAll (line 167) | public void SetCollapseAll(boolean is_collapse_all) {
    method SetExceptionVisible (line 175) | public void SetExceptionVisible(boolean is_exception_visible) {
    method SetDescription (line 183) | public void SetDescription(String description) {
    method SetMaxBatchSize (line 191) | public void SetMaxBatchSize(long max_batch_size) {
    method SetDefaultBatchSize (line 199) | public void SetDefaultBatchSize(long default_batch_size) {
    method FlowUnitDescNew (line 203) | private native long FlowUnitDescNew();
    method FlowUnitDescGetFlowUnitName (line 205) | private native String FlowUnitDescGetFlowUnitName();
    method FlowUnitDescGetFlowUnitType (line 207) | private native String FlowUnitDescGetFlowUnitType();
    method FlowUnitDescGetFlowUnitAliasName (line 209) | private native String FlowUnitDescGetFlowUnitAliasName();
    method FlowUnitDescGetFlowUnitArgument (line 211) | private native String FlowUnitDescGetFlowUnitArgument();
    method FlowUnitDescSetFlowUnitName (line 213) | private native void FlowUnitDescSetFlowUnitName(String flowunit_name);
    method FlowUnitDescSetFlowUnitType (line 215) | private native void FlowUnitDescSetFlowUnitType(String flowunit_type);
    method FlowUnitDescAddFlowUnitInput (line 217) | private native void FlowUnitDescAddFlowUnitInput(FlowUnitInput flowuni...
    method FlowUnitDescAddFlowUnitOutput (line 219) | private native void FlowUnitDescAddFlowUnitOutput(FlowUnitOutput flowu...
    method FlowUnitDescSetConditionType (line 221) | private native void FlowUnitDescSetConditionType(long condition_type);
    method FlowUnitDescSetLoopType (line 223) | private native void FlowUnitDescSetLoopType(long loop_type);
    method FlowUnitDescSetOutputType (line 225) | private native void FlowUnitDescSetOutputType(long output_type);
    method FlowUnitDescSetFlowType (line 227) | private native void FlowUnitDescSetFlowType(long flow_type);
    method FlowUnitDescSetStreamSameCount (line 229) | private native void FlowUnitDescSetStreamSameCount(boolean is_stream_s...
    method FlowUnitDescSetInputContiguous (line 231) | private native void FlowUnitDescSetInputContiguous(boolean is_input_co...
    method FlowUnitDescSetResourceNice (line 233) | private native void FlowUnitDescSetResourceNice(boolean is_resource_ni...
    method FlowUnitDescSetCollapseAll (line 235) | private native void FlowUnitDescSetCollapseAll(boolean is_collapse_all);
    method FlowUnitDescSetExceptionVisible (line 237) | private native void FlowUnitDescSetExceptionVisible(boolean is_excepti...
    method FlowUnitDescSetDescription (line 239) | private native void FlowUnitDescSetDescription(String description);
    method FlowUnitDescSetMaxBatchSize (line 241) | private native void FlowUnitDescSetMaxBatchSize(long max_batch_size);
    method FlowUnitDescSetDefaultBatchSize (line 243) | private native void FlowUnitDescSetDefaultBatchSize(long default_batch...

FILE: src/java/src/main/java/com/modelbox/FlowUnitError.java
  class FlowUnitError (line 20) | public class FlowUnitError extends NativeObject {
    method FlowUnitError (line 21) | public FlowUnitError(String desc) {
    method FlowUnitError (line 25) | public FlowUnitError(String node, String error_pos, Status error_statu...
    method getDesc (line 33) | public String getDesc() {
    method GetStatus (line 41) | public Status GetStatus() {
    method FlowUnitError_New (line 45) | private native long FlowUnitError_New(String desc);
    method FlowUnitError_New (line 47) | private native long FlowUnitError_New(String node, String error_pos, S...
    method FlowUnitError_GetDesc (line 49) | private native String FlowUnitError_GetDesc();
    method FlowUnitError_GetStatus (line 51) | private native Status FlowUnitError_GetStatus();

FILE: src/java/src/main/java/com/modelbox/FlowUnitEvent.java
  class FlowUnitEvent (line 19) | public class FlowUnitEvent extends NativeObject {
    method FlowUnitEvent (line 21) | FlowUnitEvent() {
    method set (line 30) | public void set(String key, String value) {
    method set (line 39) | public void set(String key, Object object) {
    method get (line 44) | public Object get(String key) {
    method FlowUnitEventNew (line 48) | private native long FlowUnitEventNew();
    method FlowUnitEventSet (line 50) | private native void FlowUnitEventSet(String key, Object object);
    method FlowUnitEventGet (line 52) | private native Object FlowUnitEventGet(String key);

FILE: src/java/src/main/java/com/modelbox/FlowUnitInput.java
  class FlowUnitInput (line 20) | public class FlowUnitInput extends NativeObject {
    method FlowUnitInput (line 26) | public FlowUnitInput(String name) {
    method FlowUnitInput (line 35) | public FlowUnitInput(String name, String device_type) {
    method FlowUnitInput (line 44) | public FlowUnitInput(String name, long device_mem_flags) {
    method FlowUnitInput (line 54) | public FlowUnitInput(String name, String device_type, long device_mem_...
    method FlowUnitInput_New (line 58) | private native long FlowUnitInput_New(String name);
    method FlowUnitInput_New (line 60) | private native long FlowUnitInput_New(String name, String device_type);
    method FlowUnitInput_New (line 62) | private native long FlowUnitInput_New(String name, long device_mem_fla...
    method FlowUnitInput_New (line 64) | private native long FlowUnitInput_New(String name, String device_type,...

FILE: src/java/src/main/java/com/modelbox/FlowUnitOutput.java
  class FlowUnitOutput (line 19) | public class FlowUnitOutput extends NativeObject {
    method FlowUnitOutput (line 24) | public FlowUnitOutput(String name) {
    method FlowUnitOutput (line 33) | public FlowUnitOutput(String name, long device_mem_flags) {
    method FlowUnitOutput_New (line 37) | private native long FlowUnitOutput_New(String name);
    method FlowUnitOutput_New (line 39) | private native long FlowUnitOutput_New(String name, long device_mem_fl...

FILE: src/java/src/main/java/com/modelbox/Log.java
  class Log (line 23) | public class Log extends NativeObject {
    type LogLevel (line 24) | public enum LogLevel {
    method Log (line 28) | public Log() {
    method print (line 40) | public void print(LogLevel level, String file, int lineno, String func...
    method jniPrintCallback (line 45) | public final void jniPrintCallback(long level, String file, int lineno...
    method setLogLevel (line 53) | public void setLogLevel(LogLevel level) {
    method getLogLevel (line 61) | public LogLevel getLogLevel() {
    method getLogger (line 69) | public static Log getLogger() {
    method regLog (line 77) | public static void regLog(Log log) {
    method unRegLog (line 84) | public static void unRegLog() {
    method debug (line 92) | public static void debug(String format, Object... params) {
    method debug (line 100) | public static void debug(String message) {
    method info (line 108) | public static void info(String format, Object... params) {
    method info (line 116) | public static void info(String message) {
    method notice (line 124) | public static void notice(String format, Object... params) {
    method notice (line 132) | public static void notice(String message) {
    method warn (line 140) | public static void warn(String format, Object... params) {
    method warn (line 148) | public static void warn(String message) {
    method error (line 156) | public static void error(String format, Object... params) {
    method error (line 164) | public static void error(String message) {
    method fatal (line 172) | public static void fatal(String format, Object... params) {
    method fatal (line 180) | public static void fatal(String message) {
    method printLog (line 184) | private static void printLog(LogLevel level, String format, Object... ...
    method LogNew (line 192) | public native long LogNew();
    method LogSetLogLevel (line 194) | public native void LogSetLogLevel(long level);
    method LogGetLogLevel (line 196) | public native long LogGetLogLevel();
    method LogGetLogger (line 198) | public static native Log LogGetLogger();
    method LogReg (line 200) | public static native void LogReg(Log log);
    method LogUnReg (line 202) | public static native void LogUnReg();
    method LogPrint (line 204) | public static native void LogPrint(long level, String file, int lineno...

FILE: src/java/src/main/java/com/modelbox/ModelBox.java
  class ModelBox (line 24) | public class ModelBox {
    method SetDefaultScanPath (line 30) | public static native void SetDefaultScanPath(String path);
    method SetDefaultInfoPath (line 32) | public static native void SetDefaultInfoPath(String path);

FILE: src/java/src/main/java/com/modelbox/ModelBoxException.java
  class ModelBoxException (line 25) | public class ModelBoxException extends IOException {
    method ModelBoxException (line 26) | public ModelBoxException() {}
    method ModelBoxException (line 28) | public ModelBoxException(String message) {
    class Success (line 32) | static public class Success extends ModelBoxException {
      method Success (line 33) | public Success() {
      method Success (line 37) | public Success(String message) {
    class Fault (line 41) | static public class Fault extends ModelBoxException {
      method Fault (line 42) | public Fault() {
      method Fault (line 46) | public Fault(String message) {
    class Notfound (line 50) | static public class Notfound extends ModelBoxException {
      method Notfound (line 51) | public Notfound() {
      method Notfound (line 55) | public Notfound(String message) {
    class Invalid (line 59) | static public class Invalid extends ModelBoxException {
      method Invalid (line 60) | public Invalid() {
      method Invalid (line 64) | public Invalid(String message) {
    class Again (line 68) | static public class Again extends ModelBoxException {
      method Again (line 69) | public Again() {
      method Again (line 73) | public Again(String message) {
    class Badconf (line 77) | static public class Badconf extends ModelBoxException {
      method Badconf (line 78) | public Badconf() {
      method Badconf (line 82) | public Badconf(String message) {
    class Nomem (line 86) | static public class Nomem extends ModelBoxException {
      method Nomem (line 87) | public Nomem() {
      method Nomem (line 91) | public Nomem(String message) {
    class Range (line 95) | static public class Range extends ModelBoxException {
      method Range (line 96) | public Range() {
      method Range (line 100) | public Range(String message) {
    class Exist (line 104) | static public class Exist extends ModelBoxException {
      method Exist (line 105) | public Exist() {
      method Exist (line 109) | public Exist(String message) {
    class Internal (line 113) | static public class Internal extends ModelBoxException {
      method Internal (line 114) | public Internal() {
      method Internal (line 118) | public Internal(String message) {
    class Busy (line 122) | static public class Busy extends ModelBoxException {
      method Busy (line 123) | public Busy() {
      method Busy (line 127) | public Busy(String message) {
    class Permit (line 131) | static public class Permit extends ModelBoxException {
      method Permit (line 132) | public Permit() {
      method Permit (line 136) | public Permit(String message) {
    class Notsupport (line 140) | static public class Notsupport extends ModelBoxException {
      method Notsupport (line 141) | public Notsupport() {
      method Notsupport (line 145) | public Notsupport(String message) {
    class Nodata (line 149) | static public class Nodata extends ModelBoxException {
      method Nodata (line 150) | public Nodata() {
      method Nodata (line 154) | public Nodata(String message) {
    class Nospace (line 158) | static public class Nospace extends ModelBoxException {
      method Nospace (line 159) | public Nospace() {
      method Nospace (line 163) | public Nospace(String message) {
    class Nobufs (line 167) | static public class Nobufs extends ModelBoxException {
      method Nobufs (line 168) | public Nobufs() {
      method Nobufs (line 172) | public Nobufs(String message) {
    class Overflow (line 176) | static public class Overflow extends ModelBoxException {
      method Overflow (line 177) | public Overflow() {
      method Overflow (line 181) | public Overflow(String message) {
    class Inprogress (line 185) | static public class Inprogress extends ModelBoxException {
      method Inprogress (line 186) | public Inprogress() {
      method Inprogress (line 190) | public Inprogress(String message) {
    class Already (line 194) | static public class Already extends ModelBoxException {
      method Already (line 195) | public Already() {
      method Already (line 199) | public Already(String message) {
    class Timedout (line 203) | static public class Timedout extends ModelBoxException {
      method Timedout (line 204) | public Timedout() {
      method Timedout (line 208) | public Timedout(String message) {
    class Nostream (line 212) | static public class Nostream extends ModelBoxException {
      method Nostream (line 213) | public Nostream() {
      method Nostream (line 217) | public Nostream(String message) {
    class Reset (line 221) | static public class Reset extends ModelBoxException {
      method Reset (line 222) | public Reset() {
      method Reset (line 226) | public Reset(String message) {
    class Continue (line 230) | static public class Continue extends ModelBoxException {
      method Continue (line 231) | public Continue() {
      method Continue (line 235) | public Continue(String message) {
    class Edquot (line 239) | static public class Edquot extends ModelBoxException {
      method Edquot (line 240) | public Edquot() {
      method Edquot (line 244) | public Edquot(String message) {
    class Stop (line 248) | static public class Stop extends ModelBoxException {
      method Stop (line 249) | public Stop() {
      me
Condensed preview — 1255 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,727K chars).
[
  {
    "path": ".clang-format",
    "chars": 61,
    "preview": "# Use the Google style in this project.\nBasedOnStyle: Google\n"
  },
  {
    "path": ".clang-tidy",
    "chars": 2294,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature.md",
    "chars": 732,
    "preview": "---\nname: 需求建议 | Feature Request\nabout: 需求建议描述 | Use this template for raising a feature request\ntitle: ''\nlabels: type:"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/issue.md",
    "chars": 1014,
    "preview": "---\nname: \"问题报告 | Bug Issue\"\nabout: \"问题报告说明 | Use this template for reporting a bug\"\nlabels: type:bug\n\n---\n\n在提交BUG之前,请阅读"
  },
  {
    "path": ".github/workflows/gitee-mirror.yml",
    "chars": 506,
    "preview": "name: Mirror-To-Gitee\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron: '45 17 * * *'\n\nconcurrency:\n  group: git-mirror\n"
  },
  {
    "path": ".github/workflows/manual-build-with-image.yml",
    "chars": 1891,
    "preview": "name: Build With Specific Images\n\non:\n  workflow_dispatch:\n    inputs:\n      images_name:\n        type: choice\n        d"
  },
  {
    "path": ".github/workflows/manual-build-with-rockchip-images.yml",
    "chars": 2119,
    "preview": "name: Build With rockchip images\non:\n  workflow_dispatch:\n    inputs:\n      images_rk_name:\n        type: choice\n       "
  },
  {
    "path": ".github/workflows/merge-request-ascend.yml",
    "chars": 1565,
    "preview": "name: Merge Request Ascend\n\non:\n  pull_request:\n    branches: \n      - main\n\nconcurrency: \n  group: ${{ github.workflow "
  },
  {
    "path": ".github/workflows/merge-request-cuda.yml",
    "chars": 1564,
    "preview": "name: Merge Request CUDA\n\non:\n  pull_request:\n    branches: \n      - main\n\nconcurrency: \n  group: ${{ github.workflow }}"
  },
  {
    "path": ".github/workflows/merge-request-rockchip.yml",
    "chars": 1160,
    "preview": "name: Merge Request RockChip\non:\n  pull_request:\n    branches:\n      - main\n\nconcurrency:\n  group: ${{ github.workflow }"
  },
  {
    "path": ".github/workflows/publish-modelbox-images.yml",
    "chars": 88031,
    "preview": "name: Publish modelbox images\non:\n  workflow_dispatch:\n    inputs:\n      version:\n        description: 'new image tag(e."
  },
  {
    "path": ".github/workflows/unit-test-daily-on-device.yml",
    "chars": 1022,
    "preview": "name: Daily Unit Test On Device\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron: '0 18 * * *'  \n\nenv:\n  BUILD_TYPE: Deb"
  },
  {
    "path": ".github/workflows/unit-test-pull-requests-on-device.yml",
    "chars": 1666,
    "preview": "name: Pull-Requests Unit Test On Device\n\non:\n  workflow_dispatch:\n    inputs:\n      PullRequestId:\n        description: "
  },
  {
    "path": ".gitignore",
    "chars": 161,
    "preview": "\n# IDE product files\n.idea\n*.iml\n*.ipr\n*.iws\n*.bin\n*.exe\n*.pyc\n\nout\ngen\ntarget\n.vscode\nbuild\n.settings\n.classpath\n.proje"
  },
  {
    "path": "CMake/Clang-tidy.cmake",
    "chars": 638,
    "preview": "\nfind_program(CLANG_TIDY_BIN clang-tidy)\n\nif(NOT CLANG_TIDY_BIN)\n    message(STATUS \"No clang-tidy found, skip lint\")\n  "
  },
  {
    "path": "CMake/FindACL.cmake",
    "chars": 1346,
    "preview": "set(HITS_DDK_PATH $ENV{DDK_PATH})\nfind_path(ACL_INCLUDE\n  NAMES acl/acl.h\n  HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR} ${HIT"
  },
  {
    "path": "CMake/FindCPPREST.cmake",
    "chars": 752,
    "preview": "find_path(CPPREST_INCLUDE NAMES cpprest/http_client.h \n    HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR}\n)\nmark_as_advanced(CPP"
  },
  {
    "path": "CMake/FindCUDACUDA.cmake",
    "chars": 218,
    "preview": "if (CUDA_CUDA_LIBRARY) \n  return()\nendif()\n\nfind_library(CUDA_CUDA_LIBRARY\n  NAMES cuda\n  HINTS ${CMAKE_INSTALL_FULL_LIB"
  },
  {
    "path": "CMake/FindDIS.cmake",
    "chars": 788,
    "preview": "find_path(DIS_INCLUDE NAMES dis/dis.h \n    HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR}\n)\nmark_as_advanced(DIS_INCLUDE)\n \nset("
  },
  {
    "path": "CMake/FindDLENGINE.cmake",
    "chars": 1068,
    "preview": "set(DLENGINE_PATH $ENV{DLENGINE_PATH})\n\nif(NOT DLENGINE_PATH)\n  find_package(PythonInterp QUIET)\n  execute_process(\n    "
  },
  {
    "path": "CMake/FindDSMI.cmake",
    "chars": 968,
    "preview": "set(HITS_DRIVER_PATH $ENV{DRIVER_PATH})\nfind_path(DSMI_INCLUDE\n  NAMES dsmi_common_interface.h\n  HINTS ${CMAKE_INSTALL_F"
  },
  {
    "path": "CMake/FindDUKTAPE.cmake",
    "chars": 802,
    "preview": "find_path(DUKTAPE_INCLUDE NAMES duktape.h\n  HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR}\n)\nmark_as_advanced(DUKTAPE_INCLUDE)\n\n"
  },
  {
    "path": "CMake/FindFFMPEG.cmake",
    "chars": 1225,
    "preview": "find_path(FFMPEG_INCLUDE \n  NAMES libavformat/avformat.h libavcodec/avcodec.h libavutil/avutil.h libswscale/swscale.h\n  "
  },
  {
    "path": "CMake/FindFUSE.cmake",
    "chars": 676,
    "preview": "find_path(FUSE_INCLUDE \n  NAMES fuse.h\n  HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR}\n)\nmark_as_advanced(FUSE_INCLUDE)\n\n# Look"
  },
  {
    "path": "CMake/FindMINDSPORE_LITE.cmake",
    "chars": 1226,
    "preview": "set(HITS_MINDSPORE_LITE_PATH $ENV{MINDSPORE_LITE_PATH})\n\nif (NOT WITH_MINDSPORE) \n  message(STATUS \"not build with minds"
  },
  {
    "path": "CMake/FindNVCUVID.cmake",
    "chars": 767,
    "preview": "set(HITS_NVCUVID_PATH /usr/local/Video_Codec_SDK)\nfind_path(NVCUVID_INCLUDE NAMES nvcuvid.h HINTS ${CMAKE_INSTALL_FULL_I"
  },
  {
    "path": "CMake/FindOBS.cmake",
    "chars": 878,
    "preview": "find_path(OBS_INCLUDE NAMES eSDKOBS.h HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR})\nmark_as_advanced(OBS_INCLUDE)\n\n# Look for "
  },
  {
    "path": "CMake/FindROCKCHIP.cmake",
    "chars": 1869,
    "preview": "if(DEFINED ENV{ROCKCHIP_PATH})\n    set(HINTS_ROCKCHIP_PATH $ENV{ROCKCHIP_PATH})\n\n    message(STATUS \"DEFINED ${HINTS_ROC"
  },
  {
    "path": "CMake/FindTENSORFLOW.cmake",
    "chars": 716,
    "preview": "find_path(TENSORFLOW_INCLUDE NAMES tensorflow/c/c_api.h HINTS ${CMAKE_INSTALL_FULL_INCLUDEDIR})\nmark_as_advanced(TENSORF"
  },
  {
    "path": "CMake/FindTENSORRT.cmake",
    "chars": 3857,
    "preview": "set(TRT_ROOT /tensorrt)\nset(HINT_DIRS $ENV{TRT_RELEASE}/include ${CMAKE_INSTALL_FULL_INCLUDEDIR} ${TRT_ROOT}/include)\nse"
  },
  {
    "path": "CMake/FindVCN.cmake",
    "chars": 761,
    "preview": "find_path(VCN_INCLUDE \n    NAMES IVS_SDK.h \n        hwsdk.h\n        ivs_error.h\n    HINTS ${CMAKE_INSTALL_FULL_INCLUDEDI"
  },
  {
    "path": "CMake/Function.cmake",
    "chars": 1913,
    "preview": "macro(subdirlist result dir)\n  file(GLOB children RELATIVE ${dir} ${dir}/*)\n  set (file ${ARGN})\n  set(dirs \"\")\n  foreac"
  },
  {
    "path": "CMake/JavaJDK.cmake",
    "chars": 982,
    "preview": "if(${CMAKE_VERSION} VERSION_LESS \"3.16.0\") \n    find_library(JAVA_AWT_LIBRARY NAMES\n        jawt\n        HINTS $ENV{JAVA"
  },
  {
    "path": "CMake/Options.cmake",
    "chars": 2600,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "CMake/ProjectEnvVars.cmake",
    "chars": 1544,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "CMake/SecureCompilerOption.cmake",
    "chars": 1171,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "CMake/clang-tidy-warp",
    "chars": 910,
    "preview": "#!/bin/bash\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License,"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 2758,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "LICENSE",
    "chars": 11356,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "NOTICE",
    "chars": 53,
    "preview": "ModelBox\nCopyright 2021 Huawei Technologies Co., Ltd\n"
  },
  {
    "path": "README.md",
    "chars": 1771,
    "preview": "# ModelBox\n\n[![daily building](https://github.com/modelbox-ai/modelbox/actions/workflows/unit-test-daily-on-device.yml/b"
  },
  {
    "path": "README_en.md",
    "chars": 4511,
    "preview": "# ModelBox\n\n[![daily building](https://github.com/modelbox-ai/modelbox/actions/workflows/unit-test-daily-on-device.yml/b"
  },
  {
    "path": "Third_Party_Open_Source_Software_Notice",
    "chars": 16534,
    "preview": "OPEN SOURCE SOFTWARE NOTICE\n\nPlease note we provide an open source software notice along with this product and/or this p"
  },
  {
    "path": "docker/Dockerfile.ascend.base",
    "chars": 3274,
    "preview": "FROM ubuntu:20.04 as base\n\nCOPY ascend /root/ascend\n\nWORKDIR /root\n\nRUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/l"
  },
  {
    "path": "docker/Dockerfile.ascend.develop.openeuler",
    "chars": 5724,
    "preview": "FROM modelbox/c83-base:latest\nFROM openeuler/openeuler:20.03-lts-sp3\n\nARG dtype\n\nCOPY release /opt/release\nCOPY --from=0"
  },
  {
    "path": "docker/Dockerfile.ascend.develop.ubuntu",
    "chars": 6103,
    "preview": "FROM modelbox/c83-base:latest\nFROM ubuntu:20.04\n\nARG dtype\n\nCOPY release /opt/release\nCOPY --from=0 /usr/local/Ascend_de"
  },
  {
    "path": "docker/Dockerfile.ascend.runtime.openeuler",
    "chars": 3788,
    "preview": "FROM modelbox/c83-base:latest\nFROM openeuler/openeuler:20.03-lts-sp3\n\nARG dtype\n\nCOPY release /opt/release\nCOPY --from=0"
  },
  {
    "path": "docker/Dockerfile.ascend.runtime.ubuntu",
    "chars": 4276,
    "preview": "FROM modelbox/c83-base:latest\nFROM ubuntu:20.04\n\nARG dtype\n\nCOPY release /opt/release\nCOPY --from=0 /usr/local/Ascend_ru"
  },
  {
    "path": "docker/Dockerfile.cuda.develop.openeuler",
    "chars": 6327,
    "preview": "ARG BASE_IMAGE=openeuler/openeuler:20.03-lts-sp3\nFROM ${BASE_IMAGE} as base\n\nCOPY release /opt/release\nCOPY docker/repo/"
  },
  {
    "path": "docker/Dockerfile.cuda.develop.ubuntu",
    "chars": 6690,
    "preview": "ARG BASE_IMAGE=ubuntu:20.04\nFROM ${BASE_IMAGE} as base\n\nCOPY release /opt/release\nADD *.tar.gz /usr/local/\n\nARG CUDA_VER"
  },
  {
    "path": "docker/Dockerfile.cuda.runtime.openeuler",
    "chars": 4947,
    "preview": "ARG BASE_IMAGE=openeuler/openeuler:20.03-lts-sp3\nFROM ${BASE_IMAGE} as base\n\nCOPY release /opt/release\nCOPY docker/repo/"
  },
  {
    "path": "docker/Dockerfile.cuda.runtime.ubuntu",
    "chars": 5365,
    "preview": "ARG BASE_IMAGE=ubuntu:20.04\nFROM ${BASE_IMAGE} as base\n\nCOPY release /opt/release\nADD *.tar.gz /usr/local/\n\nARG CUDA_VER"
  },
  {
    "path": "docker/Dockerfile.rknnrt.build.ubuntu",
    "chars": 4173,
    "preview": "FROM ubuntu:20.04\n\nADD rockchip/* /usr/local/rockchip\n\nWORKDIR /root\n\nENV DEBIAN_FRONTEND=\"noninteractive\"\nENV ROCKCHIP_"
  },
  {
    "path": "docker/README.md",
    "chars": 2975,
    "preview": "# ModelBox Image List\n\n|type|os|image name|\n|--|--|--|\n|develop|ubuntu-20.04|modelbox/modelbox-develop-tensorrt_8.4.2-cu"
  },
  {
    "path": "docker/artifact_check.sh",
    "chars": 800,
    "preview": "#!/bin/bash\nCODE_DIR=$(cd $(dirname $0)/..;pwd)\nrelease_dir=${CODE_DIR}/build/release\nls -lh ${release_dir}\nosName=$(sed"
  },
  {
    "path": "docker/prepare_for_dev.sh",
    "chars": 3896,
    "preview": "#!/bin/bash\nCUR_DIR=$(cd $(dirname \"${BASH_SOURCE[0]}\");pwd)\nOS_NAME=$(sed -nr '/NAME/s/^NAME=\"(.*)\"$/\\1/gp' /etc/os-rel"
  },
  {
    "path": "docker/prepare_for_rockchip.sh",
    "chars": 4379,
    "preview": "#!/bin/bash\nCODE_DIR=$(cd $(dirname $0)/..;pwd)\n\necho ${CODE_DIR}\nPLATFORM_NAME=$1\nif [ \"${PLATFORM_NAME}\" == \"356x\" ] |"
  },
  {
    "path": "docker/prepare_for_run.sh",
    "chars": 3542,
    "preview": "#!/bin/bash\nCUR_DIR=$(cd $(dirname \"${BASH_SOURCE[0]}\");pwd)\nOS_NAME=$(sed -nr '/NAME/s/^NAME=\"(.*)\"$/\\1/gp' /etc/os-rel"
  },
  {
    "path": "docker/repo/cuda.repo",
    "chars": 120,
    "preview": "[cuda]\nname=cuda\nbaseurl=https://developer.download.nvidia.com/compute/cuda/repos/rhel7/$basearch/\nenabled=1\ngpgcheck=0\n"
  },
  {
    "path": "docker/repo/nvidia-ml.repo",
    "chars": 136,
    "preview": "[nvidia]\nname=nvidia\nbaseurl=https://developer.download.nvidia.com/compute/machine-learning/repos/rhel7/$basearch/\nenabl"
  },
  {
    "path": "docs/CMakeLists.txt",
    "chars": 1622,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "docs/Design.md",
    "chars": 30192,
    "preview": "# MODELBOX设计规格\n\n## MODELBOX场景\n\n![use-case](assets/use-case.png)\n\nMODELBOX用例包含如下场景:\n\n1. 数据输入,输出  \n用户,数据输出,输出主要是来自业务的数据请求,"
  },
  {
    "path": "docs/Doxyfile.in",
    "chars": 985,
    "preview": "PROJECT_NAME           = \"@CMAKE_PROJECT_NAME@\"\nPROJECT_NUMBER         = @MODELBOX_VERSION_MAJOR@.@MODELBOX_VERSION_MINO"
  },
  {
    "path": "docs/Goal.md",
    "chars": 7648,
    "preview": "# ModelBox\n\nMODELBOX支持AI业务的快速应用开发,开发人员能通过简单的配置或编码完成AI推理业务的开发工作,并且使业务的运行性能高效,和跨平台、设备运行。  \n对华为D芯片能较好的支持,是客户易于使用D芯片能力,在分布式方"
  },
  {
    "path": "examples/CMakeLists.txt",
    "chars": 4687,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/bin/template",
    "chars": 28916,
    "preview": "#!/bin/bash\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License,"
  },
  {
    "path": "examples/flowunit/CMakeLists.txt",
    "chars": 915,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/c++/CMakeLists.txt",
    "chars": 2840,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/c++/example.cc",
    "chars": 2704,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/flowunit/c++/example.h",
    "chars": 1742,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/flowunit/c++/example.toml",
    "chars": 1640,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/infer/CMakeLists.txt",
    "chars": 1287,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/infer/example.toml",
    "chars": 1446,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/plugin/data_source_parser/CMakeLists.txt",
    "chars": 2164,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/plugin/data_source_parser/driver_desc.cc",
    "chars": 1260,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/flowunit/plugin/data_source_parser/example.cc",
    "chars": 1400,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/flowunit/plugin/data_source_parser/example.h",
    "chars": 2087,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/flowunit/plugin/output_broker/CMakeLists.txt",
    "chars": 2160,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/plugin/output_broker/driver_desc.cc",
    "chars": 1255,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/flowunit/plugin/output_broker/example.cc",
    "chars": 1641,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/flowunit/plugin/output_broker/example.h",
    "chars": 2252,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/flowunit/python/CMakeLists.txt",
    "chars": 1287,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/python/example.py",
    "chars": 1856,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/python/example.toml",
    "chars": 1643,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/yolo/CMakeLists.txt",
    "chars": 1287,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/flowunit/yolo/example.toml",
    "chars": 1278,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/misc/modelbox-template-cmd.json.in",
    "chars": 288,
    "preview": "{\n    \"cmd-list\": [\n        {\n            \"name\": \"template\",\n            \"exec\": \"@MODELBOX_ROOT_VAR@@MODELBOX_TOOLS_PA"
  },
  {
    "path": "examples/project/base/CMakeLists.txt",
    "chars": 2476,
    "preview": "#\r\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\r\n#\r\n# Licensed under the Apache License, Version "
  },
  {
    "path": "examples/project/base/package/CMakeLists.txt",
    "chars": 4123,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/package/debian/postinst.in",
    "chars": 725,
    "preview": "#!/bin/sh\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, V"
  },
  {
    "path": "examples/project/base/package/debian/postrm.in",
    "chars": 685,
    "preview": "#!/bin/sh\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, V"
  },
  {
    "path": "examples/project/base/package/rpm/postinscript.in",
    "chars": 738,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/package/rpm/postunscript.in",
    "chars": 674,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/readme.txt",
    "chars": 842,
    "preview": "# 使用说明 \n\n1. 工程目录结构说明可见[项目创建](https://modelbox-ai.com/modelbox-book/use-modelbox/standard-mode/create-project.html)章节“项目工"
  },
  {
    "path": "examples/project/base/src/CMakeLists.txt",
    "chars": 959,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/src/flowunit/CMakeLists.txt",
    "chars": 959,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/src/graph/CMakeLists.txt",
    "chars": 909,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/src/service-plugin/CMakeLists.txt",
    "chars": 959,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/test/CMakeLists.txt",
    "chars": 2672,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/test/flowunit/CMakeLists.txt",
    "chars": 2392,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/test/mock/CMakeLists.txt",
    "chars": 1207,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/test/mock/mock_modelbox.cc",
    "chars": 2239,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/project/base/test/mock/mock_modelbox.h",
    "chars": 1416,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/project/base/test/test_config.h.in",
    "chars": 1738,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/project/base/thirdparty/CMake/local-package.in",
    "chars": 1124,
    "preview": "\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2."
  },
  {
    "path": "examples/project/base/thirdparty/CMake/pre-download.in",
    "chars": 1194,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/base/thirdparty/CMakeLists.txt",
    "chars": 2164,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/car_detection/desc.toml",
    "chars": 85,
    "preview": "name = \"car detection\"\ndesc = \"A car detection example project template for modelbox\""
  },
  {
    "path": "examples/project/car_detection/setup.sh",
    "chars": 1967,
    "preview": "#!/bin/sh\n# run this script during cmake prepare\n\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n"
  },
  {
    "path": "examples/project/emotion_detection/desc.toml",
    "chars": 175,
    "preview": "name = \"emotion_detection\"\ndesc = \"A emotion detection example project template for modelbox\"\n\n[guide]\nguide = '''\n\n# 使用"
  },
  {
    "path": "examples/project/emotion_detection/download_emotion_files.sh",
    "chars": 1924,
    "preview": "#!/bin/sh\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, V"
  },
  {
    "path": "examples/project/emotion_detection/setup.sh",
    "chars": 2232,
    "preview": "#!/bin/sh\n# run this script during cmake prepare\n\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n"
  },
  {
    "path": "examples/project/empty/desc.toml",
    "chars": 61,
    "preview": "name = \"empty\"\ndesc = \"A empty project template for modelbox\""
  },
  {
    "path": "examples/project/empty/src/graph/empty.toml",
    "chars": 797,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/hello_world/desc.toml",
    "chars": 220,
    "preview": "name = \"helloworld\"\ndesc = \"A helloworld REST API service example project template for modelbox\"\n\n[restapi]\nmethod = \"PO"
  },
  {
    "path": "examples/project/hello_world/setup.sh",
    "chars": 1740,
    "preview": "#!/bin/sh\n# run this script during cmake prepare\n\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n"
  },
  {
    "path": "examples/project/mnist/desc.toml",
    "chars": 187,
    "preview": "name = \"mnist\"\ndesc = \"A mnist example project template for modelbox\"\n\n[restapi]\nmethod = \"POST\"\npath = \"http://0.0.0.0:"
  },
  {
    "path": "examples/project/mnist/setup.sh",
    "chars": 1732,
    "preview": "#!/bin/sh\n# run this script during cmake prepare\n\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n"
  },
  {
    "path": "examples/project/mnist-mindspore/desc.toml",
    "chars": 212,
    "preview": "name = \"mnist-mindspore\"\ndesc = \"A mnist with mindspore example project template for modelbox\"\n\n[restapi]\nmethod = \"POST"
  },
  {
    "path": "examples/project/mnist-mindspore/setup.sh",
    "chars": 1856,
    "preview": "#!/bin/sh\n# run this script during cmake prepare\n\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n"
  },
  {
    "path": "examples/project/mnist-mindspore/src/flowunit/mnist_infer/CMakeLists.txt",
    "chars": 1387,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/mnist-mindspore/src/flowunit/mnist_infer/mnist_infer.toml",
    "chars": 924,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/mnist-mindspore/src/flowunit/mnist_infer/train.sh",
    "chars": 5705,
    "preview": "#!/bin/bash\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License,"
  },
  {
    "path": "examples/project/mnist-mindspore/src/flowunit/mnist_preprocess/mnist_preprocess.py",
    "chars": 2523,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/mnist-mindspore/src/flowunit/mnist_preprocess/mnist_preprocess.toml",
    "chars": 964,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/mnist-mindspore/src/flowunit/mnist_response/mnist_response.py",
    "chars": 2024,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/mnist-mindspore/src/flowunit/mnist_response/mnist_response.toml",
    "chars": 991,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/mnist-mindspore/src/graph/mnist.toml",
    "chars": 975,
    "preview": "[driver]\ndir = [\"@APPLICATION_PATH@/flowunit\"]\n[profile]\nprofile=false\ntrace=false\ndir=\"\"\n[flow]\nname = \"MNIST\"\ndesc = \""
  },
  {
    "path": "examples/project/resize/desc.toml",
    "chars": 71,
    "preview": "name = \"resize\"\ndesc = \"A resize example project template for modelbox\""
  },
  {
    "path": "examples/project/resize/src/flowunit/resize_flowunit/CMakeLists.txt",
    "chars": 2979,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/resize/src/flowunit/resize_flowunit/resize_flowunit.cc",
    "chars": 5415,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/project/resize/src/flowunit/resize_flowunit/resize_flowunit.h",
    "chars": 1729,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/project/resize/src/graph/resize.toml",
    "chars": 1341,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/project/resize/test/flowunit/resize_flowuint_test.cc",
    "chars": 7882,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/service-plugin/CMakeLists.txt",
    "chars": 2229,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "examples/service-plugin/example.cc",
    "chars": 1686,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "examples/service-plugin/example.h",
    "chars": 1137,
    "preview": "/*\n * Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version"
  },
  {
    "path": "package/CMakeLists.txt",
    "chars": 10068,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "package/debian/modelbox-server/conffiles.in",
    "chars": 217,
    "preview": "@CMAKE_INSTALL_FULL_SYSCONFDIR@/modelbox/modelbox.conf\n@CMAKE_INSTALL_FULL_SYSCONFDIR@/modelbox/modelbox-opts\n@CMAKE_INS"
  },
  {
    "path": "package/debian/modelbox-server/postinst.in",
    "chars": 1064,
    "preview": "#!/bin/sh\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, V"
  },
  {
    "path": "package/debian/modelbox-server/postrm.in",
    "chars": 959,
    "preview": "#!/bin/sh\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, V"
  },
  {
    "path": "package/debian/postinst",
    "chars": 633,
    "preview": "#!/bin/sh\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, V"
  },
  {
    "path": "package/rpm/demo/postscript",
    "chars": 186,
    "preview": "#!/bin/sh\n# Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.\n\nchown -R modelbox:modelbox /opt/model"
  },
  {
    "path": "package/rpm/modelbox-server/conffiles.in",
    "chars": 250,
    "preview": "%config @CMAKE_INSTALL_FULL_SYSCONFDIR@/modelbox/modelbox.conf\n%config @CMAKE_INSTALL_FULL_SYSCONFDIR@/modelbox/modelbox"
  },
  {
    "path": "package/rpm/modelbox-server/postscript.in",
    "chars": 1107,
    "preview": "#!/bin/sh\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, V"
  },
  {
    "path": "package/rpm/modelbox-server/postunscript.in",
    "chars": 804,
    "preview": "#!/bin/sh\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, V"
  },
  {
    "path": "package/rpm/postscript",
    "chars": 633,
    "preview": "#!/bin/sh\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, V"
  },
  {
    "path": "src/CMakeLists.txt",
    "chars": 1055,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/CMakeLists.txt",
    "chars": 1659,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/car_detection/CMakeLists.txt",
    "chars": 1144,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/car_detection/flowunit/CMakeLists.txt",
    "chars": 987,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/car_detection/flowunit/car_detect/CMakeLists.txt",
    "chars": 1178,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/car_detection/flowunit/car_detect/car_detect.toml",
    "chars": 908,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/car_detection/flowunit/yolox_post/CMakeLists.txt",
    "chars": 1253,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/car_detection/flowunit/yolox_post/yolox_post.py",
    "chars": 2868,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/car_detection/flowunit/yolox_post/yolox_post.toml",
    "chars": 965,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/car_detection/flowunit/yolox_post/yolox_utils.py",
    "chars": 4495,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/car_detection/graph/CMakeLists.txt",
    "chars": 1070,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/car_detection/graph/car_detection.toml.in",
    "chars": 1636,
    "preview": "[driver]\ndir = [\n\"@DEMO_CAR_DETECTION_FLOWUNIT_DIR@\"\n]\n[flow]\ndesc = \"car detection for video streams\"\n[graph]\nformat = "
  },
  {
    "path": "src/demo/emotion_detection/CMakeLists.txt",
    "chars": 1167,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/CMakeLists.txt",
    "chars": 912,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/collapse_emotion/CMakeLists.txt",
    "chars": 1165,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/collapse_emotion/collapse_emotion.py",
    "chars": 2004,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/collapse_emotion/collapse_emotion.toml",
    "chars": 920,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/custom_resize/CMakeLists.txt",
    "chars": 1163,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/custom_resize/custom_resize.py",
    "chars": 2504,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/custom_resize/custom_resize.toml",
    "chars": 872,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/draw_emotion/CMakeLists.txt",
    "chars": 1162,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/draw_emotion/draw_emotion.py",
    "chars": 2205,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/draw_emotion/draw_emotion.toml",
    "chars": 890,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/emotion_infer/CMakeLists.txt",
    "chars": 1096,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/emotion_infer/emotion_infer.toml",
    "chars": 954,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/expand_box/CMakeLists.txt",
    "chars": 1160,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/expand_box/expand_box.py",
    "chars": 2314,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/expand_box/expand_box.toml",
    "chars": 875,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/face_detect/CMakeLists.txt",
    "chars": 1106,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/face_detect/face_detect.toml",
    "chars": 1009,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/face_post/CMakeLists.txt",
    "chars": 1264,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/face_post/face_post.py",
    "chars": 2931,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/face_post/face_post.toml",
    "chars": 1022,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/flowunit/face_post/face_post_utils.py",
    "chars": 3323,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/graph/CMakeLists.txt",
    "chars": 1097,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/emotion_detection/graph/emotion_detection.toml.in",
    "chars": 2985,
    "preview": "\n\n[driver]\ndir = [\n\"@DEMO_EMOTION_DETECTION_FLOWUNIT_DIR@\"\n]\n[flow]\ndesc = \"face emotion detection for video\"\n[graph]\nfo"
  },
  {
    "path": "src/demo/hello_world/CMakeLists.txt",
    "chars": 1132,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/hello_world/flowunit/CMakeLists.txt",
    "chars": 913,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/hello_world/flowunit/hello_world/CMakeLists.txt",
    "chars": 1156,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/hello_world/flowunit/hello_world/hello_world.py",
    "chars": 1742,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/hello_world/flowunit/hello_world/hello_world.toml",
    "chars": 873,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/hello_world/graph/CMakeLists.txt",
    "chars": 1136,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/hello_world/graph/hello_world.toml.in",
    "chars": 679,
    "preview": "[driver]\ndir = [\n    \"@DEMO_HELLO_WORLD_FLOWUNIT_DIR@\"\n    ]\n[flow]\nname = \"HelloWorld\"\ndesc = \"A hello world REST API s"
  },
  {
    "path": "src/demo/hello_world/graph/test_hello_world.py",
    "chars": 1400,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/mnist/CMakeLists.txt",
    "chars": 1096,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/mnist/flowunit/CMakeLists.txt",
    "chars": 913,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/mnist/flowunit/mnist_infer/CMakeLists.txt",
    "chars": 1379,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/mnist/flowunit/mnist_infer/mnist_infer.toml",
    "chars": 931,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/mnist/flowunit/mnist_infer/train.py",
    "chars": 1785,
    "preview": "import sys\nimport os\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom PIL import Image\nimport numpy as np\n\nTEST"
  },
  {
    "path": "src/demo/mnist/flowunit/mnist_infer/train.sh",
    "chars": 1824,
    "preview": "#!/bin/bash\n#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License,"
  },
  {
    "path": "src/demo/mnist/flowunit/mnist_preprocess/CMakeLists.txt",
    "chars": 1155,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/mnist/flowunit/mnist_preprocess/mnist_preprocess.py",
    "chars": 2394,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "src/demo/mnist/flowunit/mnist_preprocess/mnist_preprocess.toml",
    "chars": 964,
    "preview": "#\n# Copyright 2021 The Modelbox Project Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  }
]

// ... and 1055 more files (download for full content)

About this extraction

This page contains the full source code of the modelbox-ai/modelbox GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1255 files (6.0 MB), approximately 1.6M tokens, and a symbol index with 4674 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!