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.

Questions about IPNC SWOSD



Hi all,

I use the appro ipnc2.6 dm368 reference design and met some problems.

1. The document of "Software_OSD_ON_DM36X_user_guide" shows the performance of SWOSD API with transparency diabled, it will take about CPU loading 10% and 5 msec effort on 1280x720, so assume framrate at 30fps originally it will be dropped into 26fps. but I test the ipnc2.6 (720P,H264@30fps) to enable the text-overlay, it doesn't change performance 30fps framerate at all. why?

2. I implement osd app refers to swosd api(alg_osd_ti.a) as a thread with capture and codec threads. There is a troubleshooting, if CPU loading gets high (ex. sd write or streamer process is busy),in all probability, frame will be missed to overlay. so any ideas on this?

3. How to know the behaviors on "SWOSD_MsgRecvHandler" api call and how to get more details(ex.edma working status), does appro support alg_osd_ti source code?

 

thank you and best regards,

Charles

  • Charles Hung said:

    1. The document of "Software_OSD_ON_DM36X_user_guide" shows the performance of SWOSD API with transparency diabled, it will take about CPU loading 10% and 5 msec effort on 1280x720, so assume framrate at 30fps originally it will be dropped into 26fps. but I test the ipnc2.6 (720P,H264@30fps) to enable the text-overlay, it doesn't change performance 30fps framerate at all. why?

    The datasheet/user guide talks about taking 5 msec if the bitmap to overlay is of the size of 1280x720. This means you want to copy the complete bitmap of that resolution on the video frame. What we use in IPNC Ref Design application is a much smaller bitmap that is overlaid on the video. Also, on DM365 we have enough headroom for H.264 encoding of 720P resolution that even additional time for OSD overlay would not result in drop of fps. We are running the system at 30fps, controlled at capture and hence the encoder thread has additional available time for each frame as it can run faster than 30fps.

    Charles Hung said:
    I implement osd app refers to swosd api(alg_osd_ti.a) as a thread with capture and codec threads. There is a troubleshooting, if CPU loading gets high (ex. sd write or streamer process is busy),in all probability, frame will be missed to overlay. so any ideas on this?

     In IPNC Ref Design, we take care of this situation. We dont allow the frame to be encoded until it has gone through SWOSD. Each operation (capture, encode and OSD) are happening in different threads but they have a synchronization mechanism. This means capture frame goes to OSD while encoder is working on previous output frame of OSD. If OSD is delayed, next frame to encoder would not be available.

    Charles Hung said:

    3. How to know the behaviors on "SWOSD_MsgRecvHandler" api call and how to get more details(ex.edma working status), does appro support alg_osd_ti source code?

    Can you check with your local TI contact if they can get you the source code for SWOSD? If they need information, you can ask them to contact me.

    Regards,

    Anshuman

    PS: Please mark this post as verified, if you think it has answered your question. Thanks.

     

  • Dear Anshuman,

    Thank you very much for your reply.

    About question #2, we were double check and take care the synchronization mechanism on our threads,

    but it still has possibilities to miss overlaying if cpu loading was getting high, 

    We hope to include the source code of swosd library to probe more details.

    We will contact our local TI FAE and ask for source code again. 

     

    Regards,

    Charles

  • Charles,

    Charles Hung said:

    About question #2, we were double check and take care the synchronization mechanism on our threads,

    but it still has possibilities to miss overlaying if cpu loading was getting high, 

    If you look at our code on DM36x IPNC Ref Design, we do not let the frame from capture thread queue into encoder thread till SWOSD is completed. So if CPU load is high and it cannot complete SWOSD operation within required time, it will delay the encoder. So there is no chance of getting a frame with missed OSD overlay.

    This is our implementation but you can implement in other ways as well.

    Regards,

    Anshuman

    PS: Please mark this post as verified, if you think it has answered your question. Thanks.