MI VDF API

version 2.06


1. 概述


1.1. 模块说明

VDF实现MD,OD,VG视频通道的初始化,通道管理,视频检测结果的管理和通道销毁等功能。


1.2. 流程框图

上图是开启一路VDF的调用流程,但是VDF可以支持多路通道,每个通道都可以设置MD/OD/VG其中一种工作模式。

每一路VDF通道,都要独立调用MI_VDF_CreateChnMI_VDF_SetChnAttrMI_VDF_EnableSubWindowMI_VDF_GetResultMI_VDF_PutResultMI_VDF_DestroyChn本通道做控制。

如下图所示,开启了4个VDF通道,其中通道0和通道1设置为MD模式,通道2和通道3设置为OD模式。


1.3. 关键字说明

  • MD:移动侦测

  • OD:遮挡侦测

  • VG:虚拟围栏


2. API 参考


2.1. VDF API列表

API名 功能
MI_VDF_Init 初始化MI_VDF模块
MI_VDF_Uninit 析构MI_VDF模块
MI_VDF_CreateChn 创建视频侦测(MD/OD/VG)通道
MI_VDF_DestroyChn 销毁已创建的视频侦测(MD/OD/VG)通道
MI_VDF_SetChnAttr 设置视频侦测(MD/OD/VG)通道属性
MI_VDF_GetChnAttr 获取视频侦测(MD/OD/VG)通道属性
MI_VDF_EnableSubWindow 使能VDF视频侦测(MD/OD/VG)通道子窗口
MI_VDF_Run 开始运行视频侦测(MD/OD/VG)
MI_VDF_Stop 停止运行视频侦测(MD/OD/VG)
MI_VDF_GetResult 获取视频侦测(MD/OD/VG)结果
MI_VDF_PutResult 释放视频侦测(MD/OD/VG)结果
MI_VDF_GetLibVersion 获取VDF指定通道的版本号
MI_VDF_GetDebugInfo 获取VDF指定通道的Debuginfo(only VG支持)

2.2. VDF API说明


2.2.1. MI_VDF_Init

  • 功能

    创建VDF通道,初始化VDF模块。

  • 语法

    MI_S32 MI_VDF_Init(void);
    
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意

  • 相关主题

    MI_VDF_Uninit


2.2.2. MI_VDF_Uninit

  • 功能

    析构MI_VDF系统, 调用MI_VDF_Uninit 之前,需要确保已创建的VDF通道都已经被disable,所有通道的视频检测结果都被释放。

  • 语法

    MI_S32 MI_VDF_Uninit (void);
    
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意

    • MI_VDF_Uninit 调用前需要确保所有创建的VDF通道都处于disable状态。

    • MI_VDF_Uninit 调用前需要确保所有创建的VDF通道的结果都释放。

  • 举例

    参见MI_VDF_Init举例。


2.2.3. MI_VDF_CreateChn

  • 功能

    创建视频侦测(MD/OD/VG)通道。

  • 语法

    MI_S32 MI_VDF_CreateChn(MI_VDF_CHANNEL VdfChn, const MI_VDF_ChnAttr_t*
    pstAttr);
    
  • 形参

    参数名称 参数含义 输入/输出
    VdfChn 指定视频侦测通道号。 输入
    pstAttr 设置视频通道属性值。 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意

  • VdfChn不能重复指定。

  • VdfChn的有有效值范围:0<= VdfCh < MI_VDF_CHANNEL_MAX,MI_VDF_CHANNEL_MAX定义在 mi_vdf_datatype.h。

  • 相关主题

    MI_VDF_DestroyChn


2.2.4. MI_VDF_DestroyChn

  • 功能

    销毁已创建的视频侦测通道。

  • 语法

    MI_S32 MI_VDF_DestroyChn(MI_VDF_CHANNEL VdfChn);
    
  • 形参

    参数名称 描述 输入/输出
    VdfChn 已经创建的视频侦测通道号。 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意

    • VdfChn必须是已经创建的视频侦测通道。

    • VdfChn的有有效值范围:0<= VdfCh < MI_VDF_CHANNEL_MAX,MI_VDF_CHANNEL_MAX定义在 mi_vdf_datatype.h。


2.2.5. MI_VDF_SetChnAttr

  • 功能

    设置视频侦测通道的属性。

  • 语法

    MI_S32 MI_VDF_SetChnAttr(MI_VDF_CHANNEL VdfChn, const MI_VDF_ChnAttr_t*
    pstAttr);
    
  • 形参

    参数名称 描述 输入/输出
    VdfChn 已经创建的视频侦测通道号。 输入
    pstAttr 源端口配置信息数据结构指针。 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意

    • VdfChn必须是已经创建的视频侦测通道。

    • 该接口指定设置视频侦测通道的动态属性值,即MI_VDF_ChnAttr_t中的stMdDynamicParamsIn /stOdDynamicParamsIn/ stVgAttr部分。


2.2.6. MI_VDF_GetChnAttr

  • 功能

    获取视频侦测通道属性。

  • 语法

    MI_S32 MI_VDF_GetChnAttr(MI_VDF_CHANNEL VdfChn, MI_VDF_ChnAttr_t* pstAttr);
    
  • 形参

    参数名称 描述 输入/输出
    VdfChn 已经创建的视频侦测通道号。 输入
    pstAttr 用来保存返回的视频侦测通道属性值 输出
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a


2.2.7. MI_VDF_EnableSubWindow

  • 功能

    使能/关闭指定的视频侦测通道子窗口。

  • 语法

    MI_S32 MI_VDF_EnableSubWindow(MI_VDF_CHANNEL VdfChn, MI_U8 u8Col, MI_U8 u8Row,
    MI_U8 u8Enable);
    
  • 形参

    参数名称 描述 输入/输出
    VdfChn 已经创建的视频侦测通道号。 输入
    u8Col 子窗口的行地址(保留参数,暂不使用) 输入
    u8Row 子窗口的列地址(保留参数,暂不使用) 输入
    u8Enable 子窗口的使能控制标志 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:Mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意


