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.

VPE cannot be used in linux version



Dear all , 

I am trying to add a VPE link to my chain. It will be used to resize images. My chains is as below :

UseCase: chains_v4l2Src_Adas_null

NullSource (A15) -> Encode -> Dup -> Decode -> VPE -> Alg_FrameCopy (DSP1) -> Null (A15)
Dup -> Null_1 (A15)

if I drop VPE, the chains works fine. With the VPE link it leads to the following error no matter how I set the VPE parameters: 

Assertition 0 Line: 625 in links_ipu/vpe/vpelink_drv.c: pObj->fvidHandle !=NULL : failed !!!

Does anyone know the reason?

I use the Vision sdk Linux version.

  • It seems from the chain that you are trying to instantiate VPE link on IPU and somehow the driver open fails. Is VPE driver included in the IPU or is it part of the Linux? Also please check the VPE configuration, it will also fail when config is wrong.

    Regards,
    Brijesh
  • Thanks for your reply. 

    I am not sure what you mean by asking if VPE driver is included in the IPU or is part of the Linux. I'm a new user of it .  The vision sdk verison is 2.7. I created an use case in linux/tda2xx/src/usecases named "v4l2src_adas_null" and with the text like above. I haven't changed other things related to VPE in vision sdk. 

    For the VPE configuration, I just copy the content in the other example given by TI called "vip_single_cam_enc_dec_sgx_display ". It has also used VPE link. 

    One of my colleagues told me that VPE just doesn't work in linux version vision sdk. It that correct?

    I also attach the related in the following. Hope you can tell me if there is any wrong configuration or if additional configurations are needed . 

    Void chains_v4l2Src_Adas_null_SetVPEPrms(
    301                     VpeLink_CreateParams *pPrm,               
    302                     UInt32 numLvdsCh,
    303                     UInt32 displayWidth,
    304                     UInt32 displayHeight,
    305                     UInt32 inputWidth,
    306                     UInt32 inputHeight
    307                     )                
    308 {   
    309     UInt16 chId;                     
    310       
    311     pPrm->enableOut[0] = TRUE;
    312       
    313     for(chId = 0; chId < numLvdsCh; chId++)   
    314     { 
    315         pPrm->chParams[chId].outParams[0].numBufsPerCh =
    316                                  VPE_LINK_NUM_BUFS_PER_CH_DEFAULT;         
    317       
    318         pPrm->chParams[chId].outParams[0].width = displayWidth;
    319         pPrm->chParams[chId].outParams[0].height = displayHeight;
    320         pPrm->chParams[chId].outParams[0].dataFormat = SYSTEM_DF_YUV420SP_UV;
    321 
    322         pPrm->chParams[chId].scCfg.bypass       = FALSE;
    323         pPrm->chParams[chId].scCfg.nonLinear    = FALSE;
    324         pPrm->chParams[chId].scCfg.stripSize    = 0;
    325         
    326         pPrm->chParams[chId].scCropCfg.cropStartX = 0;
    327         pPrm->chParams[chId].scCropCfg.cropStartY = 0;
    328         pPrm->chParams[chId].scCropCfg.cropWidth = inputWidth;
    329         pPrm->chParams[chId].scCropCfg.cropHeight = inputHeight;
    330     }
    331 }
    

    The use of the function is 

    chains_v4l2Src_Adas_null_SetVPEPrms(&pUcObj->VPEPrm,
    407                                         MAX_NUMBER_OF_CHANNELS,
    408                                         CAPTURE_SENSOR_WIDTH,
    409                                         CAPTURE_SENSOR_HEIGHT,
    410                                         CAPTURE_SENSOR_WIDTH,
    411                                         CAPTURE_SENSOR_HEIGHT
    412                                        );
    
    In my  case, MAX_NUMBER_OF_CHANNELS == 1  ,
    CAPTURE_SENSOR_WIDTH=1280,
    CAPTURE_SENSOR_HEIGHT=720
  • Hi,

    Parameters look correct, Are you really doing scaling in the VPE link? If not, can you try setting scBypass = TRUE?
    Also, Please check what is connected as input to the VPE link?
    VPE link does not support RGB as input format, so previous link must provide YUV formts.
    Essentially check the input links parameters to the VPE.

    Rgds,
    Brijesh