| /* |
| * 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 |