AnsweredAssumed Answered

Poor performance on convolution reverb

Question asked by emi.rein on Dec 11, 2013
Latest reply on Jun 10, 2015 by haweneu



I have ported a convolution reverb application to the SHARC 21469 EZ-Kit Light board. The application uses the well-known partitioned overlap-save algorithm as described by Armelloni et al. "Implementation of real-time partitioned convolution on a DSP board" (2003); they used a 21161N EZ-Kit Light. The application was developed in VisualStudio C# on a PC and runs very well on PC's, except for too long latency times. I have tested the program on the 21469 using some test files and got the same results as with the PC version, so I am confident that no errors are left in the algorithm.


However, the performance on the 21469 is poor and erratic. When 8 blocks of 256 samples are handled, the statistical profiler shows about 10% execution in blockProcess_Audio and about 88% in Main and the output is mostly undistorted. This sometimes also holds for 16 blocks, but mostly the output is distorted then. When 32 blocks are handled sometimes one or more "Processing too long" messages are shown and the output is distorted. Then the profiler shows 32% execution in the _Audio function and 64% in Main. So it looks to me that the core has sufficient power to handle more blocks.


Please find attached an example program, which consists of the example "21469 AD1939 Block-Based Talkthru 48 kHz" in which the overlap-save algorithm is present in the blockProcess_Audio function. I left out the part with large blocks, only uniform partioning with small blocks of 256 samples has been used. Please would you try whether you can reproduce this erratic behaviour. The number of blocks is set in line 70 of main.


Thank you for your help.