/* * xcam_smart_description.h - libxcam smart analysis description * * Copyright (c) 2015 Intel Corporation * * 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: Zong Wei <wei.zong@intel.com> * Wind Yuan <feng.yuan@intel.com> */ #ifndef C_XCAM_SMART_ANALYSIS_DESCRIPTION_H #define C_XCAM_SMART_ANALYSIS_DESCRIPTION_H #include <base/xcam_common.h> #include <base/xcam_params.h> #include <base/xcam_3a_result.h> #include <base/xcam_buffer.h> XCAM_BEGIN_DECLARE #define XCAM_SMART_ANALYSIS_LIB_DESCRIPTION "xcam_smart_analysis_desciption" typedef struct _XCamSmartAnalysisContext XCamSmartAnalysisContext; typedef XCamReturn (*XcamPostResultsFunc) ( XCamSmartAnalysisContext *context, const XCamVideoBuffer *buffer, XCam3aResultHead *results[], uint32_t res_count); #define XCAM_SMART_PLUGIN_PRIORITY_HIGH 1 #define XCAM_SMART_PLUGIN_PRIORITY_DEFAULT 10 #define XCAM_SMART_PLUGIN_PRIORITY_LOW 100 /* \brief C interface of Smart Analysis Description * <version> xcam version * <size> description structure size, sizeof (XCamSmartAnalysisDescription) * <priority> smart plugin priority; the less value the higher priority; 0, highest priority * <name> smart pluign name, or use file name if NULL */ typedef struct _XCamSmartAnalysisDescription { uint32_t version; uint32_t size; uint32_t priority; const char *name; /*! \brief initialize smart analysis context. * * \param[out] context create context handle * \param[out] async_mode 0, sync mode; 1, async mode * \param[in] post_func plugin can use post_func to post results in async mode */ XCamReturn (*create_context) (XCamSmartAnalysisContext **context, uint32_t *async_mode, XcamPostResultsFunc post_func); /*! \brief destroy smart analysis context. * * \param[in] context create context handle */ XCamReturn (*destroy_context) (XCamSmartAnalysisContext *context); /*! \brief update smart analysis context parameters. * * \param[in] context context handle * \param[in] params new parameters */ XCamReturn (*update_params) (XCamSmartAnalysisContext *context, const XCamSmartAnalysisParam *params); /*! \brief analyze data and get result,. * * \param[in] context context handle * \param[in] buffer image buffer * \param[out] results analysis results array, only for sync mode (<async_mode> = 0) * \param[in/out] res_count in, max results array size; out, return results count. */ XCamReturn (*analyze) (XCamSmartAnalysisContext *context, XCamVideoBuffer *buffer, XCam3aResultHead *results[], uint32_t *res_count); /*! \brief free smart results. * * \param[in] context context handle * \param[in] results analysis results * \param[in] res_count analysis results count */ void (*free_results) (XCamSmartAnalysisContext *context, XCam3aResultHead *results[], uint32_t res_count); } XCamSmartAnalysisDescription; XCAM_END_DECLARE #endif //C_XCAM_SMART_ANALYSIS_DESCRIPTION_H