2.2.8. MI_VDF_Run

  • 功能

    开启指定的视频侦测工作模式(MD/OD/VG)。

  • 语法

    MI_S32 MI_VDF_Run(MI_VDF_WorkMode_e enWorkMode);
    
  • 形参

    参数名称 描述 输入/输出
    enWorkMode 视频侦测(MD/OD/VG)工作模式。 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照*错误码*。

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意

    • 工作模式目前支持三种:MD,OD,VG。

    • MI_VDF_Run/MI_VDF_Stop函数作用于整个工作模式(MD/OD/VG)下的所有视频侦测通道。


2.2.9. MI_VDF_Stop

  • 功能

    停止视频侦测(MD/OD/VG)工作模式。

  • 语法

    MI_S32 MI_VDF_Stop(MI_VDF_WorkMode_e enWorkMode);
    
  • 形参

    参数名称 描述 输入/输出
    enWorkMode 视频侦测(MD/OD/VG)工作模式。 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意

    • 工作模式目前支持三种:MD,OD,VG。

    • MI_VDF_Run/MI_VDF_Stop函数作用于整个工作模式(MD/OD/VG)下的所有视频侦测通道。


2.2.10. MI_VDF_GetResult

  • 功能

    获取指定视频侦测通道的检测结果。

  • 语法

    MI_S32 MI_VDF_GetResult(MI_VDF_CHANNEL VdfChn, MI_VDF_Result_t\* pstVdfResult,
    MI_S32 s32MilliSec);
    
  • 形参

    参数名称 描述 输入/输出
    VdfChn 已经创建的视频侦测通道号。 输入
    s32MilliSec 输入时间参数(保留参数,暂不使用) 输入
    pstVdfResult 用来保存返回的视频侦测结果 输出
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意

    • VdfChn必须是已经创建的视频侦测通道。

    • s32MilliSec为API 接口向上兼容而保留,暂无实际作用,可以直接赋值0。

    • 用于保存返回结果的指针不能为空。


2.2.11. MI_VDF_PutResult

  • 功能

    释放指定视频侦测通道的检测结果。

  • 语法

    MI_S32 MI_VDF_PutResult(MI_VDF_CHANNEL VdfChn, MI_VDF_Result_t* pstVdfResult);
    
  • 形参

    参数名称 描述 输入/输出
    VdfChn 已经创建的视频侦测通道号。 输入
    pstVdfResult 指定需要释放视频通道的结果参数 输入
  • 返回值

    • 0 成功。

    • 非0 失败,参照*错误码*。

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意

    • VdfChn必须是已经创建的视频侦测通道。

2.2.12. MI_VDF_GetLibVersion

  • 功能

    获取MD/OD/VG库版本号。

  • 语法

    MI_S32 MI_VDF_GetLibVersion(MI_VDF_CHANNEL VdfChn, MI_U32* u32VDFVersion);
    
  • 形参

    参数名称 描述 输入/输出
    VdfChn 已经创建的视频侦测通道号。 输入
    u32VDFVersion 存储版本号的整形指针(不能为空) 输出
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a


2.2.13. MI_VDF_GetDebugInfo

  • 功能

    获取MD/OD/VG库的调试信息。

  • 语法

    MI_S32 MI_VDF_GetDebugInfo(MI_VDF_CHANNEL VdfChn, MI_VDF_DebugInfo_t
    *pstDebugInfo);
    
  • 形参

    参数名称 描述 输入/输出
    VdfChn 已经创建的视频侦测通道号。 输入
    pstDebugInfo 存储VDF 调试信息的整形指针(不能为空) 输出
  • 返回值

    • 0 成功。

    • 非0 失败,参照错误码

  • 依赖

    • 头文件:mi_sys.h、mi_md.h、mi_od.h、mi_vg.h、mi_vdf.h

    • 库文件:libOD_LINUX.a、libMD_LINUX.a、libVG_LINUX.a、libmi_vdf.a

  • 注意

    • 目前只支持返回VG的调试信息,当VdfChn的工作模式是VG时,才有效。

3. 数据类型


3.1. VDF结构体列表

相关数据类型、数据结构、联合体定义如下:

结构体 定义
MI_VDF_WorkMode_e 定义VDF工作模式的枚举类型
MI_VDF_Color_e 定义视频侦测通道输入源的枚举类型
MI_VDF_ODWindow_e 定义OD时画面的子窗口数量的枚举类型
MI_MD_Result_t 定义MD结果的结构体
MI_OD_Result_t 定义OD结果的结构体
MI_VG_Result_t 定义VG结果的结构体
MI_VDF_Result_t 定义VDF工作模式对应结果的结构体
MI_VDF_MdAttr_t 定义MD通道属性的结构体
MI_VDF_OdAttr_t 定义OD通道属性的结构体
MI_VDF_VgAttr_t 定义VG通道属性的结构体
MI_VDF_ChnAttr_t 定义通道工作模式属性的结构体
MDRST_STATUS_t 定义侦测子窗口区域运动检测结果的结构体

3.2. VDF结构体说明


3.2.1. MI_VDF_WorkMode_e

  • 说明

    定义VDF工作模式的枚举类型。

  • 定义

    typedef enum
    
    {
    
        E_MI_VDF_WORK_MODE_MD = 0,
    
        E_MI_VDF_WORK_MODE_OD,
    
        E_MI_VDF_WORK_MODE_VG,
    
        E_MI_VDF_WORK_MODE_MAX
    
    }MI_VDF_WorkMode_e;
    
  • 成员

    成员名称 描述
    E_MI_VDF_WORK_MODE_MD MD工作模式
    E_MI_VDF_WORK_MODE_OD OD工作模式
    E_MI_VDF_WORK_MODE_VG VG工作模式
    E_MI_VDF_WORK_MODE_MAX 工作模式的错误码标识

3.2.2. MI_VDF_Color_e

  • 说明

    定义视频侦测通道输入源的枚举类型

  • 定义

    typedef enum
    
    {
    
        E_MI_VDF_COLOR_Y = 1,
    
        E_MI_VDF_COLOR_MAX
    
    } MI_VDF_Color_e;
    
  • 成员

    成员名称 描述
    E_MI_VDF_COLOR_Y 视频侦测通道输入源类型的正确标识
    E_MI_VDF_COLOR_MAX 视频侦测通道输入源类型的错误码标识

