链接已复制
Hello,
we have ippsConvert_8s16s(const Ipp8s* pSrc,Ipp16s* pDst,int len) function but we have no ippsConvert_16s8s(const Ipp16s* pSrc,Ipp8s* pDst,int len) function. If you find such functionality useful please submit your request to Intel Premier Support
Regards,
Vladimir
But if you use IPP5.0, the names of OBJ files maybe differ.
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split0.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split1.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split10.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split11.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split12.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split13.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split14.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split15.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split16.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split17.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split18.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split2.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split3.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split4.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split5.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split6.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split7.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split8.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ownctsg729/ownctsg729_split0.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/psg729dphd/psg729dphd_split0.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/psg729dphd/psg729dphd_split1.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/psg729dphd/psg729dphd_split2.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/psg729dphd/psg729dphd_split3.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/psg729icdbk/psg729icdbk_split0.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/psg729icdbk/psg729icdbk_split10.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/psg729icdbk/psg729icdbk_split9.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/psg729ihw/psg729ihw_split0.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/psg729ihw/psg729ihw_split1.obj
d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/psg729ihw/psg729ihw_split2.obj
you can extract them from ippscmerged.lib by
lib.exe ippscmerged.lib /EXTRACT:d:/ippsr_sc/ippobj/sclibsobjs/win32/w7/mrg/ippscsag729/ippscsag729_split0.obj
.................................
One.... Merge Libraries dont seem to be in eval version of IPP v5
Two.... What does the Libraries have to do with the Question I asked...
Three.... Based on the "sample-speech-coding" example can some one please show me how to convert data comming from voip g729 to PCM LINIAR and back to g729 for return
it would go along way in convincing company to buy IPP Licenses
Well, lets us first solve your build issue. Could you please look at speech-coding folder and confirm that file support.txt contains sample id like this w_ipp-sample-speech-coding_p_5.0.019?
I've just tested sample, it link IPP DLL.
We will try to help you as quick as possible
Vladimir
According speech-coding sample's readme.htm,
The samples have been implemented using the Intel Integrated Performance Primitives (Intel IPP) Speech Coding functions.They are command line based applications which process data given by one or more input PCM files and store the result into output bitstreams or PCM files. Both narrow band (8000 Hz) and wide band (16000 KHz) are supported.
the sample provide you exactly functionality you are looking for, right? So, I hope, if you will solve build issue you probably get a better chance to understand how this sample works, how it connects encoder or decoder and so on.
Vladimir
#include
/*Declare global variable and pointer to the USC function table*/
USC_Fxns *USC_Gxxx_Fnxs = &USC_G729A_Fxns;
.......
int i, nbanksEnc;
USC_MemBank* pBanksEnc;
USC_Handle hUSCEncoder;
/* Get the Gxxx codec info */
if(USC_NoError != USC_Gxxx_Fnxs->std.GetInfo((USC_Handle)NULL, &pInfo)) exit(1);
/*We'll create encoder*/
pInfo.params.direction = 0; /* Direction: encode */
pInfo.params.modes.vad = 0; /*No VAD in va_g729*/
pInfo.params.modes.bitrate =8000;/* G729A codec has got this bitrate*/
/* Learn how many memory block needed for the encoder */
if(USC_NoError != USC_Gxxx_Fnxs->std.NumAlloc(&pInfo.params, &nbanksEnc)) exit(2);
/* allocate memory for memory bank table */
pBanksEnc = (USC_MemBank*)malloc(sizeof(USC_MemBank)*nbanksEnc);
/* Query how big has to be each block */
if(USC_NoError != USC_Gxxx_Fnxs->std.MemAlloc(&pInfo.params, pBanksEnc)) exit(3);
/* allocate memory for each block */
for(i=0; i
}
/* Create encoder instance */
if(USC_NoError != USC_Gxxx_Fnxs->std.Init(&pInfo.params, pBanksEnc, &hUSCEncoder)) exit(4);
Now to encode one frame (this code is equal to call va_g729_encode(short *in, char *out) function.
USC_PCMStream in;
USC_Bitstream out;
/* Set input stream params */
in.bitrate = 8000;
in.nbytes = lenPCM;
in.pBuffer = pPCM;
in.pcmType.bitPerSample = 16;
in.pcmType.sample_frequency = 8000;
/* Set output buffer */
out.pBuffer = pBitstrea;
/* Encode a frame */
if(USC_NoError != USC_Gxxx_Fnxs->Encode (hUSCEncoder, &in, &out)) exit(6);
For G723 codec just change
USC_Fxns *USC_Gxxx_Fnxs = &USC_G729A_Fxns;
to
USC_Fxns *USC_Gxxx_Fnxs = &USC_G723_Fxns;
Igor
Hi,
No clean up needed. Just
for(i=0; i
free(pBanksEnc);
But if you'd like to put a USC codecinstance to its initial state just call:
USC_Status Reinit(USC_Modes *modes, USC_Handle handle );
Igor S. Belyakov
I am tring to tie it into a Freeware Opensource application
I put the USC lib into a Single Threaded DLL and I am calling it though Application....
Eveything works fine except the encode and decode...
it inits fine but decode and encode fails
Could you provide witchstatus you get when you call encode() and decode() functions?
My first assumption that you incorrectly prepare function params. As for encode() function try to do following. Pls be prepared that this function operates under single frame and after function call in->nbytes will hold used PCM size out->nbytes willreturn bitstream size.
USC_PCMStream inData;
USC_Bitstream outData;
in.bitrate = 8000; /*it's hard patch for G729A. For the correct values in.bitrate = pInfo->params.modes.bitrate*/
in.nbytes = *inlen;
in.pBuffer = (char*)in;
in.pcmType.bitPerSample = 16;
in.pcmType.sample_frequency = 8000;
out.pBuffer = out;
Igor S. Belyakov
