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.

RTOS/TDA2PXEVM: Adding Changes in ISS Capture Application for decoder

Part Number: TDA2PXEVM

Tool/software: TI-RTOS

Hi All,

I am using VSDK 3.05. Currently working on adding a decoder to ISS Capture Application. I have added the decoder in capture options as shown below:

{"ISL79987 on 2 Lanes capture on PHY 1",
0U, TRUE,
FVID2_VIFM_SCH_CSI2,
FVID2_VIFW_2LANES, 4U, 0U, VPS_ISS_CAL_CSI2_YUV422_8B, FVID2_BPP_BITS16,
CAPT_APP_RUN_COUNT, 640U, 480U, (640U * 2U),
FVID2_VID_DECODER_ISL79987_DRV,
FVID2_STD_1080P_30, FVID2_DF_YUV422I_UYVY, FVID2_BPP_BITS16,
BSP_BOARD_MODE_DEFAULT, CAPT_APP_PHY_1},

As the decoder is give YUV422I data as output. I am not able to understand how to add  pixel processing contexts ( pixProcCfg) as it has been added for other sensors and decoder.

Can any one please check and confirm whether I can write the following values:

appObj->cfg.isPixProcCfgValid[i] = TRUE;
appObj->cfg.pixProcCfg[i].decCodec = VPS_ISS_CAL_DPCM_DEC_BYPASS;
appObj->cfg.pixProcCfg[i].enableDpcmInitContext = FALSE;
appObj->cfg.pixProcCfg[i].encCodec = VPS_ISS_CAL_DPCM_ENC_BYPASS;
appObj->cfg.pixProcCfg[i].pack = VPS_ISS_CAL_PIX_PACK_B16;
/* Write in 16 bit container */
appObj->cfg.inFmt[i].pitch[0] = appObj->cfg.inFmt[i].width * 2;
appObj->cfg.inFmt[i].bpp = FVID2_BPP_BITS16;

Thanks in advance

Regards,

Deepika

  • Hi Deepika,

    For 8bit YUV422 interleaved data, you need to set
    extract to VPS_ISS_CAL_PIX_EXRCT_B8 and
    pack to VPS_ISS_CAL_PIX_PACK_B8

    Other changes look fine.

    Rgds,
    Brijesh
  • Hi Brijesh,

    Two more doubts.I am looking into the function appCaptcreateVidSensor()

    1)Do I need to create Sensor Handle for each stream as it is done like below

    Here instObj  is the the pointer to appCaptObj_t  and  idx is for each stream.

           instObj->sensorHandle[idx] = Fvid2_create(

               instObj->testPrms.sensorDrvId,

               sensorInstId,

               &instObj->sensorCreatePrms,

               &sensorCreateStatus,

               NULL);

    2) Also Do I need to add configParams as shown below and call Fvid2_control

    configParams.videoIfWidth = instObj->testPrms.interfacewidth;
    configParams.dataformat = instObj->testPrms.dataFormat;
    configParams.standard = instObj->testPrms.standard;
    configParams.fps = FVID2_FPS_30;
    configParams.bpp = instObj->testPrms.bpp;

    I have added a similar function where I just configure the decoder and make its stream On. I am not aware whether fvid2_control() should be called or not like it has been done for OV sensor

    retVal = Fvid2_control(instObj->sensorHandle[idx], FVID2_START, NULL,
    NULL);

    Thanks and Regards,

    Deepika

  • Hi Deepika,

    Please find answers to your questions below.

    1, Yes, you would require sensor handle for each instance of sensor, since i2c address for each sensor is different. If you enable broadcast in deserializer, then it is not required.
    2, ignore fps, standard, bpp. I think videoIfWidth is 4lanes, so required and so do data format.

    Rgds,
    Brijesh
  • Hi Brijesh,

    Just to recall that I am connecting 4 CVBS cameras to the ISL79987 decoder having I2C address 0x88. The data of the 4 CVBS cameras will be converted to CSI2 YUV422 format and it would be transmitted across the 2 lanes of CSI2_PHY2. There is no deserialiser as of right now.


    The videoIfWidth is 2 lanes as shown below

    {"ISL79987 on 2 Lanes capture on PHY 1",
    0U, TRUE,
    FVID2_VIFM_SCH_CSI2,
    FVID2_VIFW_2LANES, 4U, 0U, VPS_ISS_CAL_CSI2_YUV422_8B, FVID2_BPP_BITS16,
    CAPT_APP_RUN_COUNT, 640U, 480U, (640U * 2U),
    FVID2_VID_DECODER_ISL79987_DRV,
    FVID2_STD_1080P_30, FVID2_DF_YUV422I_UYVY, FVID2_BPP_BITS16,
    BSP_BOARD_MODE_DEFAULT, CAPT_APP_PHY_1},

    So currently I have not used Fvid2_create() and Fvid2_control() in the ISS capture .Please let me know whether it is required or not.

    Regards,
    Deepika
  • Hi Deepika,

    oh ok, in this case, you have just one sensor/decoder. so you dont need to open multiple handles for this decoder.
    I guess this decoder decodes 4 CVBS signals, converts then into CSI packets, multiplexes them and sends them over 2 lanes.. is it correct?

    Rgds,
    Brijesh
  • Hi Brijesh,

    Yes you are correct . So as for now I am not considering the function appCaptcreateVidSensor() itself. Instead I have created another function where decoder is initialized like below:

    else if (FVID2_VID_DECODER_ISL79987_DRV == pCfg->sensorDrvId)
    {
    retVal= appCaptcreateISLSensor(appObj, pCfg);
    if (FVID2_SOK != retVal)
    {
    GT_0trace(BspAppTrace, GT_ERR,
    APP_NAME ": Failed to configure ISL79987 decoder!!!\r\n");
    return;
    }

    }

    Let me know if I need to add anything else from the function  appCaptcreateVidSensor()

    Regards,
    Deepika

  • Nothing else, so far looks good.

    Rgds,
    Brijesh

  • Hi Brijesh,

    Thanks a lot for your inputs.
    Regards,
    Deepika