/* * algo_loader.h - The dynamic loads algorithm library * * Copyright (c) 2021 Rockchip Electronics Co., Ltd. * * 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. * * Author: Cody Xie */ #ifndef ALGOS_AEIS_EIS_LOADER_H #define ALGOS_AEIS_EIS_LOADER_H #include #include "dvs_app.h" #include "rk_aiq_mems_sensor.h" namespace RkCam { using dvsRegisterRemap = int (*)(struct dvsEngine* engine, dvsFrameCallBackFEC callback); using dvsPrepare = int (*)(struct dvsEngine* engine); using getMeshSize = void (*)(int image_height, int image_width, int* mesh_size); using getOriginalMeshXY = void (*)(int image_width, int image_height, double clip_ratio_x, double clip_ratio_y, meshxyFEC* pmesh_fec); using dvsPutImageFrame = int (*)(struct dvsEngine* engine, struct imageData* pimage_data); using dvsPutMesh = int (*)(struct dvsEngine* engine, struct meshxyFEC* pmesh_fec); using dvsPutImuFrame = int (*)(struct dvsEngine* engine, mems_sensor_event_s* pimu_data, int buff_number); using dvsInitFromXmlFile = int (*)(struct dvsEngine* engine, const char* path); using dvsInitParams = int (*)(struct dvsEngine* engine, struct initialParams* init_params); using dvsStart = int (*)(struct dvsEngine* engine); using dvsRequestStop = int (*)(struct dvsEngine* engine); using dvsDeinit = int (*)(struct dvsEngine* engine); struct DvsOps { dvsRegisterRemap RegisterRemap; dvsPrepare Prepare; getMeshSize GetMeshSize; getOriginalMeshXY GetOriginalMeshXY; dvsPutImageFrame PutImageFrame; dvsPutMesh PutMesh; dvsPutImuFrame PutImuFrame; dvsInitFromXmlFile InitFromXmlFile; dvsInitParams InitParams; dvsStart Start; dvsRequestStop RequestStop; dvsDeinit DeInit; }; class DvsLibrary { public: DvsLibrary() = default; virtual ~DvsLibrary(); bool Init(); bool LoadSymbols(); DvsOps* GetOps(); private: void* handle_; DvsOps ops_; }; }; // namespace RkCam #endif // ALGOS_AEIS_EIS_LOADER_H