3.2.3. MI_VDF_ODWindow_e

  • 说明

    定义OD时画面的子窗口数量的枚举类型

  • 定义

    typedef enum
    
    {
    
        E_MI_VDF_ODWINDOW_1X1 = 0,
    
        E_MI_VDF_ODWINDOW_2X2,
    
        E_MI_VDF_ODWINDOW_3X3,
    
        E_MI_VDF_ODWINDOW_MAX
    
    } MI_VDF_ODWindow_e;
    
  • 成员

    成员名称 描述
    E_MI_VDF_ODWINDOW_1X1 OD画面分割为1个子窗口
    E_MI_VDF_ODWINDOW_2X2 OD画面分割为2x2个子窗口
    E_MI_VDF_ODWINDOW_3X3 OD画面分割为3x3个子窗口
    E_MI_VDF_ODWINDOW_MAX OD画面子窗口数量的错误码标识

3.2.4. MI_MD_Result_t

  • 说明

    定义MD结果的结构体。

  • 定义

    typedef struct MI_MD_Result_s
    
    {
    
        MI_U64 u64Pts;                //The PTS of Image
    
        MI_U8  u8Enable;              //=1表明该结果值有效
    
        MI_MD_ResultSize_t stSubResultSize;
    
        MDRST_STATUS_t* pstMdResultStatus; //The MD result of Status
    
        MDSAD_DATA_t* pstMdResultSad; //The MD result of SAD
    
        MDOBJ_DATA_t* pstMdResultObj; //The MD result of Obj
    
    }MI_MD_Result_t;
    
  • 成员

    成员名称 描述
    u64Pts 图像显示时间
    u8Enable 表明该通道是否使能
    u8Reading 表明该结果正在被应用层读取
    stSubResultSize 描述MD返回的Sad、Obj、ReasultStauts子结构的Size
    pstMdResultStatus 描述MD各区域是否检测到运动
    pstMdResultSad 描述MD的Sad值
    pstMdResultObj 描述MD的CCL值

3.2.5. MI_OD_Result_t

  • 说明

    定义OD结果的结构体。

  • 定义

    typedef struct MI_OD_Result_s
    
    {
    
        MI_U8 u8Enable;
    
        MI_U8 u8WideDiv; //The number of divisions of window in horizontal direction
    
        MI_U8 u8HightDiv; //The number of divisions of window in vertical direction
    
        MI_U8 u8DataLen; //OD detect result readable size
    
        MI_U64 u64Pts; //The PTS of Image
    
        MI_S8 u8RgnAlarm[3][3]; //The OD result of the sub-window
    
    }MI_OD_Result_t;
    
  • 成员

    成员名称 描述
    u8Enable 表明该通道是否使能
    u8WideDiv 获取OD在水平方向的窗口数量
    u8HightDiv 获取OD在垂直方向的窗口数量
    u8DataLen 设置OD测试结果的可读大小
    u64Pts 图像显示时间
    u8RgnAlarm[3][3] OD子窗口信息的结果

3.2.6. MI_VG_Result_t

  • 说明

    定义VG结果的结构体。

  • 定义

    typedef MI_VgResult_t MI_VG_Result_t;
    
  • 成员

    成员名称 描述
    alarm 描述VG的检测结果
    alarm_cnt 描述VG的警报次数
    bounding_box 描述触发VG警报的物体信息

3.2.7. MI_VDF_Result_t

  • 说明

    定义VDF工作模式对应结果的结构体。

  • 定义

    typedef struct _MI_VgResult_t
    
    {
    
        int32_t alarm[MAX_NUMBER];
    
        int32_t alarm_cnt;
    
        MI_VgBoundingBox_t bounding_box[20];
    
    } MI_VgResult_t;
    
  • 成员

    成员名称 描述
    enWorkMode VDF工作模式(MD/OD/VG)
    handle 保存结果的handle
    stMdResult 描述MD结果的结构体
    stOdResult 描述OD结果的结构体
    stVgResult 描述VG结果的结构体

3.2.8. MI_VDF_MdAttr_t

  • 说明

    定义MD通道属性的结构体

  • 定义

    typedef struct MI_VDF_MdAttr_s
    {
        MI_U8  u8Enable;
        MI_U8  u8MdBufCnt;
        MI_U8  u8VDFIntvl;
        MI_U16 u16RstBufSize;
        MI_MD_ResultSize_t stSubResultSize;
        MDCCL_ctrl_t ccl_ctrl;
        MI_MD_static_param_t  stMdStaticParamsIn;
    MI_MD_param_t stMdDynamicParamsIn;
    }MI_VDF_MdAttr_t;
    
  • 成员

    成员名称 描述
    u8Enable 表明该通道是否使能
    u8MdBufCnt 设置可以缓存的MD结果数量 MD结果缓存个数取值范围:[1, 8] 静态属性
    u8VDFIntvl 侦测间隔取值范围:[0, 29],以帧为单位 动态属性
    u16RstBufSize MD返回结果的总大小
    stSubResultSize MD返回结果各子结构体 (Sad值、CCL值、ResultStatus)的大小
    ccl_ctrl ccl_ctrl属性设置
    stMdStaticParamsIn MD静态属性参数设置
    stMdDynamicParamsIn MD动态属性参数设置

3.2.9. MI_VDF_OdAttr_t

  • 说明

    定义OD通道属性的结构体

  • 定义

    typedef struct MI_VDF_OdAttr_s
    {
        MI_U8 u8Enable;
        MI_U8 u8OdBufCnt;
        MI_U8 u8VDFIntvl;
        MI_U16 u16RstBufSize;  
        MI_OD_static_param_t stOdStaticParamsIn;    
        MI_OD_param_t stOdDynamicParamsIn;
    }MI_VDF_OdAttr_t;
    
  • 成员

    成员名称 描述
    u8Enable 表明该通道是否使能
    u8OdBufCnt OD结果缓存个数取值范围:[1, 16] 静态属性
    u8VDFIntvl 侦测间隔取值范围:[0, 29],以帧为单位 动态属性
    u16RstBufSize OD返回结果的总大小
    stOdDynamicParamsIn OD动态属性参数设置
    stOdStaticParamsIn OD静态属性参数设置

