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.

DVRRDK350 dm816x swms some frame have dirty data lead output dirty!

Hi:

    In my project,sometimes have swms output dirty frame,look the picture may clearly:

    the normal swms output:

    

    unormal output:

   

   I think one output buff is dirty,so every 5 frame will output a dirty frameout,I just want to know how this issue happen, why this buff become dirty,I think this buff when init is clean,but some reason lead the issue dirty?

   the first step: how to solve this issue,our product need to sail now!

   at below I will share my usecase about swms create args and in the app about swms layout:

   swmslink create args:

       SwMsLink_CreateParams swMsPrm,*pSwMsPrm = &swMsPrm;
	SwMsLink_CreateParams_Init(pSwMsPrm);
	pSwMsPrm->inQueParams.prevLinkId = gRB_S2013_HD_LINK.linkId_Dup_sclr_merge_swms;
	pSwMsPrm->inQueParams.prevLinkQueId = 1;
	pSwMsPrm->outQueParams.nextLink = gRB_S2013_HD_LINK.linkId_Dup_nsf_merge;
	pSwMsPrm->numSwMsInst = 1;
	pSwMsPrm->swMsInstId[0] = SYSTEM_SW_MS_SC_INST_DEIHQ_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->lineSkipMode = FALSE;
	pSwMsPrm->enableLayoutGridDraw = FALSE;
	pSwMsPrm->enableOuputDup = FALSE;
	pSwMsPrm->outDataFormat = SYSTEM_DF_YUV422I_YUYV;
	pSwMsPrm->outputBufModified = FALSE;
	pSwMsPrm->layoutPrm.numWin = 4;
	pSwMsPrm->layoutPrm.onlyCh2WinMapChanged = FALSE;

	pSwMsPrm->layoutPrm.outputFPS=25;
	pSwMsPrm->initOutRes=pSwMsPrm->maxOutRes = VSYS_STD_1080P_60;
	
	pSwMsPrm->layoutPrm.winInfo[0].channelNum = 0;
	pSwMsPrm->layoutPrm.winInfo[0].startX = 0;
	pSwMsPrm->layoutPrm.winInfo[0].startY = 135;
	pSwMsPrm->layoutPrm.winInfo[0].width = 480;
	pSwMsPrm->layoutPrm.winInfo[0].height = 270;
	pSwMsPrm->layoutPrm.winInfo[0].bypass = TRUE;

	pSwMsPrm->layoutPrm.winInfo[1].channelNum = 1;
	pSwMsPrm->layoutPrm.winInfo[1].startX = 0;
	pSwMsPrm->layoutPrm.winInfo[1].startY = 405;
	pSwMsPrm->layoutPrm.winInfo[1].width = 480;
	pSwMsPrm->layoutPrm.winInfo[1].height = 270;
	pSwMsPrm->layoutPrm.winInfo[1].bypass = TRUE;

	pSwMsPrm->layoutPrm.winInfo[2].channelNum = 2;
	pSwMsPrm->layoutPrm.winInfo[2].startX = 0;
	pSwMsPrm->layoutPrm.winInfo[2].startY = 675;
	pSwMsPrm->layoutPrm.winInfo[2].width = 480;
	pSwMsPrm->layoutPrm.winInfo[2].height = 270;
	pSwMsPrm->layoutPrm.winInfo[2].bypass = TRUE;

	pSwMsPrm->layoutPrm.winInfo[3].channelNum = 3;
	pSwMsPrm->layoutPrm.winInfo[3].startX = 480;
	pSwMsPrm->layoutPrm.winInfo[3].startY = 135;
	pSwMsPrm->layoutPrm.winInfo[3].width = 1440;
	pSwMsPrm->layoutPrm.winInfo[3].height = 810;
	pSwMsPrm->layoutPrm.winInfo[3].bypass = TRUE;
	
	ret = System_linkCreate(gRB_S2013_HD_LINK.linkId_SwMs_compose,pSwMsPrm,sizeof(*pSwMsPrm));
	OSA_assert(ERROR_NONE==ret);
	sysDBG("Create Link SYSTEM_LINK_ID_SW_MS_MULTI_INST_0 Success.");
	__register_created_LnkId(gRB_S2013_HD_LINK.linkId_SwMs_compose);

       swms layout config: same with the create layout

       stream input info:

                        3 channel  720P60,1 channel 1024x768P30

          

