This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TI816X DVRRDK350 scd?

Hello:

    this is my first time use scd

input is 4 channel:1080p30

my link chain: 

    

2.my link config:

  CaptureLink_CreateParams capturePrm, *pCapPrm = &capturePrm;
	CaptureLink_CreateParams_Init(pCapPrm);
	pCapPrm->numVipInst = 4;
	pCapPrm->enableSdCrop = FALSE;
	pCapPrm->doCropInCapture = FALSE;
	pCapPrm->tilerEnable = tilerEnable;
	pCapPrm->outQueParams[0].nextLink = osd_display_linkId_core.linkId_dup0;
	for(num=0; num<pCapPrm->numVipInst; num++)
	{
		pCapPrm->vipInst[num].vipInstId = VIP_IDs[num];
		pCapPrm->vipInst[num].inDataFormat = SYSTEM_DF_YUV422P;
		if(num==3)
		{
			pCapPrm->vipInst[num].standard = SYSTEM_STD_1080P_30;
		}
		else
		{
			pCapPrm->vipInst[num].standard = SYSTEM_STD_1080P_30;
		}
		pCapPrm->vipInst[num].numOutput = 1;
		pCapPrm->vipInst[num].outParams[0].outQueId = 0;
		pCapPrm->vipInst[num].outParams[0].dataFormat = SYSTEM_DF_YUV420SP_UV;
		pCapPrm->vipInst[num].outParams[0].scEnable = FALSE;

	}
	ret = System_linkCreate(osd_display_linkId_core.linkId_capture, pCapPrm,sizeof(*pCapPrm));
	OSA_assert(ERROR_NONE==ret);
	sysDBG("Create Link capture Success.");
	__register_created_LnkId(osd_display_linkId_core.linkId_capture);


	/*======BEGIN DUP Link======*/
	DupLink_CreateParams dupPrm, *pDupPrm = &dupPrm;
	pDupPrm->inQueParams.prevLinkId = osd_display_linkId_core.linkId_capture;
	pDupPrm->inQueParams.prevLinkQueId = 0;
	pDupPrm->notifyNextLink = TRUE;
	pDupPrm->numOutQue = 2;
	pDupPrm->outQueParams[0].nextLink = osd_display_linkId_core.linkId_merge0;
	pDupPrm->outQueParams[1].nextLink = osd_display_linkId_core.linkId_sclr0;
	ret = System_linkCreate(osd_display_linkId_core.linkId_dup0,pDupPrm,sizeof(*pDupPrm));
	OSA_assert(ERROR_NONE==ret);
	sysDBG("Create Link dup0 Success.");
	__register_created_LnkId(osd_display_linkId_core.linkId_dup0);

	/******link sclr0****************/
    SclrLink_CreateParams SclrPrm,*pSclrPrm = &SclrPrm;
    SclrLink_CreateParams_Init(pSclrPrm);
    pSclrPrm->inQueParams.prevLinkId      = osd_display_linkId_core.linkId_dup0;
    pSclrPrm->inQueParams.prevLinkQueId	  = 1;
    pSclrPrm->pathId = SCLR_LINK_SC5;
    pSclrPrm->tilerEnable                        = FALSE;
    pSclrPrm->enableLineSkipSc                   = FALSE;//FALSE;
    pSclrPrm->inputFrameRate = 60;
    pSclrPrm->outputFrameRate = 30;
    pSclrPrm->outDataFormat = SYSTEM_DF_YUV422I_YUYV;
    pSclrPrm->scaleMode                          = SCLR_SCALE_MODE_ABSOLUTE;
    pSclrPrm->outScaleFactor.absoluteResolution.outHeight    = 288;
    pSclrPrm->outScaleFactor.absoluteResolution.outWidth	  = 352;
    pSclrPrm->outQueParams.nextLink       = osd_display_linkId_core.linkId_nsf0;
    System_linkCreate(osd_display_linkId_core.linkId_sclr0, pSclrPrm, sizeof(*pSclrPrm));
	OSA_assert(ERROR_NONE==ret);
	sysDBG("Create Link sclr0 Success.");
	__register_created_LnkId(osd_display_linkId_core.linkId_sclr0);


	/***********link nsf0*****************/
	NsfLink_CreateParams nsfPrm,*pNsfPrm = &nsfPrm;
	NsfLink_CreateParams_Init(pNsfPrm);
	pNsfPrm->inQueParams.prevLinkId = osd_display_linkId_core.linkId_sclr0;
	pNsfPrm->inQueParams.prevLinkQueId = 0;
	pNsfPrm->bypassNsf = TRUE;
	pNsfPrm->numOutQue = 1;
	pNsfPrm->tilerEnable = tilerEnable;
	pNsfPrm->outQueParams[0].nextLink = osd_display_linkId_core.linkId_ipcframeOutVpss0;
	ret = System_linkCreate(osd_display_linkId_core.linkId_nsf0,pNsfPrm,sizeof(*pNsfPrm));
	OSA_assert(ERROR_NONE==ret);
	sysDBG("Create Link linkId_nsf0 Success.");
	__register_created_LnkId(osd_display_linkId_core.linkId_nsf0);
	/*======END NSF Link======*/

	/*******link ipcframeOutVpss0*****************/
	IpcFramesOutLinkRTOS_CreateParams ipcoutm3vpss_createprm,*ipcoutm3vpss_arg=&ipcoutm3vpss_createprm;
	IpcFramesOutLinkRTOS_CreateParams_Init(ipcoutm3vpss_arg);

	ipcoutm3vpss_arg->baseCreateParams.inQueParams.prevLinkId=osd_display_linkId_core.linkId_nsf0;
	ipcoutm3vpss_arg->baseCreateParams.inQueParams.prevLinkQueId=0;
	ipcoutm3vpss_arg->baseCreateParams.notifyPrevLink=FALSE;

	ipcoutm3vpss_arg->baseCreateParams.numOutQue=1;
	ipcoutm3vpss_arg->baseCreateParams.outQueParams[0].nextLink=osd_display_linkId_core.linkId_ipcframeInDsp0;
	ipcoutm3vpss_arg->baseCreateParams.notifyNextLink=FALSE;
	ipcoutm3vpss_arg->baseCreateParams.noNotifyMode=FALSE;

	ret=System_linkCreate(osd_display_linkId_core.linkId_ipcframeOutVpss0,ipcoutm3vpss_arg,sizeof(ipcoutm3vpss_createprm));
	OSA_assert(ERROR_NONE==ret);
	sysDBG("Create Link ipcframeoutVpss0 Success.");
	__register_created_LnkId(osd_display_linkId_core.linkId_ipcframeOutVpss0);

	/**====END ipcFramesOutvpss link create=======*/

	/**===BEGIN ipcFramesIn dsp link create=====*/
	IpcFramesInLinkRTOS_CreateParams ipcInDsp_creatprm,*ipcInDsp_arg=&ipcInDsp_creatprm;

	IpcFramesInLinkRTOS_CreateParams_Init(ipcInDsp_arg);
	ipcInDsp_arg->baseCreateParams.inQueParams.prevLinkId=osd_display_linkId_core.linkId_ipcframeOutVpss0;
	ipcInDsp_arg->baseCreateParams.inQueParams.prevLinkQueId=0;
	ipcInDsp_arg->baseCreateParams.outQueParams[0].nextLink=osd_display_linkId_core.linkId_dsp_alg;
	ipcInDsp_arg->baseCreateParams.numOutQue=1;

	ipcInDsp_arg->baseCreateParams.notifyProcessLink=FALSE;
	ipcInDsp_arg->baseCreateParams.notifyNextLink=TRUE;
	ipcInDsp_arg->baseCreateParams.notifyPrevLink=TRUE;
	ipcInDsp_arg->baseCreateParams.noNotifyMode=FALSE;

	ret=System_linkCreate(osd_display_linkId_core.linkId_ipcframeInDsp0,ipcInDsp_arg,sizeof(ipcInDsp_creatprm));
	OSA_assert(ERROR_NONE==ret);

	sysDBG("Create Link ipcFramesInDsp0 Success.");
	__register_created_LnkId(osd_display_linkId_core.linkId_ipcframeInDsp0);

	/**===END ipcFramesIn dsp link create=====*/