3.2.10. MI_VDF_VgAttr_t

  • 说明

    定义VG通道属性的结构体

  • 定义

    typedef struct MI_VDF_VgAttr_s
    
    {
    
        MI_U8 u8Enable;
    
        MI_U8 u8VgBufCnt;
    
        MI_U8 u8VDFIntvl;
    
        MI_U16 u16RstBufSize;
    
        MI_U16 width;
    
        MI_U16 height;
    
        MI_U16 stride;
    
        float object_size_thd;
    
        uint8_t indoor;
    
        uint8_t function_state;
    
        uint16_t line_number;
    
        MI_VgLine_t line[4];
    
        MI_VgRegion_t vg_region;
    
        MI_VgSet_t stVgParamsIn;
    
    } MI_VDF_VgAttr_t;
    
  • 成员

    成员名称 描述
    u8Enable 表明该通道是否使能
    u8VgBufCnt VG结果缓存个数取值范围:[1, 8] 静态属性
    u8VDFIntvl 侦测间隔取值范围:[0, 29],以帧为单位 动态属性
    u16RstBufSize VG返回结果的总大小
    width 图像的宽度
    height 图像的高度
    stride 图像的stride
    object_size_thd 决定滤除物体占感兴趣区域的百分比大小 (若object_size_thd = 1,表示有物体面积小于图像画面中感兴趣区域的百分之一则会忽略不计算。)
    indoor 室内或者室外,1-室内,0-室外
    function_state 设定虚拟线段与区域入侵有种侦测模式 (VG_VIRTUAL_GATE,表示模式为虚拟线段 VG_REGION_INVASION,表示模式为区域入侵)
    line_number 设定虚拟线段的数目,范围:[1-4]
    line[4] 表明虚拟线段的结构体,最多可设置4条
    vg_region 表明区域入侵的相关参数
    stVgParamsIn Vg属性参数结构体,无需设置,由API返回

3.2.11. MI_VDF_ChnAttr_t

  • 说明

    定义通道工作模式属性的结构体。

  • 定义

    typedef struct MI_VDF_ChnAttr_s
    {
        MI_VDF_WorkMode_e enWorkMode;
        union
        {
            MI_VDF_MdAttr_t stMdAttr;
            MI_VDF_OdAttr_t stOdAttr;
            MI_VDF_VgAttr_t stVgAttr;
        };
    }MI_VDF_ChnAttr_t;
    
  • 成员

    成员名称 描述
    enWorkMode 工作模式(移动侦测,遮挡侦测,电子围栏) 静态属性
    stMdAttr 移动侦测属性
    stOdAttr 遮挡侦测属性
    stVgAttr 电子围栏属性

3.2.12. MDRST_STATUS_t

  • 说明

    定义侦测子窗口区域运动检测结果的结构体

  • 定义

    typedef struct MDRST_STATUS_s
    {
        MI_U8  *paddr;
    } MDRST_STATUS_t;
    
  • 成员

    成员名称 描述
    paddr 指向运动检测状态的buf,每个区域占用1字节 0-区块未检测运动,255-区块检测到运动

3.3. MD结构体列表

枚举
MDMB_MODE_e 宏块的大小枚举值
MDSAD_OUT_CTRL_e SAD输出格式的枚举值
MDALG_MODE_e CCL连通区域的运算模式枚举值,可依前景结果或者SAD结果做CCL运算
结构
MDCCL_ctrl_t 控制CCL运行的参数结构
MDPreproc_ctrl_t 控制MI_MD_Preproc运行的参数结构
MDblock_info_t ROI坐标结构
MDPoint_t 坐标结构
MDROI_t MD侦测区域结构
MDSAD_DATA_t MI_MD_ComputeImageSAD函式输出的结构
MDOBJ_t 定义连通区域的信息:面积及最小包围矩形的坐标位置
MDOBJ_DATA_t CCL输出的结构
MI_MD_IMG_t 移动侦测的图像来源结构,分为实体与虚拟的内存地址指针。
MI_MD_static_param_t MD静态参数设置结构
MI_MD_param_t MD动态参数设置结构

3.4. MD结构体说明


3.4.1. MDMB_MODE_e

  • 说明

    宏块的大小枚举值。

  • 定义

    typedef enum MDMB_MODE_E
    
    {
    
        MDMB_MODE_MB_4x4 = 0x0,
    
        MDMB_MODE_MB_8x8 = 0x1,
    
        MDMB_MODE_MB_16x16 = 0x2,
    
        MDMB_MODE_BUTT
    
    } MDMB_MODE_e;
    
  • 成员

    成员名称 描述
    MDMB_MODE_MB_4x4 使用4x4宏块
    MDMB_MODE_MB_8x8 使用8x8宏块
    MDMB_MODE_MB_16x16 使用16x16宏块

3.4.2. MDSAD_OUT_CTRL_e

  • 说明

    SAD输出格式的枚举值。

  • 定义

    typedef enum MDSAD_OUT_CTRL_E
    
    {
    
        MDSAD_OUT_CTRL_16BIT_SAD = 0x0,
    
        MDSAD_OUT_CTRL_8BIT_SAD = 0x1,
    
        MDSAD_OUT_CTRL_BUTT
    
    } MDSAD_OUT_CTRL_e;
    
  • 成员

    成员名称 描述
    MDSAD_OUT_CTRL_16BIT_SAD 16 bit输出
    MDSAD_OUT_CTRL_8BIT_SAD 8 bit输出

3.4.3. MDALG_MODE_e

  • 说明

    CCL连通区域的运算模式枚举值,可依前景结果或者SAD结果做CCL运算。

  • 定义

    typedef enum MDALG_MODE_E
    
    {
    
        MDALG_MODE_FG = 0x0,
    
        MDALG_MODE_SAD = 0x1,
    
        MDALG_MODE_FRAMEDIFF  = 0x2,
    
        MDALG_MODE_BUTT
    
    } MDALG_MODE_e;
    
  • 成员

    成员名称 描述
    MDALG_MODE_FG 前景模式
    MDALG_MODE_SAD SAD模式
    MDALG_MODE_FRAMEDIFF FrameDifference模式

3.4.4. MDCCL_ctrl_t

  • 说明

    控制CCL运行的参数结构。

  • 定义

    typedef struct MDCCL_ctrl_s
    
    {
    
        uint16_t u16InitAreaThr;
    
        uint16_t u16Step;
    
    } MDCCL_ctrl_t;
    
  • 成员

    成员名称 描述
    u16InitAreaThr 区域面积的门坎值
    u16Step 每提高一次门坎值的提升值

