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.

TDA2HG: What is DSSM2M maximum output fps

Part Number: TDA2HG

Hi,

My visionSDK version: 3.08.

When I test DSSM2M link on 60 fps, it droped a lot.

 [HOST] [IPU2  ]    255.509760 s:  [ DSSM2MWB ] Link Statistics,^M
 [HOST] [IPU2  ]    255.509821 s:  ******************************^M
 [HOST] [IPU2  ]    255.510126 s:  ^M
 [HOST] [IPU2  ]    255.510156 s:  Elapsed time       = 2282 msec^M
 [HOST] [IPU2  ]    255.510248 s:  ^M
 [HOST] [IPU2  ]    255.510278 s:  New data Recv      =  60.3 fps^M
 [HOST] [IPU2  ]    255.510370 s:  Get Full Buf Cb    =  22.78 fps^M
 [HOST] [IPU2  ]    255.510431 s:  Put Empty Buf Cb   =  22.78 fps^M
 [HOST] [IPU2  ]    255.510522 s:  Driver/Notify Cb   =  22.78 fps^M
 [HOST] [IPU2  ]    255.510583 s:  ^M
 [HOST] [IPU2  ]    255.510644 s:  Input Statistics,^M
 [HOST] [IPU2  ]    255.510675 s:  ^M
 [HOST] [IPU2  ]    255.510736 s:  CH | In Recv | In Drop | In User Drop | In Process ^M
 [HOST] [IPU2  ]    255.510797 s:     | FPS     | FPS     | FPS          | FPS        ^M
 [HOST] [IPU2  ]    255.510919 s:  -------------------------------------------------- ^M
 [HOST] [IPU2  ]    255.511010 s:   0 |  60. 3      0. 0      0. 0          22.78 ^M
 [HOST] [IPU2  ]    255.511132 s:  ^M
 [HOST] [IPU2  ]    255.511163 s:  Output Statistics,^M
 [HOST] [IPU2  ]    255.511224 s:  ^M
 [HOST] [IPU2  ]    255.511254 s:  CH | Out | Out     | Out Drop | Out User Drop ^M
 [HOST] [IPU2  ]    255.511346 s:     | ID  | FPS     | FPS      | FPS           ^M
 [HOST] [IPU2  ]    255.511407 s:  --------------------------------------------- ^M
 [HOST] [IPU2  ]    255.511498 s:   0 |  0     22.78    37.24      0. 0 ^M
 [HOST] [IPU2  ]    255.511620 s:  ^M
 [HOST] [IPU2  ]    255.511681 s:  [ DSSM2MWB ] LATENCY,^M
 [HOST] [IPU2  ]    255.511712 s:  ********************^M
 [HOST] [IPU2  ]    255.511773 s:  Local Link Latency     : Avg =   7538 us, Min =   7411 us, Max =   8143 us, ^M
 [HOST] [IPU2  ]    255.511925 s:  Source to Link Latency : Avg =   7975 us, Min =   7747 us, Max =   8571 us, ^M

I checked DssM2mWbLink_CreateParams, and there is no limited of fps. 

And I checked IPU2 CPU loading. It's not 100%

 [HOST] [IPU2  ]    255.360824 s:  CPU [IPU2   ] Statistics, ^M
 [HOST] [IPU2  ]    255.360916 s:  ************************* ^M
 [HOST] [IPU2  ]    255.360977 s:  ^M
 [HOST] [IPU2  ]    255.361007 s:  LOAD: CPU: 23.2% HWI: 4.0%, SWI:2.1%, Low Power: 134.5% ^M
 [HOST] [IPU2  ]    255.361160 s:  ^M
 [HOST] [IPU2  ]    255.361221 s:  LOAD: TSK: SYSTEM_MSGQ         : 0.2% ^M
 [HOST] [IPU2  ]    255.361617 s:  LOAD: TSK: SYSTEM_IPU1_150995071: 0.6% ^M
 [HOST] [IPU2  ]    255.361739 s:  LOAD: TSK: DUP0                : 0.8% ^M
 [HOST] [IPU2  ]    255.361831 s:  LOAD: TSK: IPC_IN_0            : 0.1% ^M
 [HOST] [IPU2  ]    255.362014 s:  LOAD: TSK: IPC_OUT_0           : 2.2% ^M
 [HOST] [IPU2  ]    255.362105 s:  LOAD: TSK: IPC_OUT_1           : 0.7% ^M
 [HOST] [IPU2  ]    255.362593 s:  LOAD: TSK: DISPLAY0            : 0.1% ^M
 [HOST] [IPU2  ]    255.362715 s:  LOAD: TSK: CAPTURE             : 1.1% ^M
 [HOST] [IPU2  ]    255.362807 s:  LOAD: TSK: VPE0                : 4.1% ^M
 [HOST] [IPU2  ]    255.363173 s:  LOAD: TSK: ALGORITHM0          : 0.6% ^M
 [HOST] [IPU2  ]    255.363295 s:  LOAD: TSK: DSSM2MWB0           : 0.1% ^M
 [HOST] [IPU2  ]    255.363386 s:  LOAD: TSK: STAT_COLL           : 3.8% ^M
 [HOST] [IPU2  ]    255.363478 s:  LOAD: TSK: MISC                : 2.7% ^M

