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.

Problems with Null link that comes after Integral Image algorithm link

Hello everyone,

I have a simple use-case NullSrc (A15)-> Alg_IntegralImage(DSP1) ->Null (IPU1_0). I am sending fixed number of video frames (YUV420SP_UV) to NullSrc, calculate Integral image (only first buffer of video frames is used in order to work with grayscale image) and then I want to use NULL_LINK_COPY_TYPE_NONE mode of Null link in order to write my callback function to save processed data somewhere. I haven't implemented callback function yet, but I wanted to place it inside NullLink_drvDumpFrames function like one of else if cases.

Running it, without callback function implemented, I got "UTILS: MDMA ERROR - invalid memory access in DSP!!!" error.

I had a suspicion that maybe Null link can't support amount of data that comes from Integral Image algo, so my debugging was pointed to Null link. I figured out that if condition  (pObj->createArgs.dumpDataType > 0U) in NullLink_drvDumpFrames function in nullLink_tsk.c is not satisfied, so actually it wouldn't ever come to the else case with callback function. 

What could be a reason for this issues? Could it be something with memory allocation for input/output buffers for links in use-case?

I am not clear what type of data is output of integral image, if it gets video buffer as input?

I am working on platform with TDA2x soc, VSDK 2.10.

BR,

Jho.

  • Hi Jho,

    There are many threads on similar issue:
    e2e.ti.com/.../598936
    e2e.ti.com/.../2415899
    e2e.ti.com/.../2352758
    e2e.ti.com/.../2102704
    Can you go through them and see if you find the solution.

    Regards,
    Rishabh
  • Hello Jho,

    For MDMA error, please refer to threads Rishabh described above. The error you are seeing is not related to NULL link as this is not running on the DSP.

    I would recommend you to
    1. first get NullSrc (A15)-> Null (IPU1_0) working. Basically confirm what you send via network is written on the SD card. Here you can add you callback functions.
    2. second proceed with NullSrc (A15)-> Alg_IntegralImage(DSP1) ->Null (IPU1_0), here check integral image is written in SD.
  • Hi Rishabh,

    I went through these examples before I posted a question and they were not helpful for me.
    I am using a part of existing complex use-case. So, I took NullSrc and algorithm integral image from another use-case (that was already made and works with no problems), and instead of next link that goes after Alg_integralImage in original use-case I have put Null link just to end my use-case. That's why I am not confident with Null link here.

    BR,
    Jho.
  • Hi Prasad,

    I am using a part of existing complex use-case. So, I took NullSrc and algorithm integral image from another use-case (that was already made and works with no problems), and instead of next link that goes after Alg_integralImage in original use-case I have put Null link just to end my use-case. That's why I am not confident with Null link here.

    I will try to do it in these steps now.

    BR,
    Jho.
  • Hi Jho,

    Can you please let us know the results of experiments as suggested by Prasad. Thanks.

    Regards,
    Rishabh
  • Hi Rishabh and Prasad,

    I have made NullSrc (A15)-> Null (IPU1_0) Use-Case, with callback function implemented to write received files to SD card. It works fine, on SD card is written exactly what was send with NullSrc.

    When I add algorithm there comes back this error "Failed to get empty output buffer.". Function AlgorithmLink_getEmptyOutputBuffer (in algPlugin file) returns status SYSTEM_LINK_STATUS_SOK first two to three times, but after that status returned by this function changes and then I am starting to get mentioned error.

    BR,
    Jho.
  • Hi Jho,

    It looks like your algorithm needs more time to process the buffer. Can you check what is time taken by the algorithm and time when you call getEmptyBuffer API. Both of them should match.

    Regards,
    Rishabh