3.4.5. MDPreproc_ctrl_t

  • 说明

    控制MI_MD_Preproc运行的参数结构。

  • 定义

    typedef struct MDPreproc_ctrl_s
    {
        uint16_t u16Md_rgn_size;
        uint16_t u16Align;
    } MDPreproc_ctrl_t;
    
  • 参数

    参数 说明
    u16Md_rgn_size 移动区域的大小范围门坎值,小于此门坎则不计算该区域为动态区域
    u16Align 对应CNN model的align限制(HC/HD:32ss align, FD:64align)

3.4.6. MDblock_info_t

  • 描述

    ROI坐标结构。

  • 定义

    typedef struct MDblock_info_s
    {
        uint16_t st_x;
        uint16_t st_y;
        uint16_t end_x;
        uint16_t end_y;
    } MDblock_info_t;
    
  • 参数

    |参数 说明| |-----|-----| |st_x|ROI的左上x坐标| |st_y|ROI的左上y坐标| |end_x|ROI的右下x坐标| |end_y|ROI的右下y坐标|


3.4.7. MDPoint_t

  • 说明

    坐标结构。

  • 定义

    typedef struct MDPoint_s
    
    {
    
        uint16_t x;
    
        uint16_t y;
    
    } MDPoint_t;
    
  • 成员

    成员名称 描述
    x X坐标
    y Y坐标

3.4.8. MDROI_t

  • 说明

    MD侦测区域结构。

  • 定义

    typedef struct MDROI_s
    
    {
    
        uint8_t num;
    
        MDPoint_t pnt[8];
    
    } MDROI_t;
    
  • 成员

    成员名称 描述
    num MD侦测区域点数,目前仅支持设为4点
    pnt[8] 四点坐标(须设为矩形)
  • 注意事项

    要求设置为矩形,num=4,左上角坐标顺时针依序设置四个点,如图示。

    图3-1


3.4.9. MDSAD_DATA_t

  • 说明

    MI_MD_ComputeImageSAD函式输出的结构。

  • 定义

    typedef struct MDSAD_DATA_s
    
    {
    
        void *paddr;
    
        uint32_t stride;
    
        MDSAD_OUT_CTRL_e enOutCtrl;
    
    } MDSAD_DATA_t;
    
  • 成员

    成员名称 描述
    paddr 存放SAD结果的内存地址指针
    stride Image stride
    enOutCtrl SAD输出格式的枚举值

3.4.10. MDOBJ_t

  • 说明

    定义连通区域的信息:面积及最小包围矩形的坐标位置。

  • 定义

    typedef struct MDOBJ_s
    
    {
    
        uint32_t u32Area;
    
        uint16_t u16Left;
    
        uint16_t u16Right;
    
        uint16_t u16Top;
    
        uint16_t u16Bottom;
    
    } MDOBJ_t;
    
  • 成员

    成员名称 描述
    u32Area 单一连通区域的像素总数
    u16Left 最小矩形的左上x坐标
    u16Right 最小矩形的右下x坐标
    u16Top 最小矩形的左上y坐标
    u16Bottom 最小矩形的左上y坐标

3.4.11. MDOBJ_DATA_t

  • 说明

    MI_MD_CCL输出的结构。

  • 定义

    typedef struct MDOBJ_DATA_s
    
    {
    
        uint8_t u8RegionNum;
    
        MDOBJ_t *astRegion;
    
        uint8_t indexofmaxobj;
    
        uint32_t areaofmaxobj;
    
        uint32_t areaoftotalobj;
    
    } MDOBJ_DATA_t;
    
  • 成员

    成员名称 描述
    u8RegionNum 连通区域数量
    astRegion 连通区域的信息:面积及最小包围矩形的坐标位置 最大容许数量为255
    indexofmaxobj 最大面积的连通区域索引值
    areaofmaxobj 最大面积的连通区域面积值
    areaoftotalobj 所有连通区域的面积和

3.4.12. MI_MD_IMG_t

  • 说明

    移动侦测的图像来源结构,分为物理与虚拟的内存地址指针。

  • 定义

    typedef struct MI_MD_IMG_s
    
    {
    
        void *pu32PhyAddr;
    
        uint8_t *pu8VirAddr;
    
    } MI_MD_IMG_t;
    
  • 成员

    成员名称 描述
    pu32PhyAddr 物理内存地址指针,若无请填NULL
    pu8VirAddr 虚拟的内存地址指针

3.4.13. MI_MD_static_param_t

  • 说明

    MD静态参数设置结构。

  • 定义

    typedef struct MI_MD_static_param_s
    {
        uint16_t width;
        uint16_t height;
    uint8_t color;
    uint32_t stride;
        MDMB_MODE_e mb_size;
        MDSAD_OUT_CTRL_e sad_out_ctrl;
        MDROI_t roi_md;
        MDALG_MODE_e md_alg_mode;
    } MI_MD_static_param_t;
    
  • 成员

    成员名称 描述
    width 输入图像宽
    height 输入图像高
    stride 输入图像的stride
    color MD输入图像的类型
    mb_size 宏块的大小枚举值
    sad_out_ctrl SAD输出格式的枚举值
    roi_md MD侦测区域结构
    md_alg_mode CCL连通区域的运算模式枚举值

