您尚未登录。

楼主 #1 2021-01-06 16:34:40

18842634439
会员
注册时间: 2021-01-06
已发帖子: 9
积分: 4

hi3516 移动监测 sample_ive_md 例程程序梳理

sample_ive_md 程序梳理

/**
step 1: start vi vpss venc vo
**/

SAMPLE_COMM_IVE_StartViVpssVencVo

SAMPLE_COMM_VI_GetSensorInfo
SAMPLE_COMM_VI_GetComboDevBySensor
SAMPLE_COMM_VI_GetSizeBySensor

/**
step 1: Init vb
**/
SAMPLE_COMM_IVE_VbInit
SAMPLE_COMM_SYS_GetPicSize
COMMON_GetPicBufferSize
SAMPLE_COMM_SYS_Init

/**
step 2: Start vi
**/
SAMPLE_COMM_VI_SetParam
SAMPLE_COMM_VI_StartVi

/**
step 3: Start vpss
**/
SAMPLE_COMM_IVE_StartVpss
/config vpss/
stVpssGrpAttr与astVpssChnAttr属性参数配置(结构体详见 VIO_ATTR_S.txt)
SAMPLE_COMM_VPSS_Start

/**
step 4: Bind vpss to vi
**/
SAMPLE_COMM_VI_Bind_VPSS

//Set vi frame
HI_MPI_VI_GetChnAttr
HI_MPI_VI_SetChnAttr

/**
step 5: Start Vo
**/
SAMPLE_COMM_IVE_StartVo

SAMPLE_COMM_VO_StartDev
SAMPLE_COMM_VO_HdmiStart
SAMPLE_COMM_VO_HdmiConvertSync
HI_MPI_HDMI_Init
HI_MPI_HDMI_Open
HI_MPI_HDMI_GetAttr
HI_MPI_HDMI_SetAttr
HI_MPI_HDMI_Start
SAMPLE_COMM_VO_GetWH
HI_MPI_VO_SetDisplayBufLen
SAMPLE_COMM_VO_StartLayer
SAMPLE_COMM_VO_StartChn
SAMPLE_COMM_VO_StartMipiTx

/**
step 6: Start Venc
**/
SAMPLE_COMM_VENC_GetGopAttr //VENC_GOPMODE_NORMALP
SAMPLE_COMM_VENC_Start
/**
step 1: Creat Encode Chnl
**/
SAMPLE_COMM_VENC_Creat
SAMPLE_COMM_SYS_GetPicSize
SAMPLE_COMM_VI_GetSensorInfo
SAMPLE_COMM_VI_GetFrameRateBySensor

//Create Venc Channel
stVencChnAttr参数配置
/ the attribute of the venc chnl /
typedef struct hiVENC_CHN_ATTR_S {
VENC_ATTR_S stVencAttr; / the attribute of video encoder /
VENC_RC_ATTR_S stRcAttr; / the attribute of rate ctrl /
VENC_GOP_ATTR_S stGopAttr; / the attribute of gop /
} VENC_CHN_ATTR_S;

HI_MPI_VENC_CreateChn

SAMPLE_COMM_VENC_CloseReEncode
HI_MPI_VENC_GetChnAttr
HI_MPI_VENC_GetRcParam
HI_MPI_VENC_SetRcParam

/**
step 2: Start Recv Venc Pictures
**/
HI_MPI_VENC_StartRecvFrame //开启编码通道接收输入图像 允许指定接收帧数,超出指定的帧数后自动停止接收图像。

SAMPLE_COMM_VENC_StartGetStream
pthread_create(&gs_VencPid, 0, SAMPLE_COMM_VENC_GetVencStreamProc, (HI_VOID*)&gs_stPara);

SAMPLE_COMM_VENC_Stop
SAMPLE_COMM_IVE_StopVo
SAMPLE_COMM_VI_UnBind_VPSS
SAMPLE_COMM_IVE_StopVpss
SAMPLE_COMM_VI_StopVi
SAMPLE_COMM_SYS_Exit

SAMPLE_COMM_SYS_GetPicSize

/**
step 2: Init Md
**/

SAMPLE_IVE_Md_Init
SAMPLE_COMM_IVE_CreateImage
SAMPLE_COMM_IVE_CreateMemInfo

//Set attr info
HI_IVS_MD_Init
/**
step 3: Create work thread
**/

