<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nRFready audio compression/transmission resource profiling</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/30316/nrfready-audio-compression-transmission-resource-profiling</link><description>Hi there, 
 
 I have an nRFready Smart Remote 3 in front of me to evaluate for development of an upcoming product. I&amp;#39;ve had a look around the forums and documentation, but haven&amp;#39;t found too much detail as yet. Is there any information available on resource</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 15 Feb 2018 13:57:36 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/30316/nrfready-audio-compression-transmission-resource-profiling" /><item><title>RE: nRFready audio compression/transmission resource profiling</title><link>https://devzone.nordicsemi.com/thread/120990?ContentTypeID=1</link><pubDate>Thu, 15 Feb 2018 13:57:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:999389c0-0da8-4837-8944-7ba30acb8e1b</guid><dc:creator>Filip Kubicz</dc:creator><description>&lt;p&gt;I think these details&amp;nbsp;are&amp;nbsp;not described in documentation simply because there&amp;nbsp;too many&amp;nbsp;factors that have impact.&amp;nbsp;I suggest you&amp;nbsp;to run the firmware, connect to logger and observe the benchmark values.&lt;/p&gt;
&lt;p&gt;Also you will find a lot of information in the code. It&amp;#39;s well structured and modular. First, have a look at configuration files (&lt;em&gt;sr3_config_pca20023.h&lt;/em&gt; and &lt;em&gt;sr3_config_pca63519.h&lt;/em&gt; - open in Keil to have a convenient feature option tree).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFready audio compression/transmission resource profiling</title><link>https://devzone.nordicsemi.com/thread/120988?ContentTypeID=1</link><pubDate>Thu, 15 Feb 2018 13:38:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:956c7e34-6214-4ad3-8820-2315ac470ca8</guid><dc:creator>Tom</dc:creator><description>&lt;p&gt;This is all really useful information. Thanks Filip. Is this documented somewhere? I haven&amp;#39;t found too much info in the form of whitepapers/implementation considerations. The only thing I&amp;#39;ve dug up is the User Guide and the Firmware Documentation, but didn&amp;#39;t see it in there.&lt;/p&gt;
&lt;p&gt;Thanks again for having all the details,&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFready audio compression/transmission resource profiling</title><link>https://devzone.nordicsemi.com/thread/120987?ContentTypeID=1</link><pubDate>Thu, 15 Feb 2018 13:23:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:22cb2e09-b95c-495c-8221-7b4eaa61deba</guid><dc:creator>Filip Kubicz</dc:creator><description>&lt;p&gt;Memory consumption depends on codec configuration, frame length etc.&lt;br /&gt;&lt;br /&gt;Some information about RAM usage:&lt;br /&gt;Base stack usage for Smart Remote 3 is 2kB. It is enough for ADPCM.&lt;br /&gt;BroadVoice needs 6kB additional stack.&lt;br /&gt;Opus CELT uses 7kB for encoder state and 19.5kB of additional stack.&lt;br /&gt;Opus SILK uses 11kB for encoder state and 25kB of &lt;span&gt;additional&amp;nbsp;&lt;/span&gt;stack.&lt;br /&gt;&lt;br /&gt;For ROM usage I don&amp;#39;t have the values at hand. You can&amp;nbsp;look at the size of compiled firmware&amp;nbsp;or study the map to check it.&lt;br /&gt;&lt;br /&gt;As for bitrates that need to be transmitted:&lt;br /&gt;- ADPCM 67kb/s&lt;br /&gt;- BroadVoice 32 kb/s&lt;br /&gt;- Opus - it all depends on configuration, but generally significantly less than&amp;nbsp;the&amp;nbsp;codecs mentioned above. VBR mode can be constrained not to surpass a certain value.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFready audio compression/transmission resource profiling</title><link>https://devzone.nordicsemi.com/thread/120959?ContentTypeID=1</link><pubDate>Thu, 15 Feb 2018 11:37:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:24ec4793-99b6-4645-87fb-6467baf4b760</guid><dc:creator>Tom</dc:creator><description>&lt;p&gt;Ah great, just the kind of info I was looking for, thanks Filip!&lt;/p&gt;
&lt;p&gt;Any info on RAM/ROM usage? Also if you have the information it&amp;#39;d be great to know more about the compressed data size (e.g. Kb/s of compressed audio), to get an idea how that compares with the BLE link transfer rate.&lt;/p&gt;
&lt;p&gt;T.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFready audio compression/transmission resource profiling</title><link>https://devzone.nordicsemi.com/thread/120957?ContentTypeID=1</link><pubDate>Thu, 15 Feb 2018 11:22:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:aff40203-b06f-4d53-b7bb-4d8e0017bdb2</guid><dc:creator>Filip Kubicz</dc:creator><description>&lt;p&gt;It is best to&amp;nbsp;benchmark in your specific use case.&lt;br /&gt;&lt;br /&gt;I can give you some rough estimates in the default firmware configuration:&lt;br /&gt;- ADPCM encoder CPU usage is ~3%&lt;br /&gt;- SBC encoder in mSBC mode&amp;nbsp;&lt;span&gt;~ 5% CPU&lt;/span&gt;&lt;br /&gt;- Opus CELT VBR with 20ms audio frame:&lt;br /&gt;- complexity 0: ~28% CPU&lt;br /&gt;- complexity 4:&amp;nbsp;&lt;span&gt;&amp;nbsp;~40% CPU&lt;/span&gt;&lt;br /&gt;- complexity 10&lt;span&gt;&amp;nbsp;~75% CPU&lt;/span&gt;&lt;br /&gt;- Opus SILK VBR with 20ms audio frame:&lt;br /&gt;- complexity 0&amp;nbsp;&lt;span&gt;~49% CPU&lt;br /&gt;- complexity 4 ~75% CPU&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Opus has a higher CPU consumption than other codecs, however it gives you great sound quality with&amp;nbsp;high compression ratio - which means you need less bandwidth on Bluetooth Low Energy and thus the&amp;nbsp;overall power usage (CPU + radio) is lower. Opus CELT VBR is a good choice for a very power efficient application.&lt;br /&gt;&lt;br /&gt;If you want to minimize CPU&amp;nbsp;consumption for Opus, it&amp;#39;s best to use GCC with LTO and O2 optimization level. Also, to use less CPU do not use&amp;nbsp;--specs=nano.specs.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFready audio compression/transmission resource profiling</title><link>https://devzone.nordicsemi.com/thread/120894?ContentTypeID=1</link><pubDate>Wed, 14 Feb 2018 17:13:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:40235fd2-12d0-4055-a8fe-5903b69ceb0a</guid><dc:creator>Tom</dc:creator><description>&lt;p&gt;Great - thanks for the info - it looks like there&amp;#39;s some good tools to look into. Just to make sure though - before I go and do the bringup to get the system running - there&amp;#39;s no documentation already available that outlines the benchmarking under some standard use cases?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRFready audio compression/transmission resource profiling</title><link>https://devzone.nordicsemi.com/thread/120828?ContentTypeID=1</link><pubDate>Wed, 14 Feb 2018 13:12:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c6fbb034-d97f-4319-b850-b65d692809ea</guid><dc:creator>Filip Kubicz</dc:creator><description>&lt;p&gt;&lt;span&gt;Hi Tom,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;First of all, thank you for interest in Smart Remote.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;In &lt;strong&gt;Smart Remote 3 v1.1&lt;/strong&gt;,&amp;nbsp;after each finished audio transmission over BLE you will see a report:&lt;br /&gt;- min/average/max CPU used by audio module&lt;br /&gt;- min/average/max CPU used by codec&lt;br /&gt;- &lt;span&gt;min/average/max&amp;nbsp;&lt;/span&gt;audio bitrate&lt;br /&gt;- similar benchmark for Acoustic Noise Reduction (ANR) if it is enabled&lt;br /&gt;&lt;br /&gt;The benchmarking is enabled by default, so you can see it if you flash precompiled firmware.&amp;nbsp;You can see how the benchmarking is done in &lt;strong&gt;Source/Debug/m_audio_gauges.c&lt;/strong&gt;. It is also easy to adapt the code to measure CPU&amp;nbsp;usage of your custom audio algorithm. For reference, please have a look at &lt;em&gt;m_audio_process()&lt;/em&gt; function in &lt;strong&gt;Source/Modules/m_audio.c&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;EDIT: you can display total CPU load measured at 1 second interval&amp;nbsp;if you enable&amp;nbsp;&lt;em&gt;CONFIG_PWR_MGMT_CPU_USAGE_MONITOR_ENABLED&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Good news for you is that in the new&amp;nbsp;Smart Remote release, which is coming in a couple of weeks, firmware is going to be even more helpful in this matter. It&amp;nbsp;has command-line interface with commands for checking audio subsystem settings and changing them in runtime. The benchmark framework counts lost frames (in case BLE bandwidth is not enough for audio) and lost buffers from microphone (in case the CPU is too busy to process audio). The framework also informs you what&amp;#39;s the current and maximal usage of queues with audio data, so you can tune memory settings.&lt;br /&gt;&lt;br /&gt;Testing of audio algorithms should be easier, too. New release&amp;nbsp;comes with audio instrumentation framework which lets you capture or inject sound at any stage of DSP processing in Smart Remote.&lt;br /&gt;&lt;br /&gt;I hope this helps.&lt;br /&gt;&lt;br /&gt;Kind regards,&lt;br /&gt;Filip&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>