3.4.14. MI_MD_param_t

  • 说明

    MD动态参数设置结构。

  • 定义

    typedef struct MI_MD_param_s
    
    {
    
        uint8_t sensitivity;
    
        uint16_t learn_rate;
    
        uint32_t md_thr;
    
        uint32_t obj_num_max;
    
        uint8_t LSD_open;
    
    } MI_MD_param_t;
    
  • 成员

    成员名称 描述
    sensitivity 算法灵敏度,范围[10,20,30,…..100],值越大越灵敏,输入的灵敏度如非 10 的倍数, 当运算后反馈, 有可能不为当初输入的数值, 会有 +-1 的偏差。仅于FG模式下有效。
    learn_rate 随不同模式而有不同设定标准
    MDALG_MODE_FG : 单位毫秒,范围[1000,30000],用于控制前端物体停止运动多久时,才作为背景画面
    MDALG_MODE_SAD : 范围[1, 255],背景更新的权重比,建议设定值:128
    md_thr 当呼叫MI_MD_CCL连通组件标记的运算时,作为判定移动有效的门坎值,随不同模式而有不同设定标准。
    MDALG_MODE_FG : 设置为百分比(%),范围[0, 99],判断MB是否警报的门坎值,ex. 若MB size 8*8,md_thr=50,当MB中有超过32个以上的pixel为前景则此MB判为有效。
    MDALG_MODE_SAD : 设置为pixel差值,范围[0, 255],判断MB是否警报的门坎值,ex. 若MB size 8*8,md_thr=50,当MB中平均的pixel差值超过50,则此MB判为有效。
    obj_num_max CCL的连通区域数量限制值
    LSD_open 决定是否作用MI_MD_LightSwitchDetect。范围[0,1],若在LSD_open=0的情况下调用LightSwitchDetect函式,则无作用。

3.5. OD结构体列表

枚举
MI_OD_WIN_STATE OD检测窗口的结果
ODColor_e OD数据源输入的类型
ODWindow_e OD检测窗口的类型
结构
ODPoint_t 坐标结构
ODROI_t OD侦测区域结构
MI_OD_IMG_t 遮挡侦测的图像来源结构,分为实体与虚拟的内存地址指针。
MI_OD_static_param_t OD静态参数设置结构
MI_OD_param_t OD动态参数设置结构

3.6. OD结构体说明


3.6.1. MI_OD_WIN_STATE

  • 说明

    OD检测窗口的结果。

  • 定义

    typedef enum _MI_OD_WIN_STATE
    
    {
    
        MI_OD_WIN_STATE_NON_TAMPER = 0,
    
        MI_OD_WIN_STATE_TAMPER = 1,
    
        MI_OD_WIN_STATE_NO_FEATURE = 2,
    
        MI_OD_WIN_STATE_FAIL = -1,
    
    } MI_OD_WIN_STATE;
    
  • 成员

    成员名称 描述
    MI_OD_WIN_STATE_NON_TAMPER 窗口没遮挡
    MI_OD_WIN_STATE_TAMPER 窗口被遮挡
    MI_OD_WIN_STATE_NO_FEATURE 窗口特征不足
    MI_OD_WIN_STATE_FAIL 失败

3.6.2. ODColor_e

  • 说明

    OD数据源输入的类型。

  • 定义

    typedef enum
    
    {
    
        OD_Y = 1,
    
        OD_COLOR_MAX
    
    } ODColor_e;
    
  • 成员

    成员名称 描述
    OD_Y YUV数据源中的y分量
    OD_COLOR_MAX 输入图像类型的最大值

3.6.3. ODWindow_e

  • 说明

    OD检测窗口的类型,推荐值为OD_WINDOW_3X3,用于测试。

  • 定义

    typedef enum
    
    {
    
        OD_WINDOW_1X1 = 0,
    
        OD_WINDOW_2X2,
    
        OD_WINDOW_3X3,
    
        OD_WINDOW_MAX
    
    } ODWindow_e;
    
  • 成员

    成员名称 描述
    OD_WINDOW_1X1 1个窗口
    OD_WINDOW_2X2 4个窗口
    OD_WINDOW_3X3 9个窗口
    OD_WINDOW_MAX 窗口类型的最大值

3.6.4. ODPoint_t

  • 说明

    坐标结构。

  • 定义

    typedef struct ODPoint_s
    
    {
    
        uint16_t x;
    
        uint16_t y;
    
    } ODPoint_t;
    
  • 成员

    成员名称 描述
    x X坐标
    y Y坐标

3.6.5. ODROI_t

  • 说明

    OD侦测区域结构。

  • 定义

    typedef struct ODROI_s
    
    {
    
        uint8_t num;
    
        ODPoint_t pnt[8];
    
    } ODROI_t;
    
  • 成员

    成员名称 描述
    num OD侦测区域点数,目前仅支持设为4点
    pnt[8] 四点坐标(须设为矩形)
  • 注意

    要求设置为矩形,num=4,左上角坐标顺时针依序设置四个点,如图示。

    图3-2


3.6.6. MI_OD_IMG_t

  • 说明

    遮挡侦测的图像来源结构,分为实体与虚拟的内存地址指针。

  • 定义

    typedef struct MI_OD_IMG_s
    
    {
    
        void *pu32PhyAddr;
    
        uint8_t *pu8VirAddr;
    
    } MI_OD_IMG_t;
    
  • 成员

    成员名称 描述
    pu32PhyAddr 实体的内存地址指针
    pu8VirAddr 虚拟的内存地址指针

3.6.7. MI_OD_static_param_t

  • 说明

    OD静态参数设置结构。

  • 定义

    typedef struct MI_OD_static_param_s
    
    {
    
        uint16_t inImgW;
    
        uint16_t inImgH;
    
        uint32_t inImgStride;
    
        ODColor_e nClrType;
    
        ODWindow_e div;
    
        ODROI_t roi_od;
    
        int32_t alpha;
    
        int32_t M;
    
        int32_t MotionSensitivity;
    
    } MI_OD_static_param_t;
    
  • 成员

    成员名称 描述
    inImgW 输入图像宽
    inImgH 输入图像高
    inImgStride 输入图像stride
    nClrType OD输入图像的类型
    div OD检测窗口的类型
    roi_od OD侦测区域结构
    alpha 控制产生参考图像的学习速率
    M 多少张图像更新一次参考图像
    MotionSensitivity 移动敏感度设置
  • 注意事项

    • 设置范围 alpha : 0~10,建议设置 2,不建议更动。

    • 设置范围 MotionSensitivity: 0~5,设5表示对轻微的晃动都很敏感,容易发报;设0表示对轻微晃动的宽容性比较好,不会发报,这边指的轻微晃动是风吹摇曳之类的,建议初始可设5。

    • M建议设置120,不建议更动。


