android13/external/camera_engine_rkaiq/algos/aeis/eis_loader.h

77 lines
2.5 KiB
C++

/*
* 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 <cody.xie@rock-chips.com>
*/
#ifndef ALGOS_AEIS_EIS_LOADER_H
#define ALGOS_AEIS_EIS_LOADER_H
#include <string>
#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