#if 1
	/**== BEGIN link ALG_DSP0 create =====*/
	AlgLink_CreateParams algLink_createprm,*algLink_create_arg=&algLink_createprm;

	AlgLink_CreateParams_Init(algLink_create_arg);
	algLink_create_arg->inQueParams.prevLinkId=osd_display_linkId_core.linkId_ipcframeInDsp0;
	algLink_create_arg->inQueParams.prevLinkQueId=0;
	algLink_create_arg->enableSCDAlg	= 	TRUE;
	algLink_create_arg->outQueParams[ALG_LINK_SCD_OUT_QUE].nextLink=osd_display_linkId_core.linkId_ipcbitsOutDsp;

	algLink_create_arg->scdCreateParams.numBufPerCh			= 3;
	algLink_create_arg->scdCreateParams.maxWidth			= 352;
	algLink_create_arg->scdCreateParams.maxHeight			= 288;
	algLink_create_arg->scdCreateParams.maxStride			= 352;
	algLink_create_arg->scdCreateParams.numValidChForSCD	= 4;		//scd max support channel is 16
	algLink_create_arg->scdCreateParams.numSecs2WaitB4Init	= 3;
	algLink_create_arg->scdCreateParams.numSecs2WaitB4FrmAlert=1;
	algLink_create_arg->scdCreateParams.inputFrameRate		  = 30;
	algLink_create_arg->scdCreateParams.outputFrameRate			= 2;
	algLink_create_arg->scdCreateParams.numSecs2WaitAfterFrmAlert=2;
	algLink_create_arg->scdCreateParams.numSecs2Wait2MarkStableFrame=5;
	algLink_create_arg->scdCreateParams.enableMotionNotify=FALSE;
	algLink_create_arg->scdCreateParams.enableTamperNotify=FALSE;
	{
		Int32    numBlksInFrame;
		Int32    numHorzBlks, numVertBlks, chIdx;
		Uint32  x, y, i;
		numHorzBlks     = algLink_create_arg->scdCreateParams.maxWidth / 32;
		numVertBlks    = algLink_create_arg->scdCreateParams.maxHeight / 12;
		numBlksInFrame  = numHorzBlks * numVertBlks;
		for(chIdx = 0; chIdx < algLink_create_arg->scdCreateParams.numValidChForSCD; chIdx++)
		{
		   AlgLink_ScdChParams * chPrm = &algLink_create_arg->scdCreateParams.chDefaultParams[chIdx];

		   chPrm->blkNumBlksInFrame  = numBlksInFrame;
		   chPrm->chId               = chIdx;
		   chPrm->mode               = ALG_LINK_SCD_DETECTMODE_MONITOR_BLOCKS_AND_FRAME;
		   chPrm->frmIgnoreLightsON  = FALSE;
		   chPrm->frmIgnoreLightsOFF = FALSE;
		   chPrm->frmSensitivity     = ALG_LINK_SCD_SENSITIVITY_VERYLOW;//ALG_LINK_SCD_SENSITIVITY_VERYHIGH;
		   chPrm->frmEdgeThreshold   = 100;

		   i = 0;
		   for(y = 0; y < numVertBlks; y++)
		   {
			 for(x = 0; x < numHorzBlks; x++)
			 {
			   chPrm->blkConfig[i].sensitivity = ALG_LINK_SCD_SENSITIVITY_LOW;
			   chPrm->blkConfig[i].monitored     = 0;
			   i++;
			 }
		   }
		}
	}

	ret=System_linkCreate(osd_display_linkId_core.linkId_dsp_alg,algLink_create_arg,sizeof(algLink_createprm));
	OSA_assert(ERROR_NONE==ret);
	sysDBG("Create Link  dsp_alg Success.");
	__register_created_LnkId(osd_display_linkId_core.linkId_dsp_alg);
	/**== END link ALG_DSP0 create =====*/
