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.

Second channel cutting when REISZER OVERFLOW OCCURED

Expert 1840 points

Hi all,

I use ipnc3.5. Our Camera is working normally, but whenever the error REISZER OVERFLOW OCCURED happen the D1 (second stream) was cut. It look like the resizer B didn't work correctly after ISS reset. Please watch 2 below image for the detail.

I looked through the issdrv_captureApi.c and Int32 Iss_captResetAndRestart(Iss_CaptOverFlowStatus * overFlowStatus) function. However, I couldn't figure out what happen here.

Thanks  a lot.

  • Hello,

    I notified the IPNC team to help here.

    Best Regards,

    Margarita

  • Hi,

    The function Iss_captResetAndRestart() is replica of the function Iss_captCreate().
    When resizer overflow occurs we need to reset the complete ISP.

    Can you print the values of 'rszB_reg->RZB_V_DIF' and 'rszB_reg->RZB_H_DIF' at the end of the Iss_captResetAndRestart() function?

    regards,
    Anand

  • Hi,

    Thank you very much for your reply. This is log for two values which you mentioned.

     [m3vpss ] VIDEO IN - Reset: rszB_reg->RZB_V_DIF = 256; rszB_reg->RZB_H_DIF = 256; isif_reg->PPLN = 1280; isif_reg->LPFR = 720

    regards, 

  • Hi,

    It looks like you have printed the addresses of 'rszB_reg->RZB_V_DIF' and 'rszB_reg->RZB_H_DIF'.

    Can you add the below print function at the end of Iss_captResetAndRestart()?

    Vps_printf("rszB_reg->RZB_V_DIF = %d,rszB_reg->RZB_H_DIF = %d\n",rszB_reg->RZB_V_DIF,rszB_reg->RZB_H_DIF);

    regards,

    Anand

  • Hi,

    I am sorry, I made a mistake.

     [m3vpss ] VIDEO IN - Reset: rszB_reg->RZB_V_DIF = 256; rszB_reg->RZB_H_DIF = 256; isif_reg->PPLN = 1280; isif_reg->LPFR = 720

    regards,

  • Hi,

    The settings rszB_reg->RZB_V_DIF = 256 and rszB_reg->RZB_H_DIF = 256 means that the Resize ration is 1 and Resizer B is not doing any resizing.

    Can you print the same values in Iss_captCreate() fn.

    Can you pl.check the following points?

    • Is ''rszBSetOutConfig()' called in 'Iss_captResetAndRestart()'.If yes then print the values of 'pObj->createArgs.scParams[0].inWidth','pObj->createArgs.scParams[0].inHeight','pConfigSizes->nOutSizeBX' and 'pConfigSizes->nOutSizeBY'.
    • What is the sensor used?
    • Does it hit the 'rszA_reg->RZA_V_DIF = 256;' statement anywhere in the 'Iss_captResetAndRestart()' fn?

    regards,

    Anand

  • Hi,

    - this is log in Iss_captCreate() fn: [m3vpss ] VIDEO IN - create: rszB_reg->RZB_V_DIF = 256; rszB_reg->RZB_H_DIF = 256

    ''rszBSetOutConfig()' is called in 'Iss_captResetAndRestart()'. I printed out the value which you mentioned:

    [m3vpss ] VIDEO IN - Reset: rszB_reg->RZB_V_DIF = 256; rszB_reg->RZB_H_DIF = 256; isif_reg->PPLN = 1280; isif_reg->LPFR = 720
    [m3vpss ] VIDEO IN - Reset: pObj->createArgs.scParams[0].inWidth = 1280; pObj->createArgs.scParams[0].inHeight = 720; pConfigSizes->nOutSizeBX = 720; pConfigSizes->nOutSizeBY = 480

     

    - We used the IMGS_OMNIVISION_OV10630 sensor, but I don't think the reason came from sensor type because everything is working normal now, and the main stream video data has no problem.

    - yes, this statement rszA_reg->RZA_V_DIF = 256; state many place in  Iss_captResetAndRestart() and the value of it was fixed.

     

    regards,

  • Hi,

    In my code i see that for IMGS_OMNIVISION_OV10630 for the resizer B the following settings are used:

     

    rszB_reg->RZB_V_DIF = 380; //1280/720*256;
    rszB_reg->RZB_H_DIF = 450; //720/480*256;

    Pl. find the code attached.

    Can you compare it with yours?

    regards,

    Anand5710.issdrv_captureApi.c

     

  • Hi,

    what you have already point out is correct. this problem came from wrong value of rszB_reg->RZB_H_DIF and rszB_reg->RZB_V_DIF. In our previous code, we applied the formula which I saw somewhere in TI's code as below

    rszB_reg->RZB_H_DIF = (isif_reg->PPLN / 720 * 256); // isif_reg->PPLN = 1280
    rszB_reg->RZB_V_DIF = (isif_reg->LPFR  / 480 * 256); // isif_reg->LPFR = 720

    the problem is the order of * and / is not suitable. I correct them to 

    rszB_reg->RZB_H_DIF = (isif_reg->PPLN * 256) / 720; // isif_reg->PPLN = 1280
    rszB_reg->RZB_V_DIF = (isif_reg->LPFR * 256) / 480; // isif_reg->LPFR = 720

    I really appreciate your help. You saved my life.