<?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 Glad to hear you solved your in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095589#M25022</link>
    <description>&lt;P&gt;Glad to hear you solved your problem, look forward to you sharing the solution. Thanks!&lt;/P&gt;</description>
    <pubDate>Fri, 07 Oct 2016 23:10:21 GMT</pubDate>
    <dc:creator>Shaojuan_Z_Intel</dc:creator>
    <dc:date>2016-10-07T23:10:21Z</dc:date>
    <item>
      <title>G7.29 encode decode</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095583#M25016</link>
      <description>&lt;P&gt;Simple question: how to encode / decode G7.29 with Intel IPP ? Which functions to use ?&lt;/P&gt;

&lt;P&gt;I checked all the G7.29 and G7.29.1 functions at &lt;A href="http://sc.tamu.edu/help/intel/ipp/ippsman.pdf" target="_blank"&gt;http://sc.tamu.edu/help/intel/ipp/ippsman.pdf&lt;/A&gt; and &lt;A href="http://tx.technion.ac.il/doc/intel/ipp/ipp_manual/IPPS/ipps_ch9/ch9_g_729_functions.htm" target="_blank"&gt;http://tx.technion.ac.il/doc/intel/ipp/ipp_manual/IPPS/ipps_ch9/ch9_g_729_functions.htm&lt;/A&gt;, but they all seem to implement much more sophisticated tasks than a simple encode / decode...&lt;/P&gt;

&lt;P&gt;Any advice appreciated, especially sample code / code snippets,&lt;/P&gt;

&lt;P&gt;Ulrich&lt;/P&gt;</description>
      <pubDate>Wed, 28 Sep 2016 08:36:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095583#M25016</guid>
      <dc:creator>Ulrich_H_1</dc:creator>
      <dc:date>2016-09-28T08:36:52Z</dc:date>
    </item>
    <item>
      <title>Hi Ulrich,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095584#M25017</link>
      <description>&lt;P&gt;Hi Ulrich,&lt;/P&gt;

&lt;P&gt;IPP no longer support speech codecs, but you can find those functions in the legacy libraries here&amp;nbsp;&lt;A href="https://software.intel.com/en-us/articles/intel-ipp-legacy-libraries"&gt;https://software.intel.com/en-us/articles/intel-ipp-legacy-libraries&lt;/A&gt;. Thanks!&lt;/P&gt;</description>
      <pubDate>Wed, 28 Sep 2016 22:50:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095584#M25017</guid>
      <dc:creator>Shaojuan_Z_Intel</dc:creator>
      <dc:date>2016-09-28T22:50:45Z</dc:date>
    </item>
    <item>
      <title>Thanks a lot, Shaojuan !</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095585#M25018</link>
      <description>&lt;P&gt;Thanks a lot, Shaojuan !&lt;/P&gt;

&lt;P&gt;Actually I found a function&lt;/P&gt;

&lt;P&gt;static APIG729_Status G729Decode(G729Decoder_Obj* decoderObj,const Ipp8u* src, Ipp32s frametype, Ipp16s* dst);&lt;/P&gt;

&lt;P&gt;but not yet the inverse function G729Encode. Do you by any chance know the name of this function ?&lt;/P&gt;

&lt;P&gt;Thanks in advance,&lt;/P&gt;