snprintf(acThreadName, 16, "IVE_MdProc");
prctl(PR_SET_NAME, (unsigned long)acThreadName, 0,0,0);
pthread_create(&s_hMdThread, 0, SAMPLE_IVE_MdProc, (HI_VOID *)&s_stMd);

//Create chn
HI_IVS_MD_CreateChn

HI_MPI_VPSS_GetChnFrame //用户获取一帧通道图像 ,用户从通道获取一帧处理完成的图像 mpp手册720页

SAMPLE_COMM_IVE_DmaImage //DMA帧信息以提供图像
//fill src
//fill dst
HI_MPI_IVE_DMA //创建直接内存访问任务,支持 快速拷贝 、 间隔拷贝 、 内存填充 可 实现数据从一块内存 快速拷 贝 到另一块内存 ,或者从一块内存有规律的拷贝一些数据到另一块内存,或者 对 一块内存 进行 填充 操作
//IVE_DMA_MODE_DIRECT_COPY 快速拷贝模式
HI_MPI_IVE_Query

HI_IVS_MD_Process //移动侦测处理 HiIVS 15页
SAMPLE_COMM_IVE_BlobToRect

//Draw rect
SAMPLE_COMM_VGS_FillRect
HI_MPI_VGS_BeginJob //启动一个job
HI_MPI_VGS_AddCoverTask //往一个已经启动的job添加打COVER task。
HI_MPI_VGS_EndJob //提交一个job。

HI_MPI_VO_SendFrame //将视频图像送入指定视频输出通道显示。

SAMPLE_PAUSE();

SAMPLE_IVE_Md_Uninit

SAMPLE_COMM_IVE_StopViVpssVencVo

-------------------------------------------------------------------------------------------------------------------------------------------

typedef struct hiSAMPLE_IVE_MD_S
{
IVE_SRC_IMAGE_S astImg[SAMPLE_IVE_MD_IMAGE_NUM]; //#define SAMPLE_IVE_MD_IMAGE_NUM 2
IVE_DST_MEM_INFO_S stBlob;
MD_ATTR_S stMdAttr;
SAMPLE_RECT_ARRAY_S stRegion;

}SAMPLE_IVE_MD_S;

/ Definition of the IVE_IMAGE_S. Added by Tan Bing, 2013-7-22. /
typedef struct hiIVE_IMAGE_S {
HI_U64 au64PhyAddr[3]; / RW;The physical address of the image /
HI_U64 au64VirAddr[3]; / RW;The virtual address of the image /
HI_U32 au32Stride[3]; / RW;The stride of the image /
HI_U32 u32Width; / RW;The width of the image /
HI_U32 u32Height; / RW;The height of the image /
IVE_IMAGE_TYPE_E enType; / RW;The type of the image /
} IVE_IMAGE_S;

/*

  • Definition of the IVE_MEM_INFO_S.This struct special purpose for input or ouput, such as Hist, CCL, ShiTomasi.

  • Added by Chen Quanfu, 2013-7-23.
    */
    typedef struct hiIVE_MEM_INFO_S {
    HI_U64 u64PhyAddr; / RW;The physical address of the memory /
    HI_U64 u64VirAddr; / RW;The virtual address of the memory /
    HI_U32 u32Size; / RW;The size of memory /
    } IVE_MEM_INFO_S;

/*

  • Definition of md attribute
    */
    typedef struct hiMD_ATTR_S {
    MD_ALG_MODE_E enAlgMode; / Md algorithm mode /
    IVE_SAD_MODE_E enSadMode; / Sad mode /
    IVE_SAD_OUT_CTRL_E enSadOutCtrl; / Sad output ctrl /
    HI_U32 u32Width; / Image width /
    HI_U32 u32Height; / Image height /
    HI_U16 u16SadThr; / Sad thresh /
    IVE_CCL_CTRL_S stCclCtrl; / Ccl ctrl /
    IVE_ADD_CTRL_S stAddCtrl; / Add ctrl /
    } MD_ATTR_S;

typedef struct hiSAMPLE_RECT_ARRAY_S
{
HI_U16 u16Num;
SAMPLE_IVE_RECT_S astRect[IVE_RECT_NUM];
} SAMPLE_RECT_ARRAY_S;

typedef struct hiSAMPLE_IVE_RECT_S
{
POINT_S astPoint[4];
} SAMPLE_IVE_RECT_S;

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发