My usecase chains is below:

So is there any configuration I missed?

Thanks a lot!

  • Hi,

    Can you share the complete logs with statistics?

    Thanks

    Gaviraju

  • Hi Gaviraju,

    I attached my log:system.log.tar.gz

    And at 120s I switch DSSM2M input vdeo from 10fps to 60fps. And you can check this log:

  • Hi,

    Increase the O/P buffer in  DSSM2MWB Link & try again.

    Thanks

    Gaviraju

  • Hi Gaviraju,

    What value should I increase? I used "8" and output fps is not change.

    And do you think display link also have problem? Since it will block data stream from DSSM2M link.

    Thanks!

  • Hi,

    Can you try with "16"? & let me know the status.

    Thanks

    Gaviraju

  • Hi Gaviraju,

    "16" is useless also.

    I found it should block by display link.

    I use log to calculate "DisplayLink_drvFvidCb" spend time is around 34 ms. So did I miss some configuration of display link?

    Thanks!

  • Hi 

    Could you tell me how to config DSSM2MWB link, my link&chain is the same to yours. But I do not know how to config.

    when there is no DSSM2MWB,my data flow is data_source -> VID1 -> LCD3 -> DPI3.

  • Hi,

    Please refer to the below usecase:

    /vision_sdk/apps/src/hlos/adas/src/usecases/avbrx_sv_display_avbtx/chains_avbrxSrvDisplayAvbtx.c

    Thanks

    Gaviraju

  • Hi Gaviraju,

    Any Update?

    Thanks!

  • Hi Gaviraju,

    I refered the usecase, but it doesnot work.  my Vision SDK is 3.0.8

    My usecase chains is below:

     my display link flow is VID1 -> LCD3 ->DPI3,so I tried the DDSM2MWB flow is VID2 ->LCD2->WB(or VID2 ->WB),but I can get video data,but cannot get the right YUV data. 

    If no DSSM2MWB, the picture is the same as up.

    my DSSM2MWB link is set as below,

    ```

    /* DSS M2M WB link */
    pUcObj->DssM2mWbPrm.enableOut = TRUE;
    pUcObj->DssM2mWbPrm.wbInNode = DSSM2MWBLINK_DISPC_WB_IN_NODE_VID2; //or DSSM2MWBLINK_DISPC_WB_IN_NODE_LCD2
    pUcObj->DssM2mWbPrm.numInPipeLines = 1U;
    pUcObj->DssM2mWbPrm.inPipelines[0U] = DSSM2MWBLINK_DISPC_PIPE_VID2;

    /* input pipeline parameters */
    pUcObj->DssM2mWbPrm.inTarWidth[0U] = SGX_OUTPUT_FRAME_WIDTH;
    pUcObj->DssM2mWbPrm.inTarHeight[0U] = SGX_OUTPUT_FRAME_HEIGHT;
    pUcObj->DssM2mWbPrm.inPosX[0U] = 0U;
    pUcObj->DssM2mWbPrm.inPosY[0U] = 0U;

    /* The overlay width and height are used only if 'wbInNode' is overlay node */
    pUcObj->DssM2mWbPrm.ovlyWidth = SGX_OUTPUT_FRAME_WIDTH;
    pUcObj->DssM2mWbPrm.ovlyHeight = SGX_OUTPUT_FRAME_HEIGHT;

    /* Output parameters */
    /* Input format is ARGB32 and output format is YUV420SP_UV */
    //pUcObj->DssM2mWbPrm.outDataFmt = SYSTEM_DF_YUV420SP_UV;
    pUcObj->DssM2mWbPrm.outDataFmt = SYSTEM_DF_YUV422I_YUYV;
    pUcObj->DssM2mWbPrm.outWidth = SGX_OUTPUT_FRAME_WIDTH;
    pUcObj->DssM2mWbPrm.outHeight = SGX_OUTPUT_FRAME_HEIGHT;

    ```

  • Hi,

    But why do you require DSSM2M link? Is it just issue due to DSSM2M link? 

    Rgds,

    Brijesh

  • Hi  AHTOH MA,

    Would you please ask a new question?

    Hi Brijesh,

    Seems we deviate the topic now. I attached my question again:

    Hi Gaviraju,

    "16" is useless also.

    I found it should block by display link.

    I use log to calculate "DisplayLink_drvFvidCb" spend time is around 34 ms(actually 42ms). So did I miss some configuration of display link?

    Thanks!

    And my displayctrl configuration is below:

            pPrm->deviceId = DISPLAYCTRL_LINK_USE_LCD;
            pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD1;
            pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI1_OUTPUT;
            pVInfo->vencOutputInfo.vsPolarity    =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
            pVInfo->vencOutputInfo.hsPolarity    =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
    
            /* Below are of dont care for EVM LCD */
            pVInfo->vencOutputInfo.fidPolarity      =   SYSTEM_DCTRL_POLARITY_ACT_HIGH;
            pVInfo->vencOutputInfo.actVidPolarity   =   SYSTEM_DCTRL_POLARITY_ACT_HIGH;
    
            pVInfo->mInfo.standard                  =   SYSTEM_STD_CUSTOM;
            pVInfo->mInfo.width                     =   displayWidth;
            pVInfo->mInfo.height                    =   displayHeight;
            pVInfo->mInfo.scanFormat                =   SYSTEM_SF_PROGRESSIVE;
            pVInfo->mInfo.pixelClock                =   74500U;
            pVInfo->mInfo.fps                       =   30U;
            pVInfo->mInfo.hBackPorch                =   80U;
            pVInfo->mInfo.hSyncLen                  =   62U;
            pVInfo->mInfo.hFrontPorch               =   48U;
            pVInfo->mInfo.vBackPorch                =   12U;
            pVInfo->mInfo.vSyncLen                  =   35U;
            pVInfo->mInfo.vFrontPorch               =   6U;
            pVInfo->vencDivisorInfo.divisorLCD      =   1;
            pVInfo->vencDivisorInfo.divisorPCD      =   1;
    
            pVInfo->vencOutputInfo.dataFormat       =   SYSTEM_DF_BGR16_565;
            pVInfo->vencOutputInfo.dvoFormat        =
                                        SYSTEM_DCTRL_DVOFMT_GENERIC_DISCSYNC;
            pVInfo->vencOutputInfo.videoIfWidth     =   SYSTEM_VIFW_16BIT;
    
            pVInfo->vencOutputInfo.pixelClkPolarity =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
            pVInfo->vencOutputInfo.aFmt             =   SYSTEM_DCTRL_A_OUTPUT_MAX;

    And we just followed the documents "The Implementation of YUV422 Output for SRV" to transfer YUV422 video into dss. So I guess we may still miss something on this configuration.

    Thanks!

  • Hi,

    The callback function "DisplayLink_drvFvidCb" is taking approximately 100us in our use case with an HDMI display. I'm also suspecting some issue in the display parameter settings for the custom display. I will check with an expert & get back.

    Thanks

    Gaviraju

  • Hi Tim,

    What is your display resolution? I see you are using 190x53 blanking size and 74.5MHz pclk. But it is not clear, what is the display resolution?

    Rgds,

    Brijesh

  • Hi Brijesh,

    resolution is 1920*720.

  • Problem should be DisplayLink configuration problem.

  • Hi,

    It seems DSSM2M link is receiving frames correctly, but due to unavailability of output buffers, it is running slow. 

    Display seems to be running at 45fps, but your chain is running is 60fps. So eventually all buffers will be held in display link and entire chain will run at the display fps..  You need to run either weston at same rate as display, or increase display frame rate to run at same rate as weston..

    Rgds,

    Brijesh

  • Hi Brijesh,

    Yes, increase display frame rate is what I want. But how... I think 74.5MHz pclk is already enough. 

    Refer to "The Implementation of YUV422 Output for SRV" "2.1 Emded Sync Output", my board hardware scheme only connect TDA2HG VOUT1_CLK with UB933's PCLK pin and nothing else. But I don't know how to increase display frame rate on visionSDK.

    BTW, Display Link only have 22.3fps.

    Thanks!

  • Hi Tim,

    Display fps matches with the calculation, if you are using 8bit output interface, the display fps would be around 22.5fps. 

    If you want to increase display fps, you need to either increase pclk or reduce the resolution. I am not sure what is the limit in UB933. But if it supports higher pclk, can you try increasing it?

    Rgds,

    Brijesh

  • Hi Brijesh,

    Thanks for your quick reply.

    Let's verify PCLK calculation: 1920 x 720 x 60fps x 2bytes = 165888000 Hz. Right?

    I change my configure below:

            pPrm->deviceId = DISPLAYCTRL_LINK_USE_LCD;
            pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD1;
            pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI1_OUTPUT;
            pVInfo->vencOutputInfo.vsPolarity    =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
            pVInfo->vencOutputInfo.hsPolarity    =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
    
            /* Below are of dont care for EVM LCD */
            pVInfo->vencOutputInfo.fidPolarity      =   SYSTEM_DCTRL_POLARITY_ACT_HIGH;
            pVInfo->vencOutputInfo.actVidPolarity   =   SYSTEM_DCTRL_POLARITY_ACT_HIGH;
    
            pVInfo->mInfo.standard                  =   SYSTEM_STD_CUSTOM;
            pVInfo->mInfo.width                     =   displayWidth;
            pVInfo->mInfo.height                    =   displayHeight;
            pVInfo->mInfo.scanFormat                =   SYSTEM_SF_PROGRESSIVE;
            pVInfo->mInfo.pixelClock                =   165888U;
            pVInfo->mInfo.fps                       =   60U;
            pVInfo->mInfo.hBackPorch                =   80U;
            pVInfo->mInfo.hSyncLen                  =   62U;
            pVInfo->mInfo.hFrontPorch               =   48U;
            pVInfo->mInfo.vBackPorch                =   12U;
            pVInfo->mInfo.vSyncLen                  =   35U;
            pVInfo->mInfo.vFrontPorch               =   6U;
            pVInfo->vencDivisorInfo.divisorLCD      =   1;
            pVInfo->vencDivisorInfo.divisorPCD      =   1;
    
            pVInfo->vencOutputInfo.dataFormat       =   SYSTEM_DF_BGR16_565;
            pVInfo->vencOutputInfo.dvoFormat        =
                                        SYSTEM_DCTRL_DVOFMT_GENERIC_DISCSYNC;
            pVInfo->vencOutputInfo.videoIfWidth     =   SYSTEM_VIFW_16BIT;
    
            pVInfo->vencOutputInfo.pixelClkPolarity =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
            pVInfo->vencOutputInfo.aFmt             =   SYSTEM_DCTRL_A_OUTPUT_MAX;

    But problem still, display only have 22.85fps

  • Sorry, after I checked UB933, seems PCLK maximum frequency is 100MHz. So I slow down fps to 30 and pclk as 82944 KHz, now it increase to 25.6fps. But it not I expected. Why it still drop 4.4fps?

            pPrm->deviceId = DISPLAYCTRL_LINK_USE_LCD;
            pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD1;
            pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI1_OUTPUT;
            pVInfo->vencOutputInfo.vsPolarity    =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
            pVInfo->vencOutputInfo.hsPolarity    =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
    
            /* Below are of dont care for EVM LCD */
            pVInfo->vencOutputInfo.fidPolarity      =   SYSTEM_DCTRL_POLARITY_ACT_HIGH;
            pVInfo->vencOutputInfo.actVidPolarity   =   SYSTEM_DCTRL_POLARITY_ACT_HIGH;
    
            pVInfo->mInfo.standard                  =   SYSTEM_STD_CUSTOM;
            pVInfo->mInfo.width                     =   displayWidth;
            pVInfo->mInfo.height                    =   displayHeight;
            pVInfo->mInfo.scanFormat                =   SYSTEM_SF_PROGRESSIVE;
            pVInfo->mInfo.pixelClock                =   82944U;
            pVInfo->mInfo.fps                       =   30U;
            pVInfo->mInfo.hBackPorch                =   80U;
            pVInfo->mInfo.hSyncLen                  =   62U;
            pVInfo->mInfo.hFrontPorch               =   48U;
            pVInfo->mInfo.vBackPorch                =   12U;
            pVInfo->mInfo.vSyncLen                  =   35U;
            pVInfo->mInfo.vFrontPorch               =   6U;
            pVInfo->vencDivisorInfo.divisorLCD      =   1;
            pVInfo->vencDivisorInfo.divisorPCD      =   1;
    
            pVInfo->vencOutputInfo.dataFormat       =   SYSTEM_DF_BGR16_565;
            pVInfo->vencOutputInfo.dvoFormat        =
                                        SYSTEM_DCTRL_DVOFMT_GENERIC_DISCSYNC;
            pVInfo->vencOutputInfo.videoIfWidth     =   SYSTEM_VIFW_16BIT;
    
            pVInfo->vencOutputInfo.pixelClkPolarity =   SYSTEM_DCTRL_POLARITY_ACT_LOW;
            pVInfo->vencOutputInfo.aFmt             =   SYSTEM_DCTRL_A_OUTPUT_MAX;

  • Hi Tim,

    Can you try with 98MHz pixel clock? It should give approximately 30fps for 1920x720 resolution.

    Rgds,

    Brijesh

  • Hi Tim,

    The calculation of pixel clock in your case is  (1920 + 190) x (720 + 53) x 30fps x 2bytes ~= 98MHz.

    Rgds,

    Brijesh