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.

DM8168 VIP0 input RGB-24 + Hsync + Vsync

Expert 1915 points

Hello,

My DM8168 receives a RGB-24 video on VIP0, with Hsync & Vsync signals.

Input comes from a 1080p60 source, clock is 148.5MHz, Hsync 67.5kHz and Vsync 60Hz, data is 24 bits wide.

My VIP_PARSER_MAIN is set to 0x0 (24b port A)

My VIP_PARSER_port_a is set to 0x150a (/Vsync, /Hsync, Enable, discrete 24b sync)

VIP_PARSER_output_port_a_src0_size reports a correct line count (bits 10:0) but my width (pixel count) is wrong, it keeps reporting 0x98 even if I toggle the Hsync polarity.

Sync & clock are dedicated pins, pinmux is set to default.

Do I need to configure some other bits?

Best regards,

Lo

  • Here are my signals:

    Hsync

    Vsync

    Clock

    I have no input on DE or FID pads, my video input is 1080p60 (progressive, hence no FID)

    Which settings should I use in for the omx port configuration?

    What should the resulting VIP setting @ 0x48105504 look like?

    I'd expect 0x07800438 @ 0x48105530.

    Should bits 4/5 (clipping) be set in 0x48105500?

    OMX port config:

      sHwPortParam.eCaptMode = OMX_VIDEO_CaptureModeSC_DISCRETESYNC_ACTVID_VBLK;
      sHwPortParam.eVifMode = OMX_VIDEO_CaptureVifMode_24BIT;
      sHwPortParam.eInColorFormat = OMX_COLOR_Format24bitRGB888;
      sHwPortParam.eScanType = OMX_VIDEO_CaptureScanTypeProgressive;
      sHwPortParam.nMaxHeight = pAppData->nInHeight;
      sHwPortParam.bFieldMerged   = OMX_FALSE;

    OMX VIP output config:

          paramPort.format.video.nFrameWidth = 1920;
          paramPort.format.video.nFrameHeight = 1080;
          paramPort.format.video.nStride = 1920;
          paramPort.format.video.eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
          paramPort.nBufferSize = (1920 * 1080 * 3)>>1;

    Regards,

    Lo

  • Do you have a working OMX capture application? I understand you may not be able to capture data yet.

    I don't know what the default DM8168 pinmux is  (off the top of my head I think it's in evm.c or evm8168.c) but you need to check every single pin and make sure it is the same as your setup.

    Ralph

  • Hi _Ralph_

    My test application is derived from capture_encode:

    - I added support for capture on VIP1:B in 8 bit mode (i576/i480) which works fine

    - I modified the 1080p to use VIP0:A in 24bit mode + ext sync

    The application hangs when after setting the cpture component to state execute:

    eError = OMX_SendCommand (pAppData->pCapHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL);

    and then wait for semaphore, but the callback never happens, the semaphore is not posted.

    eError is OMX_NONE, so I assume that the capture component waits for a first (valid) frame.

    When I check the vip registers, I see the size of the received frame is reported as: 0x98 by 0x460

    The registers are only 11 bits wide, my real size (including blanking) is 2200 pixels by 1125 lines.

    How can I tell OMX to configure the VIP so the blanking is thrown away?

    I don't have DE (ACTVID) connected, do you use DE/ACTVID to determine valid data?

    Best regards,

    Lo

  • I'm not exactly sure what you mean by your real size since the capture limit of the DM8168 is below the dimensions that you describe. The semaphore you are waiting for is for the end of a frame isn't it? Are you just using VIP1 or are you trying to capture on VIP0 _at the same time_? I would suggest trying to capture on just one interface at a time.

    Yes, I'm using the ACTIVID line... as I recall I couldn't get it working using just HSYNC/VSYNC though this was almost 2 years ago when I worked on it.

  • Hi _Ralph_,

    The HSYNC/VSYNC method will capture the entire line, this includes the horizontal blanking pixels and vertical blanking lines.

    My video input is 1080p60, so 1920x1080 but with blanking this is 2200x1125 which exceeds the 11bits (2048).

    With DE/ACTVID interface only the vertical ancillary data (vertical blanking data) can be captured. By default you'd only get active video, i.e. 1920x1080 pixels.

    Only in Hsync/Vsync mode the blanking information in H & V blanking is captured (says the documentation) as it captures all the pixels. With my H blanking: too much (for 11 bits)

    I haven't wired DE, but it looks like H/Vsync will only work if a line + blanking is less or equal 2048 pixels.

    My application captures either 1080p60 on VIP0 port A or i576 on VIP1 port B.

    Are there any issues capturing both at the same time? If 1080p60 worked I'd want to do that.

    Btw: pinmux is ok (checked), for VIP0 port A most pins are dedicated anyway.

    Best regards,

    Lo