&lt;P&gt;Ulrich&lt;/P&gt;</description>
      <pubDate>Thu, 29 Sep 2016 13:44:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095585#M25018</guid>
      <dc:creator>Ulrich_H_1</dc:creator>
      <dc:date>2016-09-29T13:44:38Z</dc:date>
    </item>
    <item>
      <title>Hi Ulrich,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095586#M25019</link>
      <description>&lt;DIV&gt;Hi Ulrich,&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;Here is the name of the encoder function. APIG729_Status G729Encode&lt;SPAN style="font-size: 1em;"&gt;(G729Encoder_Obj* encoderObj,const Ipp16s *src, Ipp8u* dst, G729Codec_Type codecType , Ipp32s *frametype) which is implemented in encg729.c. You can find more information from&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.008px;"&gt;ipp-samples/speech-codecs in&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em;"&gt;the legacy package. Thanks! .&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 29 Sep 2016 19:26:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095586#M25019</guid>
      <dc:creator>Shaojuan_Z_Intel</dc:creator>
      <dc:date>2016-09-29T19:26:55Z</dc:date>
    </item>
    <item>
      <title>Thanks again. As indicated, I</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095587#M25020</link>
      <description>&lt;P&gt;Thanks again. As indicated, I have downloaded&amp;nbsp;&lt;A href="https://software.intel.com/en-us/articles/intel-ipp-legacy-libraries"&gt;https://software.intel.com/en-us/articles/intel-ipp-legacy-libraries&lt;/A&gt; for Windows, but it contains 2 folders "include" and "lib" only, no folders like "ipp-samples" or "speech-codecs". I do not have any samples at all and would be really thankful for a link where to get it from.&lt;/P&gt;

&lt;P&gt;I understand I am supposed to use functions G729Encode and G729Decode from files encg729.c, or decg729.c respectively. I found these files in asterisk-g72x-1.3 download package (seems to be for Linux only, not for Windows). But there is no header file declaring these functions to the outside world, so I feel insecure if I am not supposed to use those functions that the headers declare instead (though I wouldn’t know how to obtain the parameters for these other functions).&lt;/P&gt;

&lt;P&gt;I am sure that something is missing on my side that is prerequisite for solving this simple task. I have worked as a professional software developer for more than 20 years now and I did not expect a simple ordinary task like encoding G7.29 could become such an effort. So certainly there is a wrong expectation on my side, but I can’t find out what it is without a sample code showing which prerequisite is missing. Please advise.&lt;/P&gt;</description>
      <pubDate>Fri, 30 Sep 2016 12:07:11 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095587#M25020</guid>
      <dc:creator>Ulrich_H_1</dc:creator>
      <dc:date>2016-09-30T12:07:11Z</dc:date>
    </item>
    <item>
      <title>problem solved - I will</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095588#M25021</link>
      <description>&lt;P&gt;problem solved - I will describe solution in detail next week&lt;/P&gt;</description>
      <pubDate>Fri, 07 Oct 2016 14:40:57 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095588#M25021</guid>
      <dc:creator>Ulrich_H_1</dc:creator>
      <dc:date>2016-10-07T14:40:57Z</dc:date>
    </item>
    <item>
      <title>Glad to hear you solved your</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095589#M25022</link>
      <description>&lt;P&gt;Glad to hear you solved your problem, look forward to you sharing the solution. Thanks!&lt;/P&gt;</description>
      <pubDate>Fri, 07 Oct 2016 23:10:21 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095589#M25022</guid>
      <dc:creator>Shaojuan_Z_Intel</dc:creator>
      <dc:date>2016-10-07T23:10:21Z</dc:date>
    </item>
    <item>
      <title>Seems like I was triumphing</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095590#M25023</link>
      <description>&lt;P&gt;Seems like I was triumphing too early: now I get an access violation on calling apiG729Encode():&lt;/P&gt;

&lt;P&gt;Call Stack:&lt;/P&gt;

&lt;P&gt;ippscl_9_8_1_1cbe0000!ippscGetLibVersion+0x14b93a&lt;BR /&gt;
	ippscl_9_8_1_1cbe0000!ippscGetLibVersion+0x7b665&lt;BR /&gt;
	CFDsp64!G729AEncode+0x31&lt;BR /&gt;
	CFDsp64!apiG729Encode+0x54&lt;BR /&gt;
	CFDsp64!CFVocBuffer::Put+0x716&lt;/P&gt;

&lt;P&gt;Could ippscGetLibVersion really cause an access violation ?&lt;/P&gt;

&lt;P&gt;Code snippet / context:&lt;/P&gt;