wait for friends reply!

     thanks very much!

       

  • Hello,

    For DRV RDK support, please contact your local FAE.

    Best Regards,

    Margarita

  • Hi:

         I have email to local FAE,but he no response. I think E2E more effective! so  if you have any idea, I will try it!

     thanks very much!

  • Are you sure that swms is introducing these artifacts? Did you try dumping input frame to swms and check it?

    it might be coming from the capture itself. what is your capture interface?

     

    Rgds,

    Brijesh

  • Hi:

        a part of my project link chain link this:

     

    the display for capture is OK,so I guess swms lead this issue

    my captuer interface is SDI

  • Which SWMS instance is introducing it? the which goes to nsf or the one which goes to display?

     

    Regards,

    Brijesh

  • Hi;

        all the capture stream goes to display ,the copy also goto another swms for creating a new stream

         the issue is the new creating channel have dirty data

       the instanc: SYSTEM_SW_MS_SC_INST_DEIHQ_SC_NO_DEI  for create new streawm

      then instanc: SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI  for display

  • SWMS link cannot introduce such space at the top. it could be happening because of start position. Can you check if you are setting some start position in this swms? Can you dump the image after swms and see if it is correct? just want to see if it is nsf introducing these margins.

     

    Rgds,

    Brijesh

  • Hi:

       I have use below link chain to debug,and sure the dirty data is from swms0:

      

     I  display all the capture channle, display is good, when I display dup1(just swms0 channel) it's not good ,have the dirty issue

     I never reset my layout,so the start position is same.

     when I change the swms resolution, the dirty data will gone(disappear)

    so I want to know the reason for this issue to avoid next time appear

    this issue is very difficult to reappear.

  • Hi,

     

    I think it is not artifacts, it looks like the for your swms layout and for the given output resolution, swms link is keeping some space in between windows, swms divides entire screen into number of windows and tries to make sure that the start position is 16byte aligned for all windows. For some resolution and for some layout, it might be possible that there could be spaces between windows. If you want to remove it, you will have to manual change the windows size.

     

    Regards,

    Brijesh

  • Hi:

        swms 0 use swMsInstId: SYSTEM_SW_MS_SC_INST_DEIHQ_SC_NO_DEI

        swms 1 use swMsInstId: SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI

         when swms0 have the issue, swms1 never hanppen

          swms0 and swms1 use the same argument, same layout

        also same input stream channel

         so  when swms0 have issue, I think swms1 also will happen, in fact not!

         this make me confuse!

  • Hi:

       I have try below layout,every window start position is 16byte aligned:

       

    pSwMsPrm->layoutPrm.outputFPS=25;
    	pSwMsPrm->initOutRes=pSwMsPrm->maxOutRes = VSYS_STD_1080P_60;
    	
    	pSwMsPrm->layoutPrm.winInfo[0].channelNum = 0;
    	pSwMsPrm->layoutPrm.winInfo[0].startX = 0;
    	pSwMsPrm->layoutPrm.winInfo[0].startY = 144;
    	pSwMsPrm->layoutPrm.winInfo[0].width = 480;
    	pSwMsPrm->layoutPrm.winInfo[0].height = 272;
    	pSwMsPrm->layoutPrm.winInfo[0].bypass = TRUE;
    
    	pSwMsPrm->layoutPrm.winInfo[1].channelNum = 1;
    	pSwMsPrm->layoutPrm.winInfo[1].startX = 0;
    	pSwMsPrm->layoutPrm.winInfo[1].startY = 416;
    	pSwMsPrm->layoutPrm.winInfo[1].width = 480;
    	pSwMsPrm->layoutPrm.winInfo[1].height = 272;
    	pSwMsPrm->layoutPrm.winInfo[1].bypass = TRUE;
    
    	pSwMsPrm->layoutPrm.winInfo[2].channelNum = 2;
    	pSwMsPrm->layoutPrm.winInfo[2].startX = 0;
    	pSwMsPrm->layoutPrm.winInfo[2].startY = 688;
    	pSwMsPrm->layoutPrm.winInfo[2].width = 480;
    	pSwMsPrm->layoutPrm.winInfo[2].height = 272;
    	pSwMsPrm->layoutPrm.winInfo[2].bypass = TRUE;
    
    	pSwMsPrm->layoutPrm.winInfo[3].channelNum = 3;
    	pSwMsPrm->layoutPrm.winInfo[3].startX = 480;
    	pSwMsPrm->layoutPrm.winInfo[3].startY = 144;
    	pSwMsPrm->layoutPrm.winInfo[3].width = 1440;
    	pSwMsPrm->layoutPrm.winInfo[3].height = 816;
    	pSwMsPrm->layoutPrm.winInfo[3].bypass = TRUE;



    also I have try change the argument with the swms1, the issue same,only swms0 have the issue,swms1 never happen!