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.

DM388: BT.656 VIP[0]A can't get correct image

Part Number: DM388

Hi,

Please help find outproblem with video capture from VIN[0]A port. I am working with my own design board where i am trying to capture any video from sensor which provide BT.656 with embedded sync. When i read VIP_PARSER_output_port_a_src0_size register i see that PRTA_SRC0_WIDTH field are correct, but HEIGHT are always 1.

There is my chain code:

void chain_create(void) {

	DisplayLink_CreateParams displayPrm_SD;

	CaptureLink_CreateParams	capParams;
	CaptureLink_VipInstParams      *pCaptureInstPrm;
	CaptureLink_OutParams          *pCaptureOutPrm;


	printf("%s: CHAIN CREATE START\n", __func__);

	printf("%s: CMD TO M3VPSS > reset devices\n", __func__);
	System_linkControl(SYSTEM_LINK_ID_M3VPSS, SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES, NULL, 0, TRUE);

	chain.cameraId = SYSTEM_LINK_ID_CAMERA;


	chain.displayId[1] = SYSTEM_LINK_ID_DISPLAY_2;	// SD VOUT

	chain.captureId = SYSTEM_LINK_ID_CAPTURE;
	CaptureLink_CreateParams_Init(&capParams);
	capParams.enableSdCrop = FALSE;
	capParams.doCropInCapture = FALSE;
	capParams.numBufsPerCh = 10; //6
	capParams.numVipInst = 1;
	capParams.outQueParams[0].nextLink = chain.displayId[1];
	
	pCaptureInstPrm = &capParams.vipInst[0];
	pCaptureInstPrm->vipInstId	= SYSTEM_CAPTURE_INST_VIP0_PORTA;
	pCaptureInstPrm->inDataFormat	= SYSTEM_DF_YUV422P;
	pCaptureInstPrm->standard	= SYSTEM_STD_NTSC;
	pCaptureInstPrm->numOutput	= 1;
	pCaptureInstPrm->videoDecoderId = 0;

	pCaptureOutPrm = &(pCaptureInstPrm->outParams[0]);
	pCaptureOutPrm->dataFormat	= SYSTEM_DF_YUV422I_YUYV;
	pCaptureOutPrm->scEnable	= FALSE;
	pCaptureOutPrm->scOutWidth	= 720;
	pCaptureOutPrm->scOutHeight	= 240;

	pCaptureOutPrm->outQueId	= 0;

	DisplayLink_CreateParams_Init(&displayPrm_SD);
	displayPrm_SD.inQueParams[0].prevLinkId = chain.captureId;
	displayPrm_SD.inQueParams[0].prevLinkQueId = 0;
	displayPrm_SD.displayRes = VSYS_STD_NTSC;
	displayPrm_SD.displayId  = DISPLAY_LINK_DISPLAY_SD;

	printf("%s: capture link create\n", __func__);
	System_linkCreate(chain.captureId, &capParams, sizeof(capParams));

	printf("%s: display link create 1\n", __func__);
	System_linkCreate(chain.displayId[1], &displayPrm_SD, sizeof(displayPrm_SD));

	printf("%s: CHAIN CREATE DONE\n", __func__);
}

When i stop application i received this information:

[   94.222105] autorun_user.sh[119]:  [m3vpss ]  *** Capture Driver Advanced Statistics ***
[   94.222606] autorun_user.sh[119]:  [m3vpss ]
[   94.223050] autorun_user.sh[119]:  [m3vpss ]  VIP Parser Reset Count : 0
[   94.223496] autorun_user.sh[119]:  [m3vpss ]
[   94.223922] autorun_user.sh[119]:  [m3vpss ]      |   Total    Even     Odd  Total  Even   Odd  Min /  Max  Min /  Max Dropped Fid Repeat Frame Error Y/C
[   94.224366] autorun_user.sh[119]:  [m3vpss ]  CH  |  Fields  Fields  Fields    FPS   FPS   FPS       Width      Height  Fields      Count (Desc Error Y/C)
[   94.224812] autorun_user.sh[119]:  [m3vpss ]  ------------------------------------------------------------------------------------------------------------
[   94.225255] autorun_user.sh[119]:  [m3vpss ]  000 |    1506     753     753    125    62    62 65535 /    1    2 /    2     590        783 0/0 (0/0)
[   94.225692] autorun_user.sh[119]:  [m3vpss ]
[   94.226104] autorun_user.sh[119]:  [m3vpss ]  VIP Capture Port 0 | DescMissMatch1 = 0, DescMissMatch2 = 0 , DescMissMatch3 = 0
[   94.227900] autorun_user.sh[119]:  [m3vpss ]
[   94.228570] autorun_user.sh[119]:  [m3vpss ]  *** Capture List Manager Advanced Statistics ***
[   94.229160] autorun_user.sh[119]:  [m3vpss ]
[   94.229760] autorun_user.sh[119]:  [m3vpss ]  List Post Count        : 1509
[   94.230477] autorun_user.sh[119]:  [m3vpss ]  List Stall Count       : 0
[   94.231049] autorun_user.sh[119]:  [m3vpss ]  List Post Time (ms)    : Max = 0, Min = 0, Avg = 0, Total = 0
[   94.231601] autorun_user.sh[119]:  [m3vpss ]  INTC Timeout Count     : (0, 0) (Min timeout value = 994, 996)
[   94.232144] autorun_user.sh[119]:  [m3vpss ]  Descriptor miss found count : 0
[   94.232679] autorun_user.sh[119]:  [m3vpss ]
[   94.233231] autorun_user.sh[119]:  [m3vpss ]
[   94.233756] autorun_user.sh[119]:  [m3vpss ]  VIP and VPDMA registers,
[   94.234293] autorun_user.sh[119]:  [m3vpss ]  VIP0 : FIQ_STATUS  : 0x4810551c = 0x00000000
[   94.234831] autorun_user.sh[119]:  [m3vpss ]  VIP1 : FIQ_STATUS  : 0x48105a1c = 0x00000000
[   94.235362] autorun_user.sh[119]:  [m3vpss ]  VPDMA: LIST_BUSY   : 0x4810d00c = 0x00000000
[   94.235928] autorun_user.sh[119]:  [m3vpss ]
[   94.236449] autorun_user.sh[119]:  [m3vpss ]
[   94.236966] autorun_user.sh[119]:  [m3vpss ]  46315: CAPTURE: Fields = 916 (fps = 75, CPU Load = 11)
[   94.237504] autorun_user.sh[119]:  [m3vpss ]  46316: CAPTURE: Num Resets = 0 (Avg 0 ms per reset)
[   94.238114] autorun_user.sh[119]:  [m3vpss ]  46316: SYSTEM  : FREE SPACE : System Heap      = 1675440 B, Mbx = 10238 msgs)
[   94.238695] autorun_user.sh[119]:  [m3vpss ]  46316: SYSTEM  : FREE SPACE : SR0 Heap         = 14772608 B (14 MB)
[   94.239240] autorun_user.sh[119]:  [m3vpss ]  46317: SYSTEM  : FREE SPACE : Frame Buffer     = 98251648 B (93 MB)
[   94.239782] autorun_user.sh[119]:  [m3vpss ]  46317: SYSTEM  : FREE SPACE : Bitstream Buffer = 61865856 B (58 MB)
[   94.240432] autorun_user.sh[119]:  [m3vpss ]  46317: SYSTEM  : FREE SPACE : Tiler Buffer     = 128 B (0 MB)  - TILER OFF
[   94.240995] autorun_user.sh[119]:  [m3vpss ]  46318: CAPTURE: Delete in progress !!!
[   94.241650] autorun_user.sh[119]:  [m3vpss ] CAPTURELINK: !!WARN. Mismatch FrameAddr:b8811240,OrigAddr:0
[   94.242264] autorun_user.sh[119]:  [m3vpss ] CAPTURELINK: !!WARN. Mismatch FrameAddr:5c0,OrigAddr:0
[   94.242830] autorun_user.sh[119]:  [m3vpss ]  46319: CAPTURE: Delete Done !!!
[   94.243381] autorun_user.sh[119]:  [m3vpss ]  46320: DISPLAY: UNDERFLOW COUNT: HDMI(BP0) 755, HDDAC(BP0) 755, DVO2(BP1) 755, SDDAC(SEC1) 726
[   94.243931] autorun_user.sh[119]:  [m3vpss ] tiedVencs VPS_DC_VENC_HDMI | VPS_DC_VENC_HDCOMP
[   94.244503] autorun_user.sh[119]:  [m3vpss ] VPS_DCTRL_INST_0
[   94.245035] autorun_user.sh[119]:  [m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_OUTPUT SYSTEM_DC_VENC_DVO2
[   94.245561] autorun_user.sh[119]:  [m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_OUTPUT SYSTEM_DC_VENC_HDMI
[   94.246093] autorun_user.sh[119]:  [m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_OUTPUT SYSTEM_DC_VENC_SD
[   94.246624] autorun_user.sh[119]:  [m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_OUTPUT SYSTEM_DC_VENC_HDCOMP
[   94.247155] autorun_user.sh[119]:  [m3vpss ] IOCTL_VPS_DCTRL_SET_VENC_CLK_SRC VPS_DC_VENC_HDMI | VPS_DC_VENC_HDCOMP
[   94.580204] autorun_user.sh[119]:  [m3vpss ] HDCOMPCLK
[   94.580795] autorun_user.sh[119]:  [m3vpss ]  67199: CAPTURE: Create in progress !!!
[   94.581406] autorun_user.sh[119]:  [m3vpss ]  67237: CAPTURE: VIP0 PortA capture mode is [ 8-bit, Non-mux Embedded Sync] !!!
[   94.581972] autorun_user.sh[119]:  [m3vpss ] CAPTURE:Create args numBufsPerCh[10] > max[8]Overriding create args
[   94.582516] autorun_user.sh[119]:  [m3vpss ] CAPTURE::HEAPID:0       USED:192
[   94.583129] autorun_user.sh[119]:  [m3vpss ]  67261: CAPTURE: Create Done !!!
[   94.583676] autorun_user.sh[119]:  [m3vpss ]  67262: DISPLAY: Start in progress !!!
[   94.584216] autorun_user.sh[119]:  [m3vpss ]  67315: DISPLAY: Start Done !!!
[   94.584754] autorun_user.sh[119]:  [m3vpss ]  67316: DISPLAY: SDDAC(SEC1): 6796 fps, Latency (Min / Max) = ( 0 / 33 ), Callback Interval (Min / Max) = ( 33 / 37 ) !!!
[   94.585324] autorun_user.sh[119]:  [m3vpss ]  67316: CAPTURE: Start in progress !!!
[   94.585863] autorun_user.sh[119]:  [m3vpss ]  67316: CAPTURE: Start Done !!!
[   94.586404] autorun_user.sh[119]:  [m3vpss ]  67434: CAPTURE: Fields = 0 (fps = 0), Total Resets = 0 (Avg 0 ms per reset)

Register dump when usecase are running:

root@ti81xx:/opt/ipnc# ./bin/mem_rdwr.out --rd 48105500 56

 [host]  

0x48105500: 00000002
0x48105504: 0000A100
0x48105508: 00000000
0x4810550c: 00000000
0x48105510: 00000000
0x48105514: 003FFC03
0x48105518: 00000000
0x4810551c: 00000000
0x48105520: FFFFFFFC
0x48105524: FFFFFFFC
0x48105528: FFFFFFFF
0x4810552c: FFFFFFFF
0x48105530: 03590001
0x48105534: 00000000
0x48105538: 00000000
0x4810553c: 00000000
0x48105540: 00000000
0x48105544: 00000000
0x48105548: 00000000
0x4810554c: 00000000
0x48105550: 00000000
0x48105554: 00000000
0x48105558: 00000000
0x4810555c: 00000000
0x48105560: 00000000
0x48105564: 00000000
0x48105568: 00000000
0x4810556c: 00000000
0x48105570: 00000000
0x48105574: 00000000
0x48105578: 00000000
0x4810557c: 00000000
0x48105580: 00000000
0x48105584: 00000000
0x48105588: 00000000
0x4810558c: 00000000
0x48105590: 00000000
0x48105594: 00000000
0x48105598: 00000000
0x4810559c: 00000000
0x481055a0: 00000000
0x481055a4: 00000000
0x481055a8: 00000000
0x481055ac: 00000000
0x481055b0: 00000000
0x481055b4: 00000000
0x481055b8: 00000000
0x481055bc: 00000000
0x481055c0: 00000000
0x481055c4: 00000000
0x481055c8: 00000000
0x481055cc: 00000000
0x481055d0: 00000000
0x481055d4: 00000000
0x481055d8: FFFFFFFF
0x481055dc: FFFFFFFF

Image what i am receiving from SD port. You can see small white-black line in left top corner before green line. Only these lines are changing.


  • Hi Donatas,

    The register settings look correct, VIP is configured for 8bit embedded sync input.
    Now if your input signal is errorneous then it is possible that VIP receiving incorrect frame size, can you please check your input signal?

    Regards,
    Brijesh