#endif

#if 1
	/*======BEGIN ipcBitsOutDSP======*/
	IpcBitsOutLinkRTOS_CreateParams ipcBitsOutDsp,*pipcBitsOutDsp = &ipcBitsOutDsp;
	IpcBitsOutLinkRTOS_CreateParams_Init(pipcBitsOutDsp);
	pipcBitsOutDsp->baseCreateParams.inQueParams.prevLinkId = osd_display_linkId_core.linkId_dsp_alg;
	pipcBitsOutDsp->baseCreateParams.inQueParams.prevLinkQueId = 0;
	pipcBitsOutDsp->baseCreateParams.numOutQue = 1;
	pipcBitsOutDsp->baseCreateParams.outQueParams[0].nextLink = osd_display_linkId_core.linkId_ipcbitsInA8_0;
	MultiCh_ipcBitsInitCreateParams_BitsOutRTOS(pipcBitsOutDsp,TRUE);
	ret = System_linkCreate(osd_display_linkId_core.linkId_ipcbitsOutDsp,pipcBitsOutDsp,sizeof(*pipcBitsOutDsp));
	OSA_assert(ERROR_NONE==ret);
	sysDBG("Create Link ipcbitsOutDsp Success.");
	__register_created_LnkId(osd_display_linkId_core.linkId_ipcbitsOutDsp);
	/*======END ipcBitsOutM3Video======*/

	/*======BEGIN ipcBitsInA8======*/
	IpcBitsInLinkHLOS_CreateParams ipcBitsInA8Prm,*pIpcBitsInA8Prm = &ipcBitsInA8Prm;
	IpcBitsInLinkHLOS_CreateParams_Init(pIpcBitsInA8Prm);
	pIpcBitsInA8Prm->baseCreateParams.inQueParams.prevLinkId = osd_display_linkId_core.linkId_ipcbitsOutDsp;
	pIpcBitsInA8Prm->baseCreateParams.inQueParams.prevLinkQueId = 0;
	MultiCh_ipcBitsInitCreateParams_BitsInHLOS(pIpcBitsInA8Prm);
	ret = System_linkCreate(osd_display_linkId_core.linkId_ipcbitsInA8_0,pIpcBitsInA8Prm,sizeof(*pIpcBitsInA8Prm));
	sysDBG("Create Link ipcbitsInA8_0 SUccess.");
	__register_created_LnkId(osd_display_linkId_core.linkId_ipcbitsInA8_0);
	/*======END ipcBitsInA8======*/
