Quantcast
Channel: Embedded Software (Read Only)
Viewing all articles
Browse latest Browse all 25965

Forum Post: VoLIB Multichannel Memory Usage and Specific Module Implementations

$
0
0

Hello,

I am using several modules from VoLIB 2.1.0.1 in a voice processing path on a C6678. I'm running multiple channels for each core. I'm currently using TDU, TGE, ECU, and VAU. I have some questions regarding memory usage between each channel and some of the options for each module:

TDU:
1. What is the difference between the Lite and Full implementations? I don't see any references to these in the VoLIB documentation other than the memory requirements.

2. The memory requirements show that buffer 1 is a scratch buffer. Is there any way to know from the code which buffers are scratch and which are dedicated? Can it be assumed that the second buffer is always scratch and the other buffers are always dedicated?

3.  This post (http://e2e.ti.com/support/embedded/tirtos/f/355/t/230652.aspx) seems to suggest that there's a problem with CPT when sharing the scratch buffer, but I'm only using the TDU module for DTMF. My understanding is that the dedicated buffers will need to be allocated for each channel, but the scratch buffer can be shared between channels, but the buffers are listed as per instance buffers so is this correct? Is there any specific use case where all the per instance buffers can be shared?

TGE: 

1. The documentation on TGE shows only one per instance buffer of size 32 bytes. The TGE demo code has a tgeHeap array of size 512 bytes. It looks like this array is used for allocating the 32 byte buffer so the array could be reduced to size 32 bytes. Is this correct? Would there be any problems with changing this to use malloc() instead of the fixed array?

2. The buffer is listed as not volatile. Will problems occur if it is shared between channels and the configuration is set each time TGE runs? It looks like this requires a call to tgeInit() so it would be reinitialized each time it is used, but is it actually saving anything from the previous use? Since it is only generating tones I don't see any reason for it to use the same instance each time it is used other than to save MIPS by not having to reinitialize each time if the same tone and volume are used. 

VAU: 

1. What are the differences between the XDAIS and ECO implementations? I don't see any reason to use XDAIS since ECO has lower memory and MIPS requirements. Is there something I'm missing here?

2. The demo code appears to use its own heap implementation. Would there be any problems with changing it to use malloc() calls instead? 

3. Similar to question 3 for TDU, the documentation lists per instance buffers, but one buffer is listed as scratch. Can the scratch buffer be shared by all channels and only the dedicated buffers be allocated per channel? Is there any specific use case where the dedicated buffers can be shared as well?

ECU:

1. Similar to above questions, ECU uses its own heap managment (it looks like it uses mhm functions) can these be replaced with malloc() and memalign() calls without any problems?

2. Again similar to above questions, the per instance buffers have scratch and dedicated buffers. Can the scratch buffers be shared between channels without problems? Are there any use cases where all of these per instance buffers can be shared between channels without problems?

Regards,

Chris Johnson

Signalogic


Viewing all articles
Browse latest Browse all 25965

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>