3.6.8. MI_OD_param_t

  • 说明

    D动态参数设置结构。

  • 定义

    typedef struct MI_OD_param_s
    
    {
    
        int32_t thd_tamper;
    
        int32_t tamper_blk_thd;
    
        int32_t min_duration;
    
    } MI_OD_param_t;
    
  • 成员

    成员名称 描述
    thd_tamper 图像差异比例门坎值
    tamper_blk_thd 图像被遮挡区域数量门坎值
    min_duration 图像差异持续时间门坎值,单位是frame cnt
  • 注意事项

    • 设置范围 thd_tamper : 0~10。若thd_tamper=3,表示超过70%画面遮挡即发报。

    • 设置范围 tamper_blk_thd : 对应MI_OD_Init的窗口类型参数,若为OD_WINDOW_3X3,则tamper_blk_thd 最多不可超过9,即1~9。

    • 例如MI_OD_Init的窗口类型参数为OD_WINDOW_3X3(9个子区域)tamper_blk_thd值为4时,当被遮挡的子区域的数量达到4个才触发MI_OD_Run的返回值为1。

    • min_duration数值越大,检测到被遮挡所需的时间越长。

    • MI_OD_Run的灵敏度可以通过设置tamper_blk_thd和min_duration来调节。对应高中低的推荐值如下:

    参数名
    tamper_blk_thd 2 4 8
    min_duration 5 15 30

3.7. VG结构体列表

枚举
VgFunction 侦测模式的枚举值
VgRegion_Dir 区域入侵的方向的枚举值
VgSize_Sensitively 灵敏度参数结构
VgDirection_State 区域入侵的侦测规则枚举值
结构
MI_VG_Point_t 坐标点对应的结构
MI_VgLine_t 描述虚拟线段和方向的结构
MI_VgRegion_t 描述设置区域入侵的结构
MI_VgSet_t Vg对应参数设置的结构
MI_VgResult_t Vg检测结果对应的结构
MI_VgBoundingBox_t Vg检测结果对应的物件大小结构
MI_VgDetectThd Vg建立背景信息的参数设置的结构

3.8. VG结构体说明


3.8.1. VgFunction

  • 说明

    侦测模式的枚举值。

  • 定义

    typedef enum _VgFunction
    
    {
    
        VG_VIRTUAL_GATE = 2,
    
        VG_REGION_INVASION = 3
    
    } VgFunction;
    
  • 成员

    成员名称 描述
    VG_VIRTUAL_GATE 表示模式为虚拟线段
    VG_REGION_INVASION 表示模式为区域入侵

3.8.2. VgRegion_Dir

  • 说明

    区域入侵的方向的枚举值。

  • 定义

    typedef enum _VgRegion_Dir
    
    {
    
        VG_REGION_ENTER = 0,
    
        VG_REGION_LEAVING = 1,
    
        VG_REGION_CROSS = 2
    
    } VgRegion_Dir;
    
  • 成员

    成员名称 描述
    VG_REGION_ENTER 表示要进入警报区域才触发警报
    VG_REGION_LEAVING 表示要离开警报区域才触发警报
    VG_REGION_CROSS 表示只要穿越警报区域就触发警报

3.8.3. VgSize_Sensitively

  • 说明

    灵敏度参数结构。

  • 定义

    typedef enum _VgSize_Sensitively
    {
        VG_SENSITIVELY_MIN       = 0,
        VG_SENSITIVELY_LOW      = 1,
        VG_SENSITIVELY_MIDDLE   = 2,
        VG_SENSITIVELY_HIGH      = 3,
        VG_SENSITIVELY_MAX      = 4
    } VgSize_Sensitively;
    
  • 成员

    成员名称 描述
    VG_SENSITIVELY_MIN 表示只侦测大于30%影像大小的物体
    VG_SENSITIVELY_LOW 表示只侦测大于10%影像大小的物体
    VG_SENSITIVELY_MIDDLE 表示只侦测大于5%影像大小的物体
    VG_SENSITIVELY_HIGH 表示只侦测大于1%影像大小的物体
    VG_SENSITIVELY_MAX 表示只侦测大于0.5%影像大小的物体

3.8.4. VgDirection_State

  • 说明

    区域入侵的侦测规则枚举值。

  • 定义

    typedef enum _VgDirection_State
    {
        VG_SPEC_DIRECTION_CLOSE   = 0,
        VG_SPEC_DIRECTION_OPEN    = 1
    } VgDirection_State;
    
  • 成员

    成员名称 描述
    VG_SPEC_DIRECTION_CLOSE 关闭结果会区分进入和离开区域的功能 设定 VG\_REGION\_CROSS 前提下,只侦测警报,无判断方向功能。
    VG_SPEC_DIRECTION_OPEN 开启结果会区分进入和离开区域的功能 设定 VG\_REGION\_CROSS 前提下,可判断出警报时的方向是进入还是离开。

3.8.5. MI_VG_Point_t

  • 说明

    坐标点对应的结构。

  • 定义

    typedef struct _VG_Point_t
    
    {
    
        int32_t x;
    
        int32_t y;
    
    } MI_VG_Point_t;
    
  • 成员

    成员名称 描述
    x X坐标
    y Y坐标

3.8.6. MI_VgLine_t

  • 说明

    描述虚拟线段和方向的结构。

  • 定义

    typedef struct _VG_Line_t
    
    {
    
        MI_VG_Point_t px; //point x
    
        MI_VG_Point_t py; //point y
    
        MI_VG_Point_t pdx; //point direction x
    
        MI_VG_Point_t pdy; //point direction y
    
    } MI_VgLine_t;
    
  • 成员

    成员名称 描述
    px 第一个线段点
    py 第二个线段点
    pdx 第一个方向点
    pdy 第二个方向点

3.8.7. MI_VgRegion_t

  • 说明

    描述设置区域入侵的结构。

  • 定义

    typedef struct _VG_Region_t
    
    {
    
        MI_VG_Point_t p_one; //point one
    
        MI_VG_Point_t p_two; //point two
    
        MI_VG_Point_t p_three; //point three
    
        MI_VG_Point_t p_four; //point four
    
        int32_t region_dir;       //Region direction;
    
        int32_t spec_dir_state;
    
    } MI_VgRegion_t;
    
  • 成员

    成员名称 描述
    p_one 描述区域的第一个点
    p_two 描述区域的第二个点
    p_three 描述区域的第三个点
    p_four 描述区域的第四个点
    region_dir 设定区域入侵的方向
    spec_dir_state 设定区域入侵在region_dir= VG_REGION_CROSS时,是否区分进入和离开