#endif
	/**********link swms0****************/
	SwMsLink_CreateParams swMsPrm,*pSwMsPrm = &swMsPrm;
	SwMsLink_CreateParams_Init(pSwMsPrm);

	pSwMsPrm->inQueParams.prevLinkId = osd_display_linkId_core.linkId_dup0;
	pSwMsPrm->inQueParams.prevLinkQueId = 0;
	pSwMsPrm->outQueParams.nextLink = osd_display_linkId_core.linkId_display0;
	pSwMsPrm->numSwMsInst = 1;
	/*
	 * fixme:why set two mosic SYSTEM_SW_MS_SC_INST_DEIHQ_SC_NO_DEI would be error;
	 * 			set SYSTEM_SW_MS_SC_INST_SC5 would lost frame.
	 * */
	pSwMsPrm->swMsInstId[0] = SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI;
	pSwMsPrm->swMsInstStartWin[0] = 0;
	pSwMsPrm->enableProcessTieWithDisplay = FALSE;
	pSwMsPrm->numOutBuf = 6;
	pSwMsPrm->maxInputQueLen = SYSTEM_SW_MS_INVALID_INPUT_QUE_LEN;
//	pSwMsPrm->numOutBuf = 0;//use SWMS default setting
	pSwMsPrm->maxInputQueLen = SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
	pSwMsPrm->maxOutRes = VSYS_STD_1080P_60;

	pSwMsPrm->lineSkipMode = FALSE;
	pSwMsPrm->enableLayoutGridDraw = FALSE;
	pSwMsPrm->enableOuputDup = FALSE;
	pSwMsPrm->outDataFormat = SYSTEM_DF_YUV422I_YUYV;
	pSwMsPrm->outputBufModified = TRUE;


	pSwMsPrm->layoutPrm.onlyCh2WinMapChanged = FALSE;
	pSwMsPrm->layoutPrm.outputFPS = 30;

	pSwMsPrm->initOutRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;

	pSwMsPrm->layoutPrm.numWin = gVdisModuleContext.vdisConfig.mosaicParams[VDIS_DEV_HDMI].numberOfWindows;
	{
		int i=0;
		for(i=0; i< pSwMsPrm->layoutPrm.numWin; i++)
		{
			pSwMsPrm->layoutPrm.winInfo[i].bypass=TRUE;
			pSwMsPrm->layoutPrm.winInfo[i].channelNum=gVdisModuleContext.vdisConfig.mosaicParams[VDIS_DEV_HDMI].chnMap[i];
			pSwMsPrm->layoutPrm.winInfo[i].startX=gVdisModuleContext.vdisConfig.mosaicParams[VDIS_DEV_HDMI].winList[i].start_X;
			pSwMsPrm->layoutPrm.winInfo[i].startY=gVdisModuleContext.vdisConfig.mosaicParams[VDIS_DEV_HDMI].winList[i].start_Y;
			pSwMsPrm->layoutPrm.winInfo[i].width=gVdisModuleContext.vdisConfig.mosaicParams[VDIS_DEV_HDMI].winList[i].width;
			pSwMsPrm->layoutPrm.winInfo[i].height=gVdisModuleContext.vdisConfig.mosaicParams[VDIS_DEV_HDMI].winList[i].height;
		}
	}
	ret = System_linkCreate(osd_display_linkId_core.linkId_swms0,pSwMsPrm,sizeof(*pSwMsPrm));
	OSA_assert(ERROR_NONE==ret);
	sysDBG("Create Link swms1 Success.");
	__register_created_LnkId(osd_display_linkId_core.linkId_swms0);

	/***********link display0***************/
	DisplayLink_CreateParams displayPrm,*pDisPrm=&displayPrm;
	DisplayLink_CreateParams_Init(pDisPrm);
	pDisPrm->numInputQueues = 1;
	pDisPrm->inQueParams[0].prevLinkId = osd_display_linkId_core.linkId_swms0;
	pDisPrm->inQueParams[0].prevLinkQueId = 0;
	pDisPrm->activeQueue = 0;
	pDisPrm->displayRes = VSYS_STD_1080P_60;
	pDisPrm->displayId = DISPLAY_LINK_DISPLAY_BP0;
	ret = System_linkCreate(osd_display_linkId_core.linkId_display0,pDisPrm,sizeof(*pDisPrm));
	OSA_assert(ERROR_NONE==ret)
	sysDBG("Create Link display Success.");
	__register_created_LnkId(osd_display_linkId_core.linkId_display0);

my question:

 1. when statrt up have follow warning:

[c6xdsp ] > SCD: Algorithm memory requirements queried ::
[c6xdsp ] > Processing Frame Resolution = 352x288
[c6xdsp ] > Number of buffers = 11
[c6xdsp ] > Number of channels supported = 4
[c6xdsp ] > Persistent Internal Memory = 11204 bytes
[c6xdsp ] > Persistent External Memory = 2551296 bytes
[c6xdsp ] > Scratch Internal Memory = 61248 bytes
[c6xdsp ] > SCD: Initializing Scene Change Detection Algorithm...
[c6xdsp ] 23293: SCD : VA :
[c6xdsp ] > DMVAL: 513716 bytes required for DMVAL instance.
[c6xdsp ] 23293: SCD : VA :
[c6xdsp ] > DMVAL: 4128 bytes required for DMVAL output.
[c6xdsp ]
[c6xdsp ] 23294: SCD : VA :
[c6xdsp ] > DMVAL: Invalid EDMA3 parametrs (CH ID : -1 or QUEUE ID : -1 ).
[c6xdsp ]
[c6xdsp ] 23294: SCD : VA :
[c6xdsp ] > DMVAL: Library framework initialized for the 1st time.
[c6xdsp ] 23294: SCD : VA :
[c6xdsp ] > DMVAL: Assigned memory to Camera Tamper Detection application.
[c6xdsp ] 23294: SCD : VA :
[c6xdsp ] > DMVAL: Completed memory assignments to library applications.
[c6xdsp ]
[c6xdsp ] 23294: SCD : VA :
[c6xdsp ] > DMVAL: Library framework reset.
[c6xdsp ] 23294: SCD : VA :
[c6xdsp ] > DMVAL: Initialized library applications.
[c6xdsp ]
[c6xdsp ] 23294: SCD : VA :
[c6xdsp ] > DMVAL: 513716 bytes required for DMVAL instance.
[c6xdsp ] 23294: SCD : VA :
[c6xdsp ] > DMVAL: 4128 bytes required for DMVAL output.
[c6xdsp ]
[c6xdsp ] 23296: SCD : VA :
[c6xdsp ] > DMVAL: Invalid EDMA3 parametrs (CH ID : -1 or QUEUE ID : -1 ).
[c6xdsp ]
[c6xdsp ] 23296: SCD : VA :
[c6xdsp ] > DMVAL: Library framework initialized for the 1st time.
[c6xdsp ] 23296: SCD : VA :
[c6xdsp ] > DMVAL: Assigned memory to Camera Tamper Detection application.
[c6xdsp ] 23296: SCD : VA :
[c6xdsp ] > DMVAL: Completed memory assignments to library applications.
[c6xdsp ]
[c6xdsp ] 23296: SCD : VA :
[c6xdsp ] > DMVAL: Library framework reset.
[c6xdsp ] 23296: SCD : VA :
[c6xdsp ] > DMVAL: Initialized library applications.
[c6xdsp ]
[c6xdsp ] 23296: SCD : VA :
[c6xdsp ] > DMVAL: 513716 bytes required for DMVAL instance.
[c6xdsp ] 23296: SCD : VA :
[c6xdsp ] > DMVAL: 4128 bytes required for DMVAL output.
[c6xdsp ]
[c6xdsp ] 23298: SCD : VA :
[c6xdsp ] > DMVAL: Invalid EDMA3 parametrs (CH ID : -1 or QUEUE ID : -1 ).
[c6xdsp ]
[c6xdsp ] 23298: SCD : VA :
[c6xdsp ] > DMVAL: Library framework initialized for the 1st time.
[c6xdsp ] 23298: SCD : VA :
[c6xdsp ] > DMVAL: Assigned memory to Camera Tamper Detection application.
[c6xdsp ] 23298: SCD : VA :
[c6xdsp ] > DMVAL: Completed memory assignments to library applications.
[c6xdsp ]
[c6xdsp ] 23298: SCD : VA :
[c6xdsp ] > DMVAL: Library framework reset.
[c6xdsp ] 23298: SCD : VA :
[c6xdsp ] > DMVAL: Initialized library applications.
[c6xdsp ]
[c6xdsp ] 23298: SCD : VA :
[c6xdsp ] > DMVAL: 513716 bytes required for DMVAL instance.
[c6xdsp ] 23298: SCD : VA :
[c6xdsp ] > DMVAL: 4128 bytes required for DMVAL output.
[c6xdsp ]
[c6xdsp ] 23299: SCD : VA :
[c6xdsp ] > DMVAL: Invalid EDMA3 parametrs (CH ID : -1 or QUEUE ID : -1 ).
[c6xdsp ]
[c6xdsp ] 23299: SCD : VA :
[c6xdsp ] > DMVAL: Library framework initialized for the 1st time.
[c6xdsp ] 23299: SCD : VA :
[c6xdsp ] > DMVAL: Assigned memory to Camera Tamper Detection application.
[c6xdsp ] 23299: SCD : VA :
[c6xdsp ] > DMVAL: Completed memory assignments to library applications.
[c6xdsp ]
[c6xdsp ] 23299: SCD : VA :
[c6xdsp ] > DMVAL: Library framework reset.
[c6xdsp ] 23299: SCD : VA :
[c6xdsp ] > DMVAL: Initialized library applications.
[c6xdsp ]
[c6xdsp ] UTILS: DSP DMA Channle Alloc: EDMA3_RM_allocLogicalChannel call Successful
[c6xdsp ] Allocated Chanel 30, Param 30 and TC is 30
[c6xdsp ] 23300: SCD: Process Tsk Started !!!
[c6xdsp ] 23300: ALG : Create Done !!!

don't know the reason for :[c6xdsp ] > DMVAL: Invalid EDMA3 parametrs (CH ID : -1 or QUEUE ID : -1 ).

2. I use Vcap_getAlgResultBuffer()  then save the buff,every file is 4232 byte? it's correct?

3.how can sure the ldm is correct?