<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic AMR Narrow Band in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/AMR-Narrow-Band/m-p/880487#M10135</link>
    <description>Is there a decoder for &lt;SPAN class="bodytext"&gt;AMR Narrow Band ? I didn't see nothing about this. &lt;BR /&gt;&lt;BR /&gt;thanks&lt;BR /&gt;Stefano&lt;BR /&gt;&lt;/SPAN&gt;</description>
    <pubDate>Mon, 10 Dec 2007 07:46:33 GMT</pubDate>
    <dc:creator>fala70</dc:creator>
    <dc:date>2007-12-10T07:46:33Z</dc:date>
    <item>
      <title>AMR Narrow Band</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/AMR-Narrow-Band/m-p/880487#M10135</link>
      <description>Is there a decoder for &lt;SPAN class="bodytext"&gt;AMR Narrow Band ? I didn't see nothing about this. &lt;BR /&gt;&lt;BR /&gt;thanks&lt;BR /&gt;Stefano&lt;BR /&gt;&lt;/SPAN&gt;</description>
      <pubDate>Mon, 10 Dec 2007 07:46:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/AMR-Narrow-Band/m-p/880487#M10135</guid>
      <dc:creator>fala70</dc:creator>
      <dc:date>2007-12-10T07:46:33Z</dc:date>
    </item>
    <item>
      <title>Re: AMR Narrow Band</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/AMR-Narrow-Band/m-p/880488#M10136</link>
      <description>&lt;P&gt;Hi Stefano&lt;/P&gt;