3.8.8. MI_VgSet_t

  • 说明

    Vg对应参数设置的结构。

  • 定义

    typedef struct _MI_VgSet_t
    
    {
    
        //Common Information
    
        float object_size_thd;
    
        uint16_t line_number;
    
        uint8_t indoor;
    
        //Line info
    
        MI_VG_Point_t fp[4]; //First point
    
        MI_VG_Point_t sp[4]; //Second point
    
        MI_VG_Point_t fdp[4]; //First direction point
    
        MI_VG_Point_t sdp[4]; //Second direction point
    
        //Function
    
        uint8_t function_state;
    
        //Region info
    
        MI_VG_Point_t first_p; //First point
    
        MI_VG_Point_t second_p; //Second point
    
        MI_VG_Point_t third_p; //Third point
    
        MI_VG_Point_t fourth_p; //Fourth point
    
        //Region direction
    
        uint8_t region_direction;
    
        //Magic_number
    
        int32_t magic_number;
    
        int32_t region_spdir_state;
    
    } MI_VgSet_t;
    
  • 成员

    成员名称 描述
    object_size_thd 决定滤除物体占感兴趣区域的百分比阀值
    line_number 设定虚拟线段的数目,范围:[1-4]
    indoor 室内或者室外,1-室内,0-室外
    fp[4] 第一个线段点数组
    sp[4] 第二个线段点数组
    fdp[4] 第三个线段点数组
    sdp[4] 第四个线段点数组
    function_state 设定虚拟线段、区域入侵侦测模式
    first_p 入侵区域第一个点
    second_p 入侵区域第二个点
    third_p 入侵区域第三个点
    fourth_p 入侵区域低四个点
    region_direction 表明区域入侵的相关参数
    magic_number Magic Number
    region_spdir_state 入侵区域的相关规则方向参数

3.8.9. MI_VgResult_t

  • 说明

    Vg检测结果对应的结构。

  • 定义

    typedef struct _MI_VgResult_t
    
    {
    
        int32_t alarm[4];
    
        int32_t alarm_cnt;
    
        MI_VgBoundingBox_t bounding_box[20];
    
    } MI_VgResult_t;
    
  • 成员

    成员名称 描述
    alarm[4] Vg的报警结果
    alarm_cnt Vg的报警次数
    bounding_box Vg触发警报的对象信息

3.8.10. MI_VgBoundingBox_t

  • 说明

    Vg检测结果对应的物件大小结构。

  • 定义

    typedef struct _MI_VgBoundingBox_t
    {
        int32_t up;
        int32_t down;
        int32_t left;
        int32_t right;
    } MI_VgBoundingBox_t;
    
  • 成员

    成员名称 描述
    up 对象的最小 y 坐标信息
    down 对象的最大 y 坐标信息
    left 对象的最小 x 坐标信息
    right 对象的最大 x 坐标信息

3.8.11. MI_VgDetectThd

  • 说明

    Vg建立背景資訊的参数设置的结构。

  • 定义

    typedef struct _MI_VdDetectThd_t
    {
        uint8_t function_switch;
        uint8_t detect_thd;
    } MI_VgDetectThd;
    
  • 成员

    成员名称 描述
    function_switch 自定义阀值建立背景的功能状态 0\-关,1\-开
    detect_thd 自定义阀值,范围:[1-50]

4. 错误码

区域管理 API 错误码如表所示。

表4-1 区域管理 API错误码

错误代码 宏定义 描述
0xA0012001 MI_ERR_VDF_INVALID_DEVID 设备 ID 超出合法范围
0xA0012002 MI_ERR_VDF_INVALID_CHNID 通道组号错误或无效区域句柄
0xA0012003 MI_ERR_VDF_ILLEGAL_PARAM 参数超出合法范围
0xA0012004 MI_ERR_VDF_EXIST 重复创建已存在的设备、通道或资源
0xA0012005 MI_ERR_VDF_UNEXIST 试图使用或者销毁不存在的设备、通道或者资源
0xA0012006 MI_ERR_VDF_NULL_PTR 函数参数中有空指针
0xA0012007 MI_ERR_VDF_NOT_CONFIG 模块没有配置
0xA0012008 MI_ERR_VDF_NOT_SUPPORT 不支持的参数或者功能
0xA0012009 MI_ERR_VDF_NOT_PERM 该操作不允许,如试图修改静态配置参数
0xA001200C MI_ERR_VDF_NOMEM 分配内存失败,如系统内存不足
0xA001200D MI_ERR_VDF_NOBUF 分配缓存失败,如申请的数据缓冲区太大
0xA001200E MI_ERR_VDF_BUF_EMPTY 缓冲区中无数据
0xA001200F MI_ERR_VDF_BUF_FULL 缓冲区中数据满
0xA0012010 MI_ERR_VDF_NOTREADY 系统没有初始化或没有加载相应模块
0xA0012011 MI_ERR_VDF_BADADDR 地址非法
0xA0012012 MI_ERR_VDF_BUSY 系统忙
0xA0012013 MI_ERR_VDF_CHN_NOT_STARTED 通道没有开始
0xA0012014 MI_ERR_VDF_CHN_NOT_STOPED 通道没有停止
0xA0012015 MI_ERR_VDF_NOT_INIT 模块没有初始化
0xA0012016 MI_ERR_VDF_INITED 模块已经初始化
0xA0012017 MI_ERR_VDF_NOT_ENABLE 通道或端口没有ENABLE
0xA0012018 MI_ERR_VDF_NOT_DISABLE 通道或端口没有DISABLE
0xA0012019 MI_ERR_VDF_TIMEOUT 超时
0xA001201A MI_ERR_VDF_DEV_NOT_STARTED 设备没有开始
0xA001201B MI_ERR_VDF_DEV_NOT_STOPED 设备没有停止
0xA001201C MI_ERR_VDF_CHN_NO_CONTENT 通道没有资料
0xA001201D MI_ERR_VDF_NOVASAPCE 映射虚拟地址失败
0xA001201E MI_ERR_VDF_NOITEM 没有record记录
0xA001201F MI_ERR_VDF_FAILED 未明确定义的错误