&lt;P&gt;in constructor:&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ipp32s nEncoderSize;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; apiG729Encoder_Alloc( G729A_CODEC, &amp;amp;nEncoderSize );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; CFVocBuffer::m_pgeoG729EncoderObj = (G729Encoder_Obj*) ippsMalloc_8u( nEncoderSize );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; APIG729_Status agsStatus = apiG729Encoder_Init( CFVocBuffer::m_pgeoG729EncoderObj, G729A_CODEC, G729Encode_VAD_Disabled );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( agsStatus != APIG729_StsNoErr )&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRC( TRC_SUP2, "CFVocBuffer,CFVocBuffer", "Encoder_Init failed: %d", agsStatus );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;On Data (here is where it crashes):&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; agsStatus = apiG729Encode( CFVocBuffer::m_pgeoG729EncoderObj, (const Ipp16s*) m_decodeBuffer, (Ipp8u*) m_encodeBuffer, G729A_CODEC, &amp;amp;nFrameType );&lt;/P&gt;

&lt;P&gt;m_decodeBuffer: 00000000186885A0 size: 640&lt;BR /&gt;
	m_encodeBuffer: 0000000018688DA0 size: 2048&lt;/P&gt;

&lt;P&gt;I can not see what could be wrong with the parameters passed on to apiG729Encode. Also took a look into memory at given memory addresses: contents seems to be OK. &amp;nbsp;&lt;/P&gt;

&lt;P&gt;Any ideas ?&lt;/P&gt;

&lt;P&gt;Thanks in advance,&lt;BR /&gt;
	Ulrich&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 11 Oct 2016 14:10:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095590#M25023</guid>
      <dc:creator>Ulrich_H_1</dc:creator>
      <dc:date>2016-10-11T14:10:44Z</dc:date>
    </item>
    <item>
      <title>Hi Ulrich,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095591#M25024</link>
      <description>&lt;P&gt;Hi Ulrich,&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Could you provide detailed information about the workstation environment?&lt;/P&gt;

&lt;P&gt;-&amp;nbsp;IPP samples (UMC/USC) version?&lt;/P&gt;

&lt;P&gt;- IPP library version?&lt;/P&gt;

&lt;P&gt;- Compiler?&lt;/P&gt;

&lt;P&gt;- Windows version?&lt;/P&gt;

&lt;P&gt;- CPU?&lt;/P&gt;

&lt;P&gt;Also, which IPP linking method you were using?&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Best regards,&lt;/P&gt;

&lt;P&gt;Tamer&lt;/P&gt;</description>
      <pubDate>Thu, 13 Oct 2016 14:37:03 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095591#M25024</guid>
      <dc:creator>Tamer_Assad</dc:creator>
      <dc:date>2016-10-13T14:37:03Z</dc:date>
    </item>
    <item>
      <title>That access violation problem</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095592#M25025</link>
      <description>&lt;P&gt;That access violation problem is solved in the meantime (apiG729Encoder_InitBuff was missing). Now, phone call between two Snom phone devices both providing G7.29 works now, but when the one is set to PCM and the other one to G7.29, then there is only noise. I need to know exactly what&amp;nbsp;apiG729Encode expects in its parameter "src":&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;linear PCM, PCM µ-Law or PCM A-Law ?&lt;/LI&gt;
	&lt;LI&gt;little endian or big endian ?&lt;/LI&gt;
	&lt;LI&gt;G729Encode_VAD_Disabled or G729Encode_VAD_Enabled ?&lt;/LI&gt;
	&lt;LI&gt;Frame size 20 ms or 40 ms ?&lt;/LI&gt;
	&lt;LI&gt;... ?&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;Any help appreciated,&lt;BR /&gt;
	Ulrich&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Oct 2016 14:27:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095592#M25025</guid>
      <dc:creator>Ulrich_H_1</dc:creator>
      <dc:date>2016-10-19T14:27:55Z</dc:date>
    </item>
    <item>
      <title>problem solved - here is how</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095593#M25026</link>
      <description>&lt;P&gt;problem solved - here is how it works:&lt;/P&gt;

&lt;P&gt;We have to distinguish between&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;algorithmic framesize&lt;BR /&gt;
		(constant 10 milliseconds on G7.29. At 8 kHz this means constant 80 samples of 2 bytes (= 160 bytes) per 10 ms on the unencoded / decoded side, and constant 10 bytes per 10 ms on the encoded side)&lt;BR /&gt;
		&amp;nbsp;&lt;/LI&gt;
	&lt;LI&gt;UDP framesize&lt;BR /&gt;
		(must be a multiple of algorithmic framesize, typically 10, 20, 30 or 40 ms. This value is set in the phone device)&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;So for example if UDP framesize is 40 ms, then on processing an UDP frame we need to call&amp;nbsp;apiG729Encode 4 times. Source code:&lt;/P&gt;

&lt;P&gt;header must include&amp;nbsp;g729api.h, for example contained in asterisk-g72x-1.3:&lt;/P&gt;

&lt;P&gt;#include &amp;lt;ippdefs.h&amp;gt;&lt;BR /&gt;
	#include ".\g729aster\g729api.h"&amp;nbsp; // folder "g729aster" should contain all required source files like&amp;nbsp;encg729.c,&amp;nbsp;decg729.c&lt;BR /&gt;
	#include ".\g729aster\owng729.h"&lt;/P&gt;

&lt;P&gt;our G7.29-class needs 4 functions: constructor, destructor, encode and decode:&lt;/P&gt;

&lt;P&gt;CFCodecG729a::CFCodecG729a()&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp; // initialize encoder object&lt;BR /&gt;
	&amp;nbsp; APIG729_Status agsStatus;&lt;BR /&gt;
	&amp;nbsp; Ipp32s nEncoderSize;&lt;BR /&gt;
	&amp;nbsp; apiG729Encoder_Alloc( G729A_CODEC, &amp;amp;nEncoderSize );&lt;BR /&gt;
	&amp;nbsp; m_pgeoG729EncoderObj = (G729Encoder_Obj*) ippsMalloc_8u( nEncoderSize );&lt;BR /&gt;
	&amp;nbsp; m_pEncoderScratchMem = ippsMalloc_8s( G729_ENCODER_SCRATCH_MEMORY_SIZE );&lt;BR /&gt;
	&amp;nbsp; agsStatus = apiG729Encoder_InitBuff( m_pgeoG729EncoderObj, m_pEncoderScratchMem ); &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; agsStatus = apiG729Encoder_Init( m_pgeoG729EncoderObj, G729A_CODEC, G729Encode_VAD_Disabled );&lt;BR /&gt;
	&amp;nbsp; if ( agsStatus != APIG729_StsNoErr )&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; TRC( TRC_SUP2, "CFCodecG729a,CFCodecG729a", "Encoder_Init failed: %d", agsStatus );&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; // initialize decoder object&lt;BR /&gt;
	&amp;nbsp; Ipp32s nDecoderSize;&lt;BR /&gt;
	&amp;nbsp; apiG729Decoder_Alloc( G729A_CODEC, &amp;amp;nDecoderSize );&lt;BR /&gt;
	&amp;nbsp; m_pgdoG729DecoderObj = (G729Decoder_Obj*) ippsMalloc_8u( nDecoderSize );&lt;BR /&gt;
	&amp;nbsp; m_pDecoderScratchMem = ippsMalloc_8s( G729_ENCODER_SCRATCH_MEMORY_SIZE );&amp;nbsp; // decoder scratch memory size equals G729_ENCODER_SCRATCH_MEMORY_SIZE&lt;BR /&gt;
	&amp;nbsp; agsStatus = apiG729Decoder_InitBuff( m_pgdoG729DecoderObj, m_pDecoderScratchMem ); &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; agsStatus = apiG729Decoder_Init( m_pgdoG729DecoderObj, G729A_CODEC );&lt;BR /&gt;
	&amp;nbsp; if ( agsStatus != APIG729_StsNoErr )&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; TRC( TRC_SUP2, "CFCodecG729a,CFCodecG729a", "Decoder_Init failed: %d", agsStatus );&lt;BR /&gt;
	&amp;nbsp; }&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;CFCodecG729a::~CFCodecG729a()&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp; ippsFree( m_pgeoG729EncoderObj );&lt;BR /&gt;
	&amp;nbsp; ippsFree( m_pgdoG729DecoderObj );&lt;BR /&gt;
	&amp;nbsp; ippsFree( m_pEncoderScratchMem );&lt;BR /&gt;
	&amp;nbsp; ippsFree( m_pDecoderScratchMem );&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;int CFCodecG729a::Encode( BYTE* srcbuf, int srclen, BYTE* dstbuf, int&amp;amp; dstlen )&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp; // has to be fractional of 10 bytes (:= 80 samples)&lt;BR /&gt;
	&amp;nbsp; if( srclen % 160 &amp;gt; 0 )&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; return dstlen = 0;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; if( dstlen &amp;gt;= srclen/16 )&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; dstlen = 0;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; APIG729_Status agsStatus;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Ipp32s nFrameType;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // encode i x 160-byte frames&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; for( int i=0; i&amp;lt;(srclen/160); i++ ) &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; agsStatus = apiG729Encode( m_pgeoG729EncoderObj, (const Ipp16s*) (srcbuf+i*160), (Ipp8u*) dstbuf+i*10, G729A_CODEC, &amp;amp;nFrameType );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( agsStatus != APIG729_StsNoErr )&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRC( TRC_KRN3, "CFCodecG729a,Encode", "encode failed" );&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dstlen += 10;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; return dstlen;&lt;BR /&gt;
	&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; return 0;&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;int CFCodecG729a::Decode( BYTE* srcbuf, int srclen, BYTE* dstbuf, int&amp;amp; dstlen )&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp; // has to be fractional of 10 bytes (:= 80 samples)&lt;BR /&gt;
	&amp;nbsp; if( srclen % 10 &amp;gt; 0 )&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; return dstlen = 0;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; if( dstlen &amp;gt;= srclen*8*2 )&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; dstlen = 0;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; APIG729_Status agsStatus;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Ipp32s nFrameType;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // decode i x 10-byte frames&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; for( int i=0; i&amp;lt;(srclen/10); i++ )&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nFrameType = 3; // active frame&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; agsStatus = apiG729Decode( m_pgdoG729DecoderObj, (const Ipp8u*) srcbuf+i*10, nFrameType, (Ipp16s*) (dstbuf+i*160) );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( agsStatus != APIG729_StsNoErr )&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRC( TRC_KRN3, "CFCodecG729a,Decode", "decode failed" );&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dstlen += 160;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return dstlen;&lt;BR /&gt;
	&amp;nbsp; }&lt;/P&gt;

&lt;P&gt;&amp;nbsp; return 0;&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Oct 2016 12:06:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095593#M25026</guid>
      <dc:creator>Ulrich_H_1</dc:creator>
      <dc:date>2016-10-20T12:06:02Z</dc:date>
    </item>
    <item>
      <title>Hi Ulrich,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095594#M25027</link>
      <description>&lt;P&gt;Hi Ulrich,&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Glad to know that you have progress:)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;- How often do you see "encode failed"/ "decode failed"?&lt;/P&gt;

&lt;P&gt;- G.729 is suitable for constant bitrate&lt;/P&gt;

&lt;P&gt;- &amp;nbsp;"when the one is set to PCM and the other one to G7.29, then there is only noise"&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;PCM (&lt;SPAN class="st"&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;FONT color="#6a6a6a"&gt;Pulse-code modulation) &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;is RAW (uncompressed) &amp;nbsp;audio. G.729 is a compression/codec. You should format consistency both sides.&lt;/P&gt;

&lt;P&gt;- 20 ms fame&amp;nbsp;duration usually makes better results.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Best regards,&lt;/P&gt;

&lt;P&gt;Tamer&lt;/P&gt;</description>
      <pubDate>Thu, 20 Oct 2016 14:13:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/G7-29-encode-decode/m-p/1095594#M25027</guid>
      <dc:creator>Tamer_Assad</dc:creator>
      <dc:date>2016-10-20T14:13:54Z</dc:date>
    </item>
  </channel>
</rss>

