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.

Update3[Solved]DSP SWOSD failure in DVRRDK 4.0 for DM8168

I met an issue with swOSD which will be blocked all the time.

It is in function SWOSD_TI_algBlendFrame, the first time calling SWOSD_TI_DMA_FastWait will be blocked.

It seems the EDMA didn't finish the operation.

What should do to debug and solve this issue?

Thanks!

Update:

I have found the root cause.

I set maxWidth to 1920. In SWOSD_open, it will return NULL!

It skipped calling DSKT2_createAlg and RMAN_assignResources.

But SWOSD_open with return value of NULL will be treated as successful.

So no EDMA resources had been assigned to SWOSD.

I change maxWidth to 720, EDMA worked just fine.

But another problem, no OSD logo showed after processing.

Update2:

In AlgLink_OsdWindowPrm, if transperencyEnable is FALSE,

OSD logo wouldn't be showed, or would be showed.

Why?

Update3:

The memory pointed by pLineBufAlp in SWOSD_TI_algBlendFrame will be zero in default.

If transperencyEnable is TRUE, The memory pointed by pLineBufAlp will be set in SWOSD_TI_algBlendLineYuv2Yuv or SWOSD_TI_algBlendLineRgb2Yuv.

So if transperencyEnable is FALSE, all alpha will be zero, and no logo after blending.

In SWOSD_TI_algBlendFrame I initialize the memory pointed by pLineBufAlp,

the logo will be showed when transperencyEnable is FALSE.

  • Which usecase are you seeing this issue on ? Pls print source, dest address and size of the xfer when hang happens. Also do a memcmp between source and dest buffers and check if really dma xfer did not happen.

  • Hi, Narayanan

    Thanks for you reply.

    I have confirmed that the EDMA haven't been triggered.

    I do memset with 0xff before doing SWOSD_TI_algBlendFrame.

    After blocking, I check the data are 0xff as before.

    I print the some args for SWOSD_TI_algBlendFrame as follows:

    SWOSD_TI_algBlendFrame:508 pInA:0xaf049480 pInB:0xbf7a8680 pOut:0xaf049480 width:224 height:30 lineOffsetA:1280 lineOffsetB:224 lineOffsetOut:1280

    They are right. Here is my usecase:

                       ALG_LINK(only enable OSD)
                               ^
                               |
                               v
                       DSP-IPC-FRAME-IN
                               ^
                               |
                               v
    720P(YUV420SP_UV)                                    YUV422I
    VIN1-------------->VPSS-IPC-FRAME-OUT---------->SWMS--------->DISPLAY

    I don't modify any code with SWOSD sources.

  • All addresses and length look valid. Is the call to function SWOSD_TI_DMA_Fast2D1D hanging ? If yes pls print value of pLineBufA and pLineBufB passed to this function.