&lt;P&gt;GSMAMR is supported by freely available IPP samples, specifically by speech_codec sample from speech-codecs package, see.ipp-samplesspeech-codecsapplicationusc_speech_codec
eadme.htm&lt;/P&gt;
&lt;P&gt;Best regards, Slava&lt;/P&gt;
&lt;P&gt;IPP speech coding&lt;/P&gt;</description>
      <pubDate>Tue, 11 Dec 2007 10:31:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/AMR-Narrow-Band/m-p/880488#M10136</guid>
      <dc:creator>Vyacheslav_Baranniko</dc:creator>
      <dc:date>2007-12-11T10:31:00Z</dc:date>
    </item>
    <item>
      <title>Re: AMR Narrow Band</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/AMR-Narrow-Band/m-p/880489#M10137</link>
      <description>&lt;P&gt;&lt;FONT face="Courier New"&gt;I developed a source code for decode frames AMR-NB to PCM using GSMAMR decoder. It doesn't work good I hear strange noise sound.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;My Module source is very simple there is a init func and a Decode func. My frames data are 5,15 kbit/s (mono), 14 bytes for 20 ms. Decode func. return 320 bytes pcm format decoded. Are you sure that AMR-NB is GSMAMR CODEC ???&lt;BR /&gt;below there is the code class Camrdec &lt;BR /&gt;&lt;BR /&gt;class AMRDEC_API Camrdec {&lt;BR /&gt;private:&lt;BR /&gt;USC_Handle hUSCDecoder;&lt;BR /&gt;USC_CodecInfo pInfo;&lt;BR /&gt;int nbanksEnc,nbanksDec;&lt;BR /&gt;USC_MemBank* pBanksDec;&lt;BR /&gt;USC_Fxns *USC_Codec_Fxn;&lt;BR /&gt;&lt;BR /&gt;void FreeCodecMemory();&lt;BR /&gt;int EvaluateEncodedByteSize(int bitrate);&lt;BR /&gt;int EvaluateEncodedBitSize(int bitrate);&lt;BR /&gt;&lt;BR /&gt;//[BitRate:EncodeBitSize:NFramesToSend]&lt;BR /&gt;//bitrate-&amp;gt;encodedbitsize&lt;BR /&gt;int BitsLenTbl[9][3];&lt;BR /&gt;public:&lt;BR /&gt;Camrdec(void);&lt;BR /&gt;~Camrdec(void);&lt;BR /&gt;bool Init(int bitrate);&lt;BR /&gt;int DecodeOneFrame(char *src,char *dst);&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;#include "stdafx.h"&lt;BR /&gt;#include "amrdec.h"&lt;BR /&gt;#include &lt;STDLIB.H&gt;&lt;BR /&gt;#include &lt;SSTREAM&gt;&lt;BR /&gt;#include &lt;IOSTREAM&gt;&lt;BR /&gt;#include &lt;IPPCORE.H&gt;&lt;BR /&gt;&lt;BR /&gt;#ifdef __cplusplus&lt;BR /&gt;extern "C" {&lt;BR /&gt;#endif&lt;BR /&gt;extern USC_Fxns USC_GSMAMR_Fxns;&lt;BR /&gt;#ifdef __cplusplus&lt;BR /&gt;}&lt;BR /&gt;#endif&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;// Costruttore di una classe esportata.&lt;BR /&gt;// Vedere amrdec.h per la definizione della classe&lt;BR /&gt;Camrdec::Camrdec()&lt;BR /&gt;{&lt;BR /&gt;nbanksEnc = nbanksDec = 0;&lt;BR /&gt;pBanksDec = NULL;&lt;BR /&gt;USC_Codec_Fxn = &amp;amp;USC_GSMAMR_Fxns; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;BitsLenTbl[0][0]=6600;BitsLenTbl[0][1]=132;BitsLenTbl[0][2]=1;&lt;BR /&gt;BitsLenTbl[1][0]=8850;BitsLenTbl[1][1]=177;BitsLenTbl[1][2]=1;&lt;BR /&gt;BitsLenTbl[2][0]=12650;BitsLenTbl[2][1]=253;BitsLenTbl[2][2]=1;&lt;BR /&gt;BitsLenTbl[3][0]=14250;BitsLenTbl[3][1]=285;BitsLenTbl[3][2]=1;&lt;BR /&gt;BitsLenTbl[4][0]=15850;BitsLenTbl[4][1]=317;BitsLenTbl[4][2]=1;&lt;BR /&gt;BitsLenTbl[5][0]=18250;BitsLenTbl[5][1]=365;BitsLenTbl[5][2]=1;&lt;BR /&gt;BitsLenTbl[6][0]=19850;BitsLenTbl[6][1]=397;BitsLenTbl[6][2]=1;&lt;BR /&gt;BitsLenTbl[7][0]=23050;BitsLenTbl[7][1
]=461;BitsLenTbl[7][2]=1;&lt;BR /&gt;BitsLenTbl[8][0]=23850;BitsLenTbl[8][1]=477;BitsLenTbl[8][2]=1;&lt;BR /&gt;&lt;BR /&gt;return;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;Camrdec::~Camrdec()&lt;BR /&gt;{&lt;BR /&gt;FreeCodecMemory();&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;bool Camrdec::Init(int bitrate)&lt;BR /&gt;{&lt;BR /&gt;FreeCodecMemory();&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if (USC_NoError != USC_Codec_Fxn-&amp;gt;std.GetInfo((USC_Handle)NULL, &amp;amp;pInfo))&lt;BR /&gt;return false;&lt;BR /&gt;&lt;BR /&gt;pInfo.params.direction = USC_DECODE; /* Direction: decode */&lt;BR /&gt;pInfo.params.modes.vad = 0; /* Suppress a silence compression */&lt;BR /&gt;pInfo.params.law = 0; /* Linear PCM input */&lt;BR /&gt;pInfo.params.modes.bitrate = bitrate;&lt;BR /&gt;pInfo.pPcmTypesTbl-&amp;gt;sample_frequency = 8000;&lt;BR /&gt;&lt;BR /&gt;/* Learn how many memory block needed for the decoder */&lt;BR /&gt;if(USC_NoError != USC_Codec_Fxn-&amp;gt;std.NumAlloc(&amp;amp;pInfo.params, &amp;amp;nbanksDec))&lt;BR /&gt;return false;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;/* allocate memory for memory bank table */&lt;BR /&gt;pBanksDec = (USC_MemBank*)malloc(sizeof(USC_MemBank)*nbanksDec);&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;/* Query how big has to be each block */&lt;BR /&gt;if(USC_NoError != USC_Codec_Fxn-&amp;gt;std.MemAlloc(&amp;amp;pInfo.params, pBanksDec))&lt;BR /&gt;return false;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;/* allocate memory for each block */&lt;BR /&gt;int i;&lt;BR /&gt;for(i=0; i&lt;NBANKSDEC&gt;{&lt;BR /&gt;pBanksDec&lt;I&gt;.pMem = ( char*)malloc(pBanksDec&lt;I&gt;.nbytes);&lt;BR /&gt;}&lt;BR /&gt;/* Create decoder instance */&lt;BR /&gt;if(USC_NoError != USC_Codec_Fxn-&amp;gt;std.Init(&amp;amp;pInfo.params, pBanksDec, &amp;amp;hUSCDecoder))&lt;BR /&gt;return false;&lt;BR /&gt;&lt;BR /&gt;return true;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;void Camrdec::FreeCodecMemory()&lt;BR /&gt;{&lt;BR /&gt;int i;&lt;BR /&gt;/*&lt;BR /&gt;Release decoder memory &lt;BR /&gt;*/&lt;BR /&gt;for(i=0; i&lt;NBANKSDEC&gt;{&lt;BR /&gt;if (pBanksDec&lt;I&gt;.pMem)&lt;BR /&gt;free(pBanksDec&lt;I&gt;.pMem);&lt;BR /&gt;}&lt;BR /&gt;if (pBanksDec)&lt;BR /&gt;free(pBanksDec);&lt;BR /&gt;nbanksDec = 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;#define RX_SPEECH_GOOD 0&lt;BR /&gt;&lt;BR /&gt;int Camrdec::DecodeOneFrame(char *src,char *dst) &lt;BR /&gt;{&lt;BR /&gt;USC_Bitstream in;&lt;BR /&gt;
USC_PCMStream out;&lt;BR /&gt;&lt;BR /&gt;in.pBuffer = src;&lt;BR /&gt;in.frametype = RX_SPEECH_GOOD ;&lt;BR /&gt;in.bitrate = pInfo.params.modes.bitrate;&lt;BR /&gt;in.nbytes = 14;//EvaluateEncodedByteSize(in.bitrate);&lt;BR /&gt;//return in.nbytes;&lt;BR /&gt;//DbgOutInt("Size bytes", in.nbytes);&lt;BR /&gt;&lt;BR /&gt;out.pBuffer = dst;&lt;BR /&gt;out.pcmType.bitPerSample = pInfo.pPcmTypesTbl-&amp;gt;bitPerSample;&lt;BR /&gt;out.pcmType.sample_frequency = 5500;//pInfo.pPcmTypesTbl-&amp;gt;sample_frequency;&lt;BR /&gt;out.bitrate = pInfo.params.modes.bitrate;&lt;BR /&gt;if(USC_NoError != USC_Codec_Fxn-&amp;gt;Decode (hUSCDecoder, &amp;amp;in, &amp;amp;out))&lt;BR /&gt;return -1;&lt;BR /&gt;return out.nbytes;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;void DbgOutInt(string label, int value ) {&lt;BR /&gt;stringstream strs;&lt;BR /&gt;strs &amp;lt;&amp;lt; value;&lt;BR /&gt;label.append(strs.str()) ;&lt;BR /&gt;const char *c_str =label.c_str() ;&lt;BR /&gt;OutputDebugString( c_str ) ;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;int Camrdec::EvaluateEncodedBitSize(int bitrate)&lt;BR /&gt;{&lt;BR /&gt;int len = sizeof(BitsLenTbl)/sizeof(BitsLenTbl[0]);&lt;BR /&gt;for (int i=0; i&lt;LEN&gt;{&lt;BR /&gt;if (BitsLenTbl&lt;I&gt;[0] == bitrate)&lt;BR /&gt;return BitsLenTbl&lt;I&gt;[1];&lt;BR /&gt;}&lt;BR /&gt;return -1;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;int Camrdec::EvaluateEncodedByteSize(int bitrate)&lt;BR /&gt;{&lt;BR /&gt;int len = EvaluateEncodedBitSize(bitrate);&lt;BR /&gt;#if 1//KARTHIK&lt;BR /&gt;return ((len + 14)/15)*sizeof(short);&lt;BR /&gt;#else&lt;BR /&gt;return ((len + 7)/8)*sizeof(char);&lt;BR /&gt;#endif&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/I&gt;&lt;/I&gt;&lt;/LEN&gt;&lt;/I&gt;&lt;/I&gt;&lt;/NBANKSDEC&gt;&lt;/I&gt;&lt;/I&gt;&lt;/NBANKSDEC&gt;&lt;/IPPCORE.H&gt;&lt;/IOSTREAM&gt;&lt;/SSTREAM&gt;&lt;/STDLIB.H&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 30 Dec 2007 12:17:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/AMR-Narrow-Band/m-p/880489#M10137</guid>
      <dc:creator>fala70</dc:creator>
      <dc:date>2007-12-30T12:17:27Z</dc:date>
    </item>
  </channel>
</rss>

