1 系统编译
① Linux端(A8)编译命令:
make –s dvr_rdk_linux
在文件夹
DVRRDK_04.01.00.02/dvr_rdk/bin/ti816x/bin/
生成
dvr_rdk_demo_mcfw_api.out
linux可执行程序,需要将该应用程序移动到下列目录并覆盖:
DVRRDK_04.01.00.02/target/rfs_816x/home/root/ti816x/
② Bios6端(DSP)编译命令:
make –s dvr_rdk_bios6
在文件夹
DVRRDK_04.01.00.02/dvr_rdk/bin/ti816x/firmware/
生成
dvr_rdk_fw_c6xdsp_1024M_256M.xe674
dvr_rdk_fw_m3video_1024M_256M.xem3
dvr_rdk_fw_m3vpss_1024M_256M.xem3
将这三个文件移动到下列文件夹并覆盖:
DVRRDK_04.01.00.02/target/rfs_816x/home/root/ti816x/firmware/
2 运行程序
① 加载驱动
./init.sh : 加载程序运行需要的linux内核模块./init.sh will load the kernel modules (.ko) needed for the SDK demo
② 加载M3固件
./load.sh : 加载Video-M3和VPSS-M3的固件./load.sh will load the executable on the Video-M3 and VPSS-M3 processor and wait until these processor’s have finished their initialization
③ 运行程序
./run.sh : 运行A8端的linux应用程序./run.sh will run the A8 side application. After running the application you will be presented with a menu of options.
④ 卸载固件
./unload.sh : 卸载Video-M3和VPSS-M3的固件./unload.sh will send a stop command to both processors and wait until they finish their shutdown sequence. Then the executable will be “unloaded”.
3 Sys Link
① 软件框架Link
② Cap–Dis Link demo
- CaptureLink_CreateParams_Init(&capturePrm);
- capturePrm.numVipInst = 1;
- capturePrm.outQueParams[0].nextLink = gVdisModuleContext.displayId[0];
- capturePrm.tilerEnable = FALSE;
- capturePrm.enableSdCrop = FALSE;
- pCaptureInstPrm = &capturePrm.vipInst[0];
- pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA;
- pCaptureInstPrm->videoDecoderId = 0;
- pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
- pCaptureInstPrm->standard = SYSTEM_STD_1080P_60;
- pCaptureInstPrm->numOutput = 1;
- pCaptureInstPrm->inScanFormat = SYSTEM_SF_PROGRESSIVE;
- pCaptureOutPrm = &pCaptureInstPrm->outParams[0];
- pCaptureOutPrm->dataFormat =SYSTEM_DF_YUV422I_YUYV;
- pCaptureOutPrm->scEnable = FALSE;
- pCaptureOutPrm->scOutWidth = 0;
- pCaptureOutPrm->scOutHeight = 0;
- pCaptureOutPrm->outQueId = 0;
- displayPrm.inQueParams[0].prevLinkId = gVcapModuleContext.captureId;
- displayPrm.inQueParams[0].prevLinkQueId = 0;
- displayPrm.displayRes = VSYS_STD_1080P_60;
③ Cap–OSD–Dis Link (DSP核处理图像)
- CaptureLink_CreateParams_Init(&capturePrm);
- capturePrm.numVipInst = 1;
- capturePrm.outQueParams[0].nextLink = ipcFramesOutVpssId;
- capturePrm.tilerEnable = FALSE;
- capturePrm.enableSdCrop = FALSE;
- pCaptureInstPrm = &capturePrm.vipInst[0];
- pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA;
- pCaptureInstPrm->videoDecoderId = 0;
- pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
- pCaptureInstPrm->standard = SYSTEM_STD_1080P_60;
- pCaptureInstPrm->numOutput = 1;
- pCaptureInstPrm->inScanFormat= SYSTEM_SF_PROGRESSIVE;
- pCaptureOutPrm = &pCaptureInstPrm->outParams[0];
- pCaptureOutPrm->dataFormat =SYSTEM_DF_YUV422I_YUYV;
- pCaptureOutPrm->scEnable = FALSE;
- pCaptureOutPrm->scOutWidth = 0;
- pCaptureOutPrm->scOutHeight = 0;
- pCaptureOutPrm->outQueId = 0;
- IpcFramesOutLinkRTOS_CreateParams_Init(&ipcFramesOutVpssPrm);
- ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = gVcapModuleContext.captureId;
- ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
- ipcFramesOutVpssPrm.baseCreateParams.inputFrameRate = 25;
- ipcFramesOutVpssPrm.baseCreateParams.outputFrameRate = 25;
- ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
- ipcFramesOutVpssPrm.baseCreateParams.equallyDivideChAcrossOutQues = TRUE;
- ipcFramesOutVpssPrm.baseCreateParams.numOutQue =1;
- ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink= gVdisModuleContext.displayId[0];
- ipcFramesOutVpssPrm.baseCreateParams.processLink = ipcFramesInDspId;
- ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = TRUE;
- ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;
- ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;//TRUE;
- IpcFramesInLinkRTOS_CreateParams_Init(&ipcFramesInDspPrm);
- ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId =ipcFramesOutVpssId;
- ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
- ipcFramesInDspPrm.baseCreateParams.numOutQue = 1;
- ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = osdId;
- ipcFramesInDspPrm.baseCreateParams.inputFrameRate = 25;
- ipcFramesInDspPrm.baseCreateParams.outputFrameRate = 25;
- ipcFramesInDspPrm.baseCreateParams.notifyNextLink =TRUE;
- ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
- ipcFramesInDspPrm.baseCreateParams.noNotifyMode = FALSE;
- AlgLink_CreateParams_Init(&osdPrm);
- osdPrm.inQueParams.prevLinkId = ipcFramesInDspId;
- osdPrm.inQueParams.prevLinkQueId = 0;
- osdPrm.enableOSDAlg = TRUE;
- osdPrm.enableSCDAlg = FALSE;
- AlgLink_OsdChWinParams *chWinPrm=&osdPrm.osdChCreateParams[0].chDefaultParams;
- osdPrm.osdChCreateParams[0].maxHeight =64;
- osdPrm.osdChCreateParams[0].maxWidth =320;
- chWinPrm->chId =0 ;
- chWinPrm->numWindows =1;
- chWinPrm->colorKey[0] = 0xfa; /* Y */
- chWinPrm->colorKey[1] = 0x7e; /* U */
- chWinPrm->colorKey[2] = 0x7d; /* V */
- chWinPrm->winPrm[0].startX = CHAINS_OSD_WIN0_STARTX; chWinPrm->winPrm[0].startY = CHAINS_OSD_WIN0_STARTY;
- chWinPrm->winPrm[0].format = SYSTEM_DF_YUV422I_YUYV;
- chWinPrm->winPrm[0].width = CHAINS_OSD_WIN_WIDTH;
- chWinPrm->winPrm[0].height = CHAINS_OSD_WIN_HEIGHT;
- chWinPrm->winPrm[0].lineOffset = CHAINS_OSD_WIN_PITCH;
- chWinPrm->winPrm[0].globalAlpha= CHAINS_OSD_GLOBAL_ALPHA;
- chWinPrm->winPrm[0].transperencyEnable = CHAINS_OSD_TRANSPARENCY;
- chWinPrm->winPrm[0].enableWin=CHAINS_OSD_ENABLE_WIN;
- displayPrm.inQueParams[0].prevLinkId = ipcFramesOutVpssId;
- displayPrm.inQueParams[0].prevLinkQueId = 0;
- displayPrm.displayRes = VSYS_STD_1080P_60;

浙公网安备 33010602011771号