Hello!
I capture 1920*1080 resolution video on VIP0 and VIP1 port of DM8168 with DVR-RDK3.5. The YUV data from FPGA -> VIP -> encoder -> send encoded stream . But I get the following unhandled exeption:
[m3vpss ] Unhandled Exception:
[m3vpss ] Exception occurred in ThreadType_Task
[m3vpss ] handle: 0x9dbf430c.
[m3vpss ] stack base: 0x3ed788c0.
[m3vpss ] stack size: 0x4000.
[m3vpss ] R0 = 0x9dbf775c R8 = 0x9da2af68
[m3vpss ] R1 = 0x9dbf775c R9 = 0xffffffff
[m3vpss ] R2 = 0x00000000 R10 = 0x00000010
[m3vpss ] R3 = 0x0000160f R11 = 0x9da2af60
[m3vpss ] R4 = 0x9dbf76e8 R12 = 0x3ed48380
[m3vpss ] R5 = 0xc9c8f480 SP(R13) = 0x3ed7c840
[m3vpss ] R6 = 0x00000000 LR(R14) = 0x9da0996f
[m3vpss ] R7 = 0xcbf79e2b PC(R15) = 0x9d9e0232
[m3vpss ] PSR = 0x81000000
[m3vpss ] ICSR = 0x00400803
[m3vpss ] MMFSR = 0x00
[m3vpss ] BFSR = 0x82
[m3vpss ] UFSR = 0x0000
[m3vpss ] HFSR = 0x40000000
[m3vpss ] DFSR = 0x00000000
[m3vpss ] MMAR = 0xc9c8f498
[m3vpss ] BFAR = 0xc9c8f498
[m3vpss ] AFSR = 0x00000000
[m3vpss ] Terminating Execution...
There is my codes!
int SixeChan_CreateWriteBitStream(MultiHDEncoder_ENVParams *envp) { int ret=0; CaptureLink_CreateParams capturePrm; CaptureLink_CreateParams *pCapturePrm; CaptureLink_VipInstParams *pCaptureInstPrm; CaptureLink_OutParams *pCaptureOutPrm; IpcLink_CreateParams IpcOutVpssPrm; IpcLink_CreateParams *pIpcOutVpssPrm; IpcLink_CreateParams IpcInVideoPrm; IpcLink_CreateParams *pIpcInVideoPrm; EncLink_CreateParams EncPrm; EncLink_CreateParams *pEncPrm; IpcBitsOutLinkRTOS_CreateParams IpcBitsOutVideoPrm; IpcBitsOutLinkRTOS_CreateParams *pIpcBitsOutVideoPrm; IpcBitsInLinkHLOS_CreateParams IpcBitsInHostPrm; IpcBitsInLinkHLOS_CreateParams *pIpcBitsInHostPrm; DupLink_CreateParams dupPrmInput1; DupLink_CreateParams dupPrmInput2; MergeLink_CreateParams MergePrm; Uint32 captureId; Uint32 ipcOutVpssId; Uint32 ipcInVideoId; Uint32 encId; Uint32 dupInput1Id,dupInput2Id; Uint32 mergeId; Uint32 selectId1; Uint32 selectId2; Uint32 ipcBitsOutVideoId; Uint32 ipcBitsInHostId; Int32 status = 0; char c; int i=0; printf("SixChan_CaptureWriteBitStreamFile()!\n"); GPIOInit(); ret = AD7441Init(); ret = SelectAD7441(); ret = AD7442Init(); ret = SelectAD7442(); if(ret){ printf("Decoder Init Failed!\n"); GPIODeInit(); return 0; } Vpss_reset(); video_setIvahdMap(&systemVid_encDecIvaChMapTbl); CaptureLink_CreateParams_Init(&capturePrm); DupLink_CreateParams_Init(&dupPrmInput1); DupLink_CreateParams_Init(&dupPrmInput2); MergeLink_CreateParams_Init(&MergePrm); IpcLink_CreateParams_Init(&IpcOutVpssPrm); IpcLink_CreateParams_Init(&IpcInVideoPrm); EncLink_CreateParams_Init(&EncPrm); IpcBitsOutLinkRTOS_CreateParams_Init(&IpcBitsOutVideoPrm); IpcBitsInLinkHLOS_CreateParams_Init(&IpcBitsInHostPrm); captureId = SYSTEM_LINK_ID_CAPTURE; ipcOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0; ipcInVideoId = SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0; encId = SYSTEM_LINK_ID_VENC_0; ipcBitsOutVideoId = SYSTEM_VIDEO_LINK_ID_IPC_BITS_OUT_0; ipcBitsInHostId = SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0; dupInput1Id = SYSTEM_VPSS_LINK_ID_DUP_0;//SYSTEM_LINK_ID_DUP_0; dupInput2Id = SYSTEM_VPSS_LINK_ID_DUP_1;//SYSTEM_LINK_ID_DUP_1; mergeId = SYSTEM_VPSS_LINK_ID_MERGE_0;//SYSTEM_LINK_ID_MERGE_0; selectId1 = SYSTEM_VPSS_LINK_ID_SELECT_0; selectId2 = SYSTEM_VPSS_LINK_ID_SELECT_1; ///////////////////////////////////////////////////////////////////// //capture start pCapturePrm = &capturePrm; pCapturePrm->numVipInst = 2; pCapturePrm->tilerEnable = FALSE; pCapturePrm->fakeHdMode = TRUE; pCapturePrm->enableSdCrop = FALSE; pCapturePrm->doCropInCapture = FALSE; //input1 pCaptureInstPrm = &(pCapturePrm->vipInst[0]); pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA; pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P; pCaptureInstPrm->standard = SYSTEM_STD_1080P_60; pCaptureInstPrm->numOutput = 1; pCaptureOutPrm = &pCaptureInstPrm->outParams[0]; pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV; pCaptureOutPrm->scEnable = FALSE; pCaptureOutPrm->scOutWidth = 1920; pCaptureOutPrm->scOutHeight = 1080; pCaptureOutPrm->outQueId = 0; pCapturePrm->outQueParams[0].nextLink = dupInput1Id; //input2 pCaptureInstPrm = &(pCapturePrm->vipInst[1]); pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP1_PORTA; pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P; pCaptureInstPrm->standard = SYSTEM_STD_1080P_60; pCaptureInstPrm->numOutput = 1; pCaptureOutPrm = &pCaptureInstPrm->outParams[0]; pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV; pCaptureOutPrm->scEnable = FALSE; pCaptureOutPrm->scOutWidth = 1920; pCaptureOutPrm->scOutHeight = 1080; pCaptureOutPrm->outQueId = 1; pCapturePrm->outQueParams[1].nextLink = dupInput2Id; //capture end ////////////////////////////////////////////////////////////////////// //dup dupPrmInput1.inQueParams.prevLinkId = captureId; dupPrmInput1.inQueParams.prevLinkQueId = 0; dupPrmInput1.numOutQue = 3; dupPrmInput1.notifyNextLink = TRUE; dupPrmInput1.CrossMode = 1; dupPrmInput2.inQueParams.prevLinkId = captureId; dupPrmInput2.inQueParams.prevLinkQueId = 1; dupPrmInput2.numOutQue = 3; dupPrmInput2.notifyNextLink = TRUE; dupPrmInput2.CrossMode = 1; dupPrmInput1.outQueParams[0].nextLink = mergeId; dupPrmInput1.outQueParams[1].nextLink = mergeId; dupPrmInput1.outQueParams[2].nextLink = mergeId; dupPrmInput2.outQueParams[0].nextLink = mergeId; dupPrmInput2.outQueParams[1].nextLink = mergeId; dupPrmInput2.outQueParams[2].nextLink = mergeId; MergePrm.numInQue = 6; MergePrm.inQueParams[0].prevLinkId = dupInput1Id; MergePrm.inQueParams[0].prevLinkQueId = 0; MergePrm.inQueParams[1].prevLinkId = dupInput1Id; MergePrm.inQueParams[1].prevLinkQueId = 1; MergePrm.inQueParams[2].prevLinkId = dupInput1Id; MergePrm.inQueParams[2].prevLinkQueId = 2; MergePrm.inQueParams[3].prevLinkId = dupInput2Id; MergePrm.inQueParams[3].prevLinkQueId = 0; MergePrm.inQueParams[4].prevLinkId = dupInput2Id; MergePrm.inQueParams[4].prevLinkQueId = 1; MergePrm.inQueParams[5].prevLinkId = dupInput2Id; MergePrm.inQueParams[5].prevLinkQueId = 2; MergePrm.outQueParams.nextLink = ipcOutVpssId; MergePrm.notifyNextLink = TRUE; ///////////////////////////////////////////////////////////////////// pIpcOutVpssPrm = &(IpcOutVpssPrm); pIpcOutVpssPrm->inQueParams.prevLinkId = mergeId; pIpcOutVpssPrm->inQueParams.prevLinkQueId = 0; pIpcOutVpssPrm->numOutQue = 1; pIpcOutVpssPrm->outQueParams[0].nextLink = ipcInVideoId; pIpcOutVpssPrm->notifyNextLink = TRUE; pIpcOutVpssPrm->notifyPrevLink = TRUE; pIpcOutVpssPrm->noNotifyMode = FALSE; pIpcInVideoPrm = &(IpcInVideoPrm); pIpcInVideoPrm->inQueParams.prevLinkId = ipcOutVpssId; pIpcInVideoPrm->inQueParams.prevLinkQueId = 0; pIpcInVideoPrm->numOutQue = 1; pIpcInVideoPrm->outQueParams[0].nextLink = encId; pIpcInVideoPrm->notifyNextLink = TRUE; pIpcInVideoPrm->notifyPrevLink = TRUE; pIpcInVideoPrm->noNotifyMode = FALSE; pEncPrm = &(EncPrm); { for(i=0;i<ENCODER_CHAN_NUMS;i++){ pEncPrm->chCreateParams[i].format = IVIDEO_H264HP; pEncPrm->chCreateParams[i].profile = IH264_HIGH_PROFILE; pEncPrm->chCreateParams[i].dataLayout = IVIDEO_FIELD_SEPARATED; pEncPrm->chCreateParams[i].fieldMergeEncodeEnable = FALSE; //pEncPrm->chCreateParams[i].defaultDynamicParams.intraFrameInterval = 30; pEncPrm->chCreateParams[i].encodingPreset = encodingPreset;//ÿ������IDR//note by zhq // XDM_DEFAULT;//I֡����0x21��ͷ����Ҫ���SPS��PPS/////// pEncPrm->chCreateParams[i].enableAnalyticinfo = 0; pEncPrm->chCreateParams[i].rateControlPreset = IVIDEO_STORAGE; pEncPrm->chCreateParams[i].maxBitRate = -1; pEncPrm->chCreateParams[i].enableHighSpeed=0; pEncPrm->chCreateParams[i].enableWaterMarking=0; pEncPrm->chCreateParams[i].defaultDynamicParams.inputFrameRate = 60;//video_param.nFrameRate; pEncPrm->chCreateParams[i].defaultDynamicParams.targetBitRate = 10*1000*1000;//20000 * 1000; //video_param.sBitrate*1000; pEncPrm->chCreateParams[i].defaultDynamicParams.interFrameInterval = 1; pEncPrm->chCreateParams[i].defaultDynamicParams.mvAccuracy = IVIDENC2_MOTIONVECTOR_QUARTERPEL; pEncPrm->chCreateParams[i].defaultDynamicParams.qpInit = -1; pEncPrm->chCreateParams[i].defaultDynamicParams.qpMin = 10; pEncPrm->chCreateParams[i].defaultDynamicParams.qpMax = 40; pEncPrm->chCreateParams[i].defaultDynamicParams.vbrDuration = 8; pEncPrm->chCreateParams[i].defaultDynamicParams.vbrSensitivity = 0; pEncPrm->chCreateParams[i].defaultDynamicParams.rcAlg = 0; } } pEncPrm->inQueParams.prevLinkId = ipcInVideoId; pEncPrm->inQueParams.prevLinkQueId = 0; pEncPrm->outQueParams.nextLink = ipcBitsOutVideoId; pIpcBitsOutVideoPrm = &(IpcBitsOutVideoPrm); pIpcBitsOutVideoPrm->baseCreateParams.inQueParams.prevLinkId = encId; pIpcBitsOutVideoPrm->baseCreateParams.inQueParams.prevLinkQueId = 0; pIpcBitsOutVideoPrm->baseCreateParams.numOutQue = 1; pIpcBitsOutVideoPrm->baseCreateParams.outQueParams[0].nextLink = ipcBitsInHostId; pIpcBitsOutVideoPrm->baseCreateParams.noNotifyMode = TRUE; pIpcBitsOutVideoPrm->baseCreateParams.notifyNextLink = FALSE; pIpcBitsOutVideoPrm->baseCreateParams.notifyPrevLink = TRUE; pIpcBitsInHostPrm = &(IpcBitsInHostPrm); pIpcBitsInHostPrm->baseCreateParams.inQueParams.prevLinkId = ipcBitsOutVideoId; pIpcBitsInHostPrm->baseCreateParams.inQueParams.prevLinkQueId = 0; pIpcBitsInHostPrm->baseCreateParams.outQueParams[0].nextLink = SYSTEM_LINK_ID_INVALID; pIpcBitsInHostPrm->baseCreateParams.noNotifyMode = TRUE; pIpcBitsInHostPrm->cbFxn = NULL;//WriteBitsFileTsk; pIpcBitsInHostPrm->cbCtx = NULL;//&numsBits; pIpcBitsInHostPrm->baseCreateParams.notifyNextLink = FALSE; pIpcBitsInHostPrm->baseCreateParams.notifyPrevLink = FALSE; //note by zhq//12.2//System_linkCreate���ڴ���link System_linkCreate(captureId, &capturePrm, sizeof(CaptureLink_CreateParams)); System_linkCreate(dupInput1Id, &dupPrmInput1, sizeof(DupLink_CreateParams)); System_linkCreate(dupInput2Id, &dupPrmInput2, sizeof(DupLink_CreateParams)); System_linkCreate(mergeId, &MergePrm, sizeof(MergeLink_CreateParams)); System_linkCreate(ipcOutVpssId, &IpcOutVpssPrm, sizeof(IpcLink_CreateParams)); System_linkCreate(ipcInVideoId, &IpcInVideoPrm, sizeof(IpcLink_CreateParams)); System_linkCreate(encId, &EncPrm, sizeof(EncLink_CreateParams)); System_linkCreate(ipcBitsOutVideoId, &IpcBitsOutVideoPrm, sizeof(IpcBitsOutLinkRTOS_CreateParams)); System_linkCreate(ipcBitsInHostId, &IpcBitsInHostPrm, sizeof(IpcBitsInLinkHLOS_CreateParams)); //note by zhq//12.2//System_linkStart���ڴ�link System_linkStart(ipcBitsInHostId); System_linkStart(ipcBitsOutVideoId); System_linkStart(encId); System_linkStart(ipcInVideoId); System_linkStart(ipcOutVpssId); System_linkStart(mergeId); System_linkStart(dupInput2Id); System_linkStart(dupInput1Id); System_linkStart(captureId); gWriteFileDone = 1; status = OSA_thrCreate(&BitsOutHandle, (OSA_ThrEntryFunc)BitsOutTskRtsp, 99, 0, envp); //note by zhq//12.2//SetEncoderFrameRate��������֡�ʺͱ����ʣ�60�൱��20֡ SetEncoderFrameRate(0, 60); SetEncoderFrameRate(1, 60); SetEncoderFrameRate(2, 60); SetEncoderFrameRate(3, 60); SetEncoderFrameRate(4, 60); SetEncoderFrameRate(5, 60); sleep(2); return ret; }