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.

ARM DSP Parallel Execution in Codec Engine

Other Parts Discussed in Thread: OMAP3530

Hi,

1. Is it possible to achieve a parallel execution between ARM and DSP in Codec Engine Framework.

We are working on OMAP3530 Mistral EVM. It is observed that the ARM will wait until the VIDDEC2_process function returns from the DSP. So it is a sequential execution.

2.  Is it possible to achieve a parallel execution using threads? If so please suggest me an example.

3. The codec returns a 4:2:0 buffer for which the conversion is planned to be done in ARM. The display module expects the data in 4:2:2 UYVY format. The conversion is taking pretty long time if we put the conversion code (Software) in ARM side application.  Is there any hardware resizer option for conversion to 4:2:2?

Please suggest me the best way to have a better display. With the current framework, the decoder is giving the out buffer at a faster rate, but the 4:2:2 conversion is taking pretty long time(almost equivalent to decoding time), due to which I am not able to get a bettter display.

Thanks,

Ravi

 

  • ravidevroy said:
    1. Is it possible to achieve a parallel execution between ARM and DSP in Codec Engine Framework.

    We are working on OMAP3530 Mistral EVM. It is observed that the ARM will wait until the VIDDEC2_process function returns from the DSP. So it is a sequential execution.

    Certainly, the Codec Engine 2.10 and higher APIs contain asynchronous process calls, so that you can begin the processing and continue ARM work in the same code and than wait on the processing later so you would have:

    VIDDEC2_processAsync(...); //start DSP processing
    //some ARM code to run in parallel while the DSP works...
    VIDDEC2_processWait(...); //wait for DSP to finish processing

    These APIs are discussed in the Codec Engine documentation, for this particular case take a look at dvsdk_3_00_00_29\codec_engine_2_20_01\docs\html\group__ti__sdo__ce__video2___v_i_d_d_e_c2.html. However note the following from the 2.10 release notes:

    Release Notes said:
    Added "experimental" asynchronous API support. Some customers have requested support for asynchronous VISA APIs. This release provides that support - with "experimental" quality. That is, the APIs are supported, but compatibility in future releases may be broken or removed/replaced completely. Customers should feel free to use these APIs in products, but look for further guidance and roadmap advice from TI as the product lifecycle continues.

    So it is possible you may have to make code adjustements for future Codec Engine releases if you use these APIs.

    ravidevroy said:
    2.  Is it possible to achieve a parallel execution using threads? If so please suggest me an example.

    You could certainly use multiple threads to have the same effect, though for examples for this you probably want to look around the net a bit as this is sort of a generic thread question.

    ravidevroy said:
    3. The codec returns a 4:2:0 buffer for which the conversion is planned to be done in ARM. The display module expects the data in 4:2:2 UYVY format. The conversion is taking pretty long time if we put the conversion code (Software) in ARM side application.  Is there any hardware resizer option for conversion to 4:2:2?

    You should configure the codec to output 4:2:2 instead of the 4:2:0 buffer, all three demo video decode codecs included with the DVSDK (h.264, MPEG2, MPEG4) have the option to switch between 4:2:0 and 4:2:2 output, set your ChromaFormat parameter to XDM_YUV_422ILE as discussed in the codec user's guide. If this is a custom codec you may want to set up your codec to do the conversion from the DSP side as the TI codecs do, generally the DSP will do a more efficient job of such conversions than the ARM.

  • I did not get the parameter what you specified " XDM_YUV_422ILE as discussed in the codec user's guide".   Please let me know the codec user guide which you specified ( algorith creator, server intgrator or application developers guide).

    Thanks and Regards,

    Raidev roy