static void video_InputInit() { // int i = 0; // init sdk { VI_PUB_ATTR_S stViDevAttr; VI_CHN_ATTR_S stViChnAttr; // vi0 1-16 ch cif input 1d1 // vi2 1-16 ch d1 input mutex d1 live //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// // vi0 stViDevAttr.enInputMode = VI_MODE_BT656; stViDevAttr.enWorkMode = VI_WORK_MODE_1D1; stViDevAttr.enViNorm = (VIDEO_IS_PAL() ? VIDEO_ENCODING_MODE_PAL : VIDEO_ENCODING_MODE_NTSC); // channel attribute stViChnAttr.stCapRect.s32X = 0; stViChnAttr.stCapRect.s32Y = 0; stViChnAttr.stCapRect.u32Width = VI_CIF_WIDTH; stViChnAttr.stCapRect.u32Height = 8 * VI_CIF_HEIGHT + 7 * 2; // half field height combo frame stViChnAttr.bChromaResample = HI_FALSE; stViChnAttr.enCapSel = VI_CAPSEL_BOTH; stViChnAttr.bDownScale = HI_FALSE; stViChnAttr.bHighPri = HI_FALSE; stViChnAttr.enViPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; DVR_ASSERT(HI_MPI_VI_Disable(0)); DVR_ASSERT(HI_MPI_VI_SetPubAttr(0, &stViDevAttr)); DVR_ASSERT(HI_MPI_VI_Enable(0)); DVR_ASSERT(HI_MPI_VI_SetChnAttr(0, 0, &stViChnAttr)); DVR_ASSERT(HI_MPI_VI_EnableChn(0, 0)); DVR_ASSERT(HI_MPI_VI_SetSrcFrameRate(0, 0, MAX_CIF_LIVE_FPS)); DVR_ASSERT(HI_MPI_VI_SetFrameRate(0, 0, MAX_CIF_LIVE_FPS)); //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// // vi2 must be d1 stViChnAttr.enCapSel = VI_CAPSEL_BOTH; stViChnAttr.bDownScale = HI_FALSE; stViChnAttr.stCapRect.s32Y = 0; stViChnAttr.stCapRect.u32Height = VIDEO_IS_PAL() ? 288 : 240; stViChnAttr.bChromaResample = HI_FALSE; stViChnAttr.bHighPri = HI_FALSE; VI_CIF_ATTR_CONF(&stViChnAttr); // vi2 DVR_ASSERT(HI_MPI_VI_Disable(2)); DVR_ASSERT(HI_MPI_VI_SetPubAttr(2, &stViDevAttr)); DVR_ASSERT(HI_MPI_VI_Enable(2)); DVR_ASSERT(HI_MPI_VI_SetChnAttr(2, 0, &stViChnAttr)); DVR_ASSERT(HI_MPI_VI_EnableChn(2, 0)); DVR_ASSERT(HI_MPI_VI_SetSrcFrameRate(2, 0, MAX_D1_LIVE_FPS)); DVR_ASSERT(HI_MPI_VI_SetFrameRate(2, 0, MAX_D1_LIVE_FPS)); } }
HI_S32 SampleEnableVi(VI_DEV ViDev,VI_CHN ViChn, VI_PUB_ATTR_S *pViPubAttr,VI_CHN_ATTR_S *pViChnAttr) { HI_S32 s32Ret; s32Ret = HI_MPI_VI_SetPubAttr(ViDev, pViPubAttr); if (HI_SUCCESS != s32Ret) { printf("set VI attribute failed 0x%x!\n",s32Ret); return HI_FAILURE; } s32Ret = HI_MPI_VI_SetChnAttr(ViDev, ViChn, pViChnAttr); if (HI_SUCCESS != s32Ret) { printf("set VI Chn attribute failed 0x%x!\n",s32Ret); return HI_FAILURE; } s32Ret = HI_MPI_VI_Enable(ViDev); if (HI_SUCCESS != s32Ret) { printf("set VI enable failed 0x%x!\n",s32Ret); return HI_FAILURE; } s32Ret = HI_MPI_VI_EnableChn(ViDev, ViChn); if (HI_SUCCESS != s32Ret) { printf("set VI Chn enable failed 0x%x!\n",s32Ret); return HI_FAILURE; } return HI_SUCCESS; }
HI_S32 PCIV_Slave_SysInit() { HI_S32 s32Ret, i; MPP_SYS_CONF_S stSysConf = {0}; VB_CONF_S stVbConf = {0}; VI_PUB_ATTR_S stviAttr; VO_PUB_ATTR_S stvoAttr; HI_MPI_SYS_Exit(); HI_MPI_VB_Exit(); stVbConf.u32MaxPoolCnt = 128; stVbConf.astCommPool[0].u32BlkSize = 884736;/* 768*576*1.5*/ stVbConf.astCommPool[0].u32BlkCnt = 20; stVbConf.astCommPool[1].u32BlkSize = 221184;/* 384*288*1.5*/ stVbConf.astCommPool[1].u32BlkCnt = 60; s32Ret = HI_MPI_VB_SetConf(&stVbConf); HI_ASSERT((HI_SUCCESS == s32Ret)); s32Ret = HI_MPI_VB_Init(); HI_ASSERT((HI_SUCCESS == s32Ret)); stSysConf.u32AlignWidth = 64; s32Ret = HI_MPI_SYS_SetConf(&stSysConf); HI_ASSERT((HI_SUCCESS == s32Ret)); s32Ret = HI_MPI_SYS_Init(); HI_ASSERT((HI_SUCCESS == s32Ret)); /* Enable VI device*/ memset(&stviAttr,0,sizeof(VI_PUB_ATTR_S)); stviAttr.enInputMode = VI_MODE_BT656; stviAttr.enWorkMode = VI_WORK_MODE_2D1; stviAttr.u32AdType = AD_2815; stviAttr.enViNorm = VIDEO_ENCODING_MODE_PAL; for (i = 0; i < VIU_MAX_DEV_NUM; i++) { s32Ret = HI_MPI_VI_SetPubAttr(i, &stviAttr); HI_ASSERT((HI_SUCCESS == s32Ret)); s32Ret = HI_MPI_VI_Enable(i); HI_ASSERT((HI_SUCCESS == s32Ret)); } /* Enable VO device*/ stvoAttr.stTvConfig.stComposeMode = VIDEO_ENCODING_MODE_PAL; stvoAttr.u32BgColor = 0x000000; s32Ret = HI_MPI_VO_SetPubAttr(&stvoAttr); HI_ASSERT((HI_SUCCESS == s32Ret)); s32Ret = HI_MPI_VO_Enable(); HI_ASSERT((HI_SUCCESS == s32Ret)); return HI_SUCCESS; }
HI_S32 SampleEnableVi4HD1(HI_VOID) { HI_U32 i,j; VI_PUB_ATTR_S ViAttr; VI_CHN_ATTR_S ViChnAttr; memset(&ViAttr,0,sizeof(VI_PUB_ATTR_S)); memset(&ViChnAttr,0,sizeof(VI_CHN_ATTR_S)); ViAttr.enInputMode = VI_MODE_BT656; ViAttr.enWorkMode = VI_WORK_MODE_2D1; ViChnAttr.bDownScale = HI_FALSE; ViChnAttr.bHighPri = 0; ViChnAttr.enCapSel = VI_CAPSEL_BOTTOM; ViChnAttr.enViPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; ViChnAttr.stCapRect.s32X = 0; ViChnAttr.stCapRect.s32Y = 0; ViChnAttr.stCapRect.u32Width = 704; ViChnAttr.stCapRect.u32Height = 288; for(i=0;i<2;i++) { if (HI_SUCCESS!=HI_MPI_VI_SetPubAttr(i,&ViAttr)) { printf("HI_MPI_VI_SetPubAttr faild!\n"); return HI_FAILURE; } if (HI_SUCCESS!=HI_MPI_VI_Enable(i)) { printf("HI_MPI_VI_Enable faild!\n"); return HI_FAILURE; } for(j=0;j<2;j++) { if (HI_SUCCESS!=HI_MPI_VI_SetChnAttr(i,j,&ViChnAttr)) { printf("HI_MPI_VI_SetChnAttr faild!\n"); return HI_FAILURE; } if (HI_SUCCESS!=HI_MPI_VI_EnableChn(i,j)) { printf("HI_MPI_VI_EnableChn faild!\n"); return HI_FAILURE; } } } return HI_SUCCESS; }
static void video_InputInit() { int i = 0, ii = 0; // init sdk { int nDev = 0; int nChnCnt = 0; VI_PUB_ATTR_S stViDevAttr; VI_CHN_ATTR_S stViChnAttr; int const vi_fps = (VIDEO_IS_PAL() ? 25 : 30); // vi0 1-4 ch cif input 4d1 // vi2 5-8 ch d1 input 4d1 // device attributes stViDevAttr.enInputMode = VI_MODE_BT656; stViDevAttr.enWorkMode = VI_WORK_MODE_4D1; stViDevAttr.enViNorm = (VIDEO_IS_PAL() ? VIDEO_ENCODING_MODE_PAL : VIDEO_ENCODING_MODE_NTSC); // channel attributes stViChnAttr.stCapRect.s32Y = 0; stViChnAttr.stCapRect.u32Height = (VIDEO_IS_PAL() ? 288 : 240); stViChnAttr.bHighPri = HI_FALSE; stViChnAttr.bChromaResample = HI_FALSE; stViChnAttr.enViPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; VI_CIF_ATTR_CONF(&stViChnAttr); for(ii = 0; ii < MAX_CAM_CH; ii += 4) { if(VIMAP_Get(ii, &nDev, NULL) < 0) { continue; } DVR_ASSERT(HI_MPI_VI_Disable(nDev)); DVR_ASSERT(HI_MPI_VI_SetPubAttr(nDev, &stViDevAttr)); DVR_ASSERT(HI_MPI_VI_Enable(nDev)); for(i = 0; i < 4; ++i) { if(nChnCnt++ < MAX_D1_CNT){ VI_D1_ATTR_CONF(&stViChnAttr); }else{ VI_CIF_ATTR_CONF(&stViChnAttr); } DVR_ASSERT(HI_MPI_VI_SetChnAttr(nDev, i, &stViChnAttr)); DVR_ASSERT(HI_MPI_VI_EnableChn(nDev, i)); DVR_ASSERT(HI_MPI_VI_SetSrcFrameRate(nDev, i, vi_fps)); DVR_ASSERT(HI_MPI_VI_SetFrameRate(nDev, i, vi_fps)); } } } }
static void video_InputInit() { int ii, jj; VI_PUB_ATTR_S stViDevAttr; VI_CHN_ATTR_S stViChnAttr; // vi0 1-4 ch cif input 4d1 // vi1 5-8 ch cif input 4d1 // vi2 9-12 ch cif input 4d1 // vi3 13-16 ch cif input 4d1 //////////////////////////////////////////////////////////////// // vi stViDevAttr.enInputMode = VI_MODE_BT656; stViDevAttr.enWorkMode = VI_WORK_MODE_4D1; stViDevAttr.enViNorm = (VIDEO_IS_PAL() ? VIDEO_ENCODING_MODE_PAL : VIDEO_ENCODING_MODE_NTSC); // 4d1 input stViChnAttr.stCapRect.u32Width = 704; stViChnAttr.stCapRect.u32Height = VI_CIF_HEIGHT; stViChnAttr.stCapRect.s32X = VI_X_OFFSET; stViChnAttr.stCapRect.s32Y = 0; stViChnAttr.bChromaResample = HI_FALSE; stViChnAttr.enCapSel = VO_FIELD_BOTTOM; stViChnAttr.bDownScale = HI_TRUE; stViChnAttr.bHighPri = HI_FALSE; stViChnAttr.enViPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; for(ii = 0; ii < 4; ii ++) { // interface DVR_ASSERT(HI_MPI_VI_Disable(ii)); DVR_ASSERT(HI_MPI_VI_SetPubAttr(ii, &stViDevAttr)); DVR_ASSERT(HI_MPI_VI_Enable(ii)); for(jj = 0; jj < 4; jj ++) { DVR_ASSERT(HI_MPI_VI_SetChnAttr(ii, jj, &stViChnAttr)); DVR_ASSERT(HI_MPI_VI_EnableChn(ii, jj)); DVR_ASSERT(HI_MPI_VI_SetSrcFrameRate(ii, jj, MAX_CIF_LIVE_FPS)); DVR_ASSERT(HI_MPI_VI_SetFrameRate(ii, jj, MAX_CIF_LIVE_FPS)); } } }
HI_S32 PCIV_Test_Slave_StartVi(VI_DEV viDev, VI_CHN viChn) { HI_S32 s32Ret; VI_PUB_ATTR_S ViAttr; VI_CHN_ATTR_S ViChnAttr; memset(&ViAttr,0,sizeof(VI_PUB_ATTR_S)); memset(&ViChnAttr,0,sizeof(VI_CHN_ATTR_S)); ViAttr.enInputMode = VI_MODE_BT656; ViAttr.enWorkMode = VI_WORK_MODE_2D1; ViAttr.u32AdType = AD_2815; ViAttr.enViNorm = VIDEO_ENCODING_MODE_PAL; ViChnAttr.stCapRect.u32Width = 704; ViChnAttr.stCapRect.u32Height = 288; ViChnAttr.stCapRect.s32X = 8; ViChnAttr.stCapRect.s32Y = 0; ViChnAttr.enCapSel = VI_CAPSEL_BOTTOM; ViChnAttr.bDownScale = HI_TRUE; ViChnAttr.bChromaResample = HI_FALSE; ViChnAttr.enViPixFormat = PCIV_TEST_VI_PIXEL_FORMAT; /* VI device may be enabled, so we don't care the result */ HI_MPI_VI_SetPubAttr(viDev, &ViAttr); HI_MPI_VI_Enable(viDev); s32Ret = HI_MPI_VI_SetChnAttr(viDev, viChn, &ViChnAttr); HI_ASSERT(HI_SUCCESS == s32Ret); s32Ret = HI_MPI_VI_EnableChn(viDev, viChn); HI_ASSERT(HI_SUCCESS == s32Ret); return 0; }
HI_S32 SampleInitViMScreen(HI_U32 ScreenCnt) { HI_U32 i,j,tmp; ScreenCnt = (ScreenCnt == 9 ? 8 : ScreenCnt); VI_PUB_ATTR_S ViAttr; VI_CHN_ATTR_S ViChnAttr[ScreenCnt]; memset(&ViAttr, 0, sizeof(VI_PUB_ATTR_S)); memset(ViChnAttr, 0, ScreenCnt * sizeof(VI_CHN_ATTR_S)); ViAttr.enInputMode = VI_MODE_BT656; ViAttr.enWorkMode = VI_WORK_MODE_2D1; switch (ScreenCnt) { case 1 : { ViChnAttr[0].bDownScale = HI_FALSE; ViChnAttr[0].bHighPri = 0; ViChnAttr[0].enCapSel = VI_CAPSEL_BOTH; ViChnAttr[0].enViPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; ViChnAttr[0].stCapRect.s32X = 0; ViChnAttr[0].stCapRect.s32Y = 0; ViChnAttr[0].stCapRect.u32Width = g_u32ScreenWidth; ViChnAttr[0].stCapRect.u32Height = g_u32ScreenHeight/2; break; } case 4 : /* fall through */ case 8 : { for (i = 0; i < ScreenCnt; i++) { ViChnAttr[i].bDownScale = HI_TRUE; ViChnAttr[i].bHighPri = 0; ViChnAttr[i].enCapSel = VI_CAPSEL_BOTTOM; ViChnAttr[i].enViPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; ViChnAttr[i].stCapRect.s32X = 0; ViChnAttr[i].stCapRect.s32Y = 0; ViChnAttr[i].stCapRect.u32Width = g_u32ScreenWidth; ViChnAttr[i].stCapRect.u32Height = g_u32ScreenHeight/2; } break; } default: printf("Unsupport screen num %d!\n", ScreenCnt); return HI_FAILURE; } if (1 == ScreenCnt) { tmp = 1; }else { tmp = ScreenCnt/2; } for (i = 0; i < tmp; i++) { if (HI_SUCCESS != HI_MPI_VI_SetPubAttr(i, &ViAttr)) { return HI_FAILURE; } if (HI_SUCCESS != HI_MPI_VI_Enable(i)) { return HI_FAILURE; } for(j = 0; j < 2; j++) { if (HI_SUCCESS != HI_MPI_VI_SetChnAttr(i,j,&ViChnAttr[i*2+j])) { return HI_FAILURE; } if (HI_SUCCESS != HI_MPI_VI_EnableChn(i,j)) { return HI_FAILURE; } } } return HI_SUCCESS; }
static void video_InputInit() { int i = 0; // init sdk { VI_PUB_ATTR_S stViDevAttr; VI_CHN_ATTR_S stViChnAttr; // vi0 1-16 ch cif input 1d1 // vi1 1-16 ch selecting input 1d1 // vi2 17-20 ch d1 input 4d1 // vi3 21-24 ch d1 input 4d1 //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// // vi0 stViDevAttr.enInputMode = VI_MODE_BT656; stViDevAttr.enWorkMode = VI_WORK_MODE_1D1; stViDevAttr.enViNorm = (VIDEO_IS_PAL() ? VIDEO_ENCODING_MODE_PAL : VIDEO_ENCODING_MODE_NTSC); // channel attribute stViChnAttr.stCapRect.s32X = 0; stViChnAttr.stCapRect.s32Y = 0; stViChnAttr.stCapRect.u32Width = VI_CIF_WIDTH; stViChnAttr.stCapRect.u32Height = 8 * VI_CIF_HEIGHT + 7 * 2; // half field height combo frame stViChnAttr.bChromaResample = HI_FALSE; stViChnAttr.enCapSel = VI_CAPSEL_BOTH; stViChnAttr.bDownScale = HI_FALSE; stViChnAttr.bHighPri = HI_FALSE; stViChnAttr.enViPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; DVR_ASSERT(HI_MPI_VI_Disable(0)); DVR_ASSERT(HI_MPI_VI_SetPubAttr(0, &stViDevAttr)); DVR_ASSERT(HI_MPI_VI_Enable(0)); DVR_ASSERT(HI_MPI_VI_SetChnAttr(0, 0, &stViChnAttr)); DVR_ASSERT(HI_MPI_VI_EnableChn(0, 0)); DVR_ASSERT(HI_MPI_VI_SetSrcFrameRate(0, 0, MAX_CIF_LIVE_FPS)); //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// // vi1 stViDevAttr.enInputMode = VI_MODE_BT656; stViDevAttr.enWorkMode = VI_WORK_MODE_1D1; stViDevAttr.enViNorm = (VIDEO_IS_PAL() ? VIDEO_ENCODING_MODE_PAL : VIDEO_ENCODING_MODE_NTSC); // channel attribute stViChnAttr.stCapRect.u32Width = 704; stViChnAttr.stCapRect.u32Height = VI_CIF_HEIGHT; stViChnAttr.stCapRect.s32X = 8; stViChnAttr.stCapRect.s32Y = 0; stViChnAttr.bChromaResample = HI_FALSE; stViChnAttr.enCapSel = VI_CAPSEL_BOTH; stViChnAttr.bDownScale = HI_FALSE; stViChnAttr.bHighPri = HI_FALSE; stViChnAttr.enViPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; // interface DVR_ASSERT(HI_MPI_VI_Disable(1)); DVR_ASSERT(HI_MPI_VI_SetPubAttr(1, &stViDevAttr)); DVR_ASSERT(HI_MPI_VI_Enable(1)); DVR_ASSERT(HI_MPI_VI_SetChnAttr(1, 0, &stViChnAttr)); DVR_ASSERT(HI_MPI_VI_EnableChn(1, 0)); DVR_ASSERT(HI_MPI_VI_SetSrcFrameRate(1, 0, MAX_D1_LIVE_FPS)); //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// // vi2 stViDevAttr.enInputMode = VI_MODE_BT656; stViDevAttr.enWorkMode = VI_WORK_MODE_4D1; stViDevAttr.enViNorm = (VIDEO_IS_PAL() ? VIDEO_ENCODING_MODE_PAL : VIDEO_ENCODING_MODE_NTSC); // cif input stViChnAttr.stCapRect.u32Width = 704; stViChnAttr.stCapRect.u32Height = VI_CIF_HEIGHT; stViChnAttr.stCapRect.s32X = 8; stViChnAttr.stCapRect.s32Y = 0; stViChnAttr.bChromaResample = HI_FALSE; stViChnAttr.enCapSel = VI_CAPSEL_BOTTOM; stViChnAttr.bDownScale = HI_TRUE; stViChnAttr.bHighPri = HI_FALSE; stViChnAttr.enViPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; // interface DVR_ASSERT(HI_MPI_VI_Disable(2)); DVR_ASSERT(HI_MPI_VI_SetPubAttr(2, &stViDevAttr)); DVR_ASSERT(HI_MPI_VI_Enable(2)); for(i = 0; i < 4; ++i){ DVR_ASSERT(HI_MPI_VI_SetChnAttr(2, i, &stViChnAttr)); DVR_ASSERT(HI_MPI_VI_EnableChn(2, i)); DVR_ASSERT(HI_MPI_VI_SetSrcFrameRate(2, i, MAX_CIF_LIVE_FPS)); } //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// // vi3 stViDevAttr.enInputMode = VI_MODE_BT656; stViDevAttr.enWorkMode = VI_WORK_MODE_4D1; stViDevAttr.enViNorm = (VIDEO_IS_PAL() ? VIDEO_ENCODING_MODE_PAL : VIDEO_ENCODING_MODE_NTSC); // cif input stViChnAttr.stCapRect.u32Width = 704; stViChnAttr.stCapRect.u32Height = VI_CIF_HEIGHT; stViChnAttr.stCapRect.s32X = 8; stViChnAttr.stCapRect.s32Y = 0; stViChnAttr.bChromaResample = HI_FALSE; stViChnAttr.enCapSel = VI_CAPSEL_BOTTOM; stViChnAttr.bDownScale = HI_TRUE; stViChnAttr.bHighPri = HI_FALSE; stViChnAttr.enViPixFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420; // interface DVR_ASSERT(HI_MPI_VI_Disable(3)); DVR_ASSERT(HI_MPI_VI_SetPubAttr(3, &stViDevAttr)); DVR_ASSERT(HI_MPI_VI_Enable(3)); for(i = 0; i < 4; ++i){ DVR_ASSERT(HI_MPI_VI_SetChnAttr(3, i, &stViChnAttr)); DVR_ASSERT(HI_MPI_VI_EnableChn(3, i)); DVR_ASSERT(HI_MPI_VI_SetSrcFrameRate(3, i, MAX_CIF_LIVE_FPS)); } } }