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.

TMS320DM8148: DM8127 DSP link fps drop problem

Part Number: TMS320DM8148

I'm developing some image algorithms on DM8127's C674x dsp.

I try to modify the swosd link and porting it to dsp to apply my methods but there are some problems that make the fps drop.

The links I created did not process any data. I just only use Task_sleep() to simulate the real processing time.

Here is the links:

cameraLink -> MCTNF -> VNF -> A_dspLink -> B_dspLink -> dup -> sclr ->...

A_dspLink sleeps about 8ms and B_dspLink is 10ms.

I found that if there was only B_dspLink (20ms), the fps was around 40fps.

Once I added A_dspLink, the fps became 30fps or lower, which was pretty weird.

Because when I combined the A_dspLink and B_dspLink together (18ms), the fps can reach around 40fps.

I guessed that if every link could maintain the low computing time, for example, all can lower than 33ms, the fps could also maintain 30fps or higher.

But this problem seems that what i guessed is wrong.

It seems that there are some relationship between the links and fps.

Is there any doc. or example can help me to understand this issue?

Thanks!

BR,

Weiyu Lee

  • Hello,

    What is the software release that you are using here?

    BR
    Margarita
  • I'm using IPNC RDK 3.8.

    Thanks!!

    BR,

    Weiyu Lee

  • Hello,

    I will notify the IPNC team for help.

    BR
    Margarita
  • Hi Lee,

    Please print the statistics of all links and check which link is skipping frame and share the logs.

    If possible then please share your link implementation of dsp links.

    Regards,

    Anuj

    Pathpartner Technology Pvt Ltd

  • Hi Anuj,

    Thanks for the information!

    After checking the status of every links, I found that muxLink didn't skip any frames but when I bypass it, the fps didn't drop.
    The muxLink's inputs are from the sclrLink dynamically, which depends on the encoders' resolution.

    for example, if the encoders' resolution are:
    1. 1080P 30fps H.264
    2. 720x480 30fps H.264
    3. 720x480 30fps MJPEG
    4. 720x480 30fps MJPEG

    There will be only 2 sclrLinks(1080P & 720x480) and I use the muxLink to duplicate the streams to the encoders. (2 inputs 4 outputs)
    The fps only drops when the number of encoders' resolution is less than 2,
    which means the more outputs muxLink duplicate, the more fps drops!

    If the 4 encoders' resolution are different, muxLink (4 inputs 4 outputs) does not affect the fps.
    Is that means the muxLink holding the buffers makes the fps drop?
    Is there any suggestion to improve it?

    Thank you very much!

    BR,

    Weiyu Lee

  • Hi Lee,

    Can you please share your usecase code.
    Please answer the following que
    1. How you are feeding mux input from sclr dynamically
    2. If the number of encoders' resolution is less than 2 ,what is the no of input and output for mux for both cases (1080p and 720*480)

    Suggestion:
    Use dup link after scaler for 720*480 resolution and feed mux with 4 input and get 4 output which will feed encoder and if you don't want any particular stream from encoder just disable that particular channel of encoder dynamically.

    Regards
    Anuj
  • Hi Anuj,

    Sorry for the late reply.

    After checking this issue carefully, I found that this problem is not only related to any single link.

    The first phenomenon I observed is caused by muxLink but after I bypass it. This problem still remains.

    I think this issue might be related to the "Timing" or the sync mechanism between the links.

    (1) If I tried to limit the frameList.numFrames <= 1 in my dsp links, fps drop issue can be solved.

    (2) After I replaced Task_sleep() as the real function which has the same computing time, (1)'s solution didn't work. Somehow, the next link cannot get the new data from the dsp links.

    (Additionally, every time the fps drops, it always stuck at 30fps, which is weird because the computing time is not consistent. It should not always be 30fps.)

    So I guess this might be also related to the cpu loading for the ddr bandwidth.

    Still, I don't know what the root cause is..

    Please give me some hint or suggestions about this issue, thank you!!

    BR,

    Weiyu Lee

  • Hi,

    Please share your usecase code and dsp link implementation. So that we can reproduce the error at our end.

    Regards,
    Anuj