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.

Assertion @ Line: 769 in links_m3vpss/mpSclr/mpSclrLink_drv.c: status == FVID2_SOK : failed !!!

This is the error message that I have encountered:

[m3vpss ]  147549: MP_SCLR: - Input Resolution Changed, updating...
[m3vpss ]  147552: MP_SCLR: ERROR could not update channel info!!!
[m3vpss ]  147552: Assertion @ Line: 769 in links_m3vpss/mpSclr/mpSclrLink_drv.c: status == FVID2_SOK : failed !!!

Read YUV file, a channel is 2048*2048, the two channel is 640*480
My software version is DVRRDK 4.0.My LINK is as follows:
Read YUV -> ipcframesouthost -> ipcframesinvpss -> MP_SCLR (Vpss) -> SW Mosaic -> display

static Void MultiCh_setIpcFramesOutInQueInfo(System_LinkQueInfo *inQueInfo)
{

    inQueInfo->numCh = 2;

    inQueInfo->chInfo[0].bufType = SYSTEM_BUF_TYPE_VIDFRAME;
    inQueInfo->chInfo[0].dataFormat = SYSTEM_DF_YUV420P;
    inQueInfo->chInfo[0].memType    = SYSTEM_MT_NONTILEDMEM;
    inQueInfo->chInfo[0].scanFormat = SYSTEM_SF_PROGRESSIVE;
    inQueInfo->chInfo[0].startX     = 0;
    inQueInfo->chInfo[0].startY     = 0;
    inQueInfo->chInfo[0].width      = 2048;
    inQueInfo->chInfo[0].height     = 2048;
    inQueInfo->chInfo[0].pitch[0]   = 2048*2;
    inQueInfo->chInfo[0].pitch[1]   = 0;
    inQueInfo->chInfo[0].pitch[2]   = 0;

    inQueInfo->chInfo[1].bufType = SYSTEM_BUF_TYPE_VIDFRAME;
    inQueInfo->chInfo[1].dataFormat = SYSTEM_DF_YUV420P;
    inQueInfo->chInfo[1].memType    = SYSTEM_MT_NONTILEDMEM;
    inQueInfo->chInfo[1].scanFormat = SYSTEM_SF_PROGRESSIVE;
    inQueInfo->chInfo[1].startX     = 0;
    inQueInfo->chInfo[1].startY     = 0;
    inQueInfo->chInfo[1].width      = 640;
    inQueInfo->chInfo[1].height     = 480;
    inQueInfo->chInfo[1].pitch[0]   = 640*2;
    inQueInfo->chInfo[1].pitch[1]   = 0;
    inQueInfo->chInfo[1].pitch[2]   = 0;

}

    ipcFramesOutA8Prm.baseCreateParams.noNotifyMode = FALSE;
    ipcFramesOutA8Prm.baseCreateParams.notifyNextLink = TRUE;
    ipcFramesOutA8Prm.baseCreateParams.notifyPrevLink = FALSE;
    ipcFramesOutA8Prm.baseCreateParams.inQueParams.prevLinkId = SYSTEM_LINK_ID_INVALID;
    ipcFramesOutA8Prm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    ipcFramesOutA8Prm.baseCreateParams.numOutQue = 1;
    ipcFramesOutA8Prm.baseCreateParams.outQueParams[0].nextLink = gVdisModuleContext.ipcFramesInVpssFromHostId;
    MultiCh_setIpcFramesOutInQueInfo(&ipcFramesOutA8Prm.inQueInfo);

    ipcFramesInVpssFromA8Prm.baseCreateParams.noNotifyMode = FALSE;
    ipcFramesInVpssFromA8Prm.baseCreateParams.notifyNextLink = TRUE;
    ipcFramesInVpssFromA8Prm.baseCreateParams.notifyPrevLink = TRUE;
    ipcFramesInVpssFromA8Prm.baseCreateParams.inQueParams.prevLinkId = gVdisModuleContext.ipcFramesOutHostId;
    ipcFramesInVpssFromA8Prm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    ipcFramesInVpssFromA8Prm.baseCreateParams.numOutQue = 1;
    ipcFramesInVpssFromA8Prm.baseCreateParams.outQueParams[0].nextLink = gMultiCh_VdecVdisObj.mpSclrId;
 

    mpSclrPrm.pathId = MP_SCLR_LINK_SEC1_SC4_VIP1;
    mpSclrPrm.numCh = 4;
    mpSclrPrm.enableLineSkip = FALSE;

    mpSclrPrm.outQueParams.nextLink       = gVdisModuleContext.swMsId[0] ;
    mpSclrPrm.inQueParams.prevLinkId        = gVdisModuleContext.ipcFramesInVpssFromHostId;

This is a function of the YUV 420p data that I read the 2048*2048 resolution:

void ReadYuvToA8(void *ptr1, void *ptr2, UInt32 width)
{
 VIDFrame_BufList emptyFrameList;
 Int i;
 Int status;
 Vsys_AllocBufInfo *videoBufInfo[2];
 videoBufInfo[0] = (Vsys_AllocBufInfo *)ptr1;
 videoBufInfo[1] = (Vsys_AllocBufInfo *)ptr2;
 FILE *fp=NULL;

 OSA_printf("Entered YUV read function\n");

OPEN:
 fp=fopen("/opt/dvr_rdk/ti816x/bin/jiang.yuv","rb");
 if(fp == NULL)
 {
  OSA_printf("cannot open the jiang.yuv\n");
  goto OPEN;
 }

 OSA_printf("BEGIN TO READ VIDEO!!!\n");


while(1)
{
  if(!feof(fp))
  {
   fread(videoBufInfo[0]->virtAddr,1, 2048*2048*1*3/2, fp);
  }
  else
  {
   printf("\n\n\nread over !!!\n\n\n");
   break;
  }
  
  emptyFrameList.numFrames=1;
  for(i = 0;i < emptyFrameList.numFrames;i++)
  {
   emptyFrameList.frames[i].addr[0][0] = (Ptr)videoBufInfo[0]->virtAddr;
   emptyFrameList.frames[i].phyAddr[0][0] = (Ptr)videoBufInfo[0]->physAddr;   
   emptyFrameList.frames[i].channelNum = 0;
   emptyFrameList.frames[i].fid = 0;
   emptyFrameList.frames[i].frameWidth = 2048;
   emptyFrameList.frames[i].frameHeight = 2048;
   emptyFrameList.frames[i].framePitch[0] = 2048*2;
   emptyFrameList.frames[i].framePitch[1] = 0;
   emptyFrameList.frames[i].framePitch[2] = 0;
  }

  status = IpcFramesOutLink_putFullVideoFrames(gVdisModuleContext.ipcFramesOutHostId,&emptyFrameList);
  if(ERROR_NONE != status)
  {
   OSA_printf("PUT FULL FRAME FAIL!!!\n");
  }
 
  OSA_waitMsecs(30);


  status = IpcFramesOutLink_getEmptyVideoFrames(gVdisModuleContext.ipcFramesOutHostId,&emptyFrameList);
}

   
 fclose(fp);
 OSA_printf("Exiting YUV read function\n");
}

How do I solve this problem?

In addition, I can not find the problem in the E2E class, is not very convenient to the local FAE, please help me, thank you.