search for: mult16_16_q15

Displaying 17 results from an estimated 17 matches for "mult16_16_q15".

2009 Dec 02
1
bug found in CELT 0.6.1, fix proposed.
..., 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; #endif /* FIXME: Implement for stereo */ *************** *** 113,119 **** celt_word16 q; /* dB */ celt_word16 x; /* dB */ celt_word16 f; /* Q8 */ ! celt_word16 mean = (i < E_MEANS_SIZE) ? MULT16_16_Q15(Q15ONE-coef,eMeans[i]) : 0; x = eBands[i+c*m->nbEBands]; #ifdef FIXED_POINT f = x-mean -MULT16_16_Q15(coef,oldEBands[i+c*m->nbEBands])-prev[c]; --- 112,118 ---- celt_word16 q; /* dB */ celt_word16 x; /* dB */ celt_word16 f; /* Q8...
2007 Nov 05
2
[patch] speex_preprocess_ctl
...> + *(spx_int32_t*)ptr = MIN32(100,MAX32(0, *(spx_int32_t*)ptr)); > > + st->speech_prob_start = DIV32_16(MULT16_16(Q15ONE,* > > (spx_int32_t*)ptr), 100); > > break; > > case SPEEX_PREPROCESS_GET_PROB_START: > > (*(spx_int32_t*)ptr) = MULT16_16_Q15(st->speech_prob_start, > > 100); > > break; > > > > case SPEEX_PREPROCESS_SET_PROB_CONTINUE: > > - *(spx_int32_t*)ptr = MIN32(Q15_ONE,MAX32(0, *(spx_int32_t*) > > ptr)); > > - st->speech_prob_continue = DIV32_16(MULT16_16(32767...
2007 Oct 29
1
[patch] speex_preprocess_ctl
...art = DIV32_16(MULT16_16(32767,*(spx_int32_t*)ptr), 100); + *(spx_int32_t*)ptr = MIN32(100,MAX32(0, *(spx_int32_t*)ptr)); + st->speech_prob_start = DIV32_16(MULT16_16(Q15ONE,*(spx_int32_t*)ptr), 100); break; case SPEEX_PREPROCESS_GET_PROB_START: (*(spx_int32_t*)ptr) = MULT16_16_Q15(st->speech_prob_start, 100); break; case SPEEX_PREPROCESS_SET_PROB_CONTINUE: - *(spx_int32_t*)ptr = MIN32(Q15_ONE,MAX32(0, *(spx_int32_t*)ptr)); - st->speech_prob_continue = DIV32_16(MULT16_16(32767,*(spx_int32_t*)ptr), 100); + *(spx_int32_t*)ptr = MIN32(100,MAX32(...
2005 Sep 27
1
Precomputing the remaining floating pointoperations.
...nges the lag_factor. From bash you can say echo 'e((8*a(1)*.012)^2/-2)' |bc -l Then we can replace the code in the init functions with : gauss = 16384; for (i=0;i<st->lpcSize+1;i++) { st->lagWindow[i]=gauss; for (j=i*i; j < (i+1)*(i+1); j++) { gauss = MULT16_16_Q15 (gauss, st->lag_factor_gauss); } } A Taylor expansion will be more accurate.
2007 Jul 05
1
Small bug fixed
Hi, It is better to replace this line in function filterbank_new: max_mel = toBARK(EXTRACT16(MULT16_16_Q15(QCONST16(.5f,15),sampling))); to max_mel = toBARK(EXTRACT16(sampling/2)); It gives the same but it seems to be faster and avoids overflow on 44100 kHz that prevents denoiser to process 44100 streams. (Yes I know that Speex should not pack 44100 streams but it does now and I use it). Best Regard...
2007 Nov 05
0
[patch] speex_preprocess_ctl
...(spx_int32_t*)ptr = MIN32(100,MAX32(0, *(spx_int32_t*)ptr)); >>> + st->speech_prob_start = DIV32_16(MULT16_16(Q15ONE,* >>> (spx_int32_t*)ptr), 100); >>> break; >>> case SPEEX_PREPROCESS_GET_PROB_START: >>> (*(spx_int32_t*)ptr) = MULT16_16_Q15(st->speech_prob_start, >>> 100); >>> break; >>> >>> case SPEEX_PREPROCESS_SET_PROB_CONTINUE: >>> - *(spx_int32_t*)ptr = MIN32(Q15_ONE,MAX32(0, *(spx_int32_t*) >>> ptr)); >>> - st->speech_prob_continue = DIV32_...
2009 Jan 14
0
[PATCH] Moved the application of the pitch gain to (un)quant_bands(). This doesn't change anything to the codec, but will make the next changes easier.
...(const CELTMode *m, celt_norm_t * restrict P, const celt_pgain_t * restrict gains) -{ - int i; - const celt_int16_t *pBands = m->pBands; - const int C = CHANNELS(m); - for (i=0;i<m->nbPBands;i++) - { - int j; - for (j=C*pBands[i];j<C*pBands[i+1];j++) - P[j] = MULT16_16_Q15(gains[i], P[j]); - /*printf ("%f ", gain);*/ - } - for (i=C*pBands[m->nbPBands];i<C*pBands[m->nbPBands+1];i++) - P[i] = 0; -} - static void intensity_band(celt_norm_t * restrict X, int len) { int j; @@ -352,13 +335,15 @@ void stereo_decision(const CELTMode *m,...
2004 Aug 06
1
fixed point macros
...s) > for fixed-point. As for the macros, here are some of them (the rest > should be easy to guess): > > ADD16, ADD32 adders for 16 and 32 bits > MULT16_16 multiply a 16 bit value by another 16 bit value (result in > 32) > MAC16_16 same but also adds to the first argument > MULT16_16_Q15 multiply a 16 bit value by another 16 bit value and shift > right by 15 (result assumed to fit in 16 bits) > > Note that all these functions DO NOT perform saturation, so you need to > make sure that the operations can't possibly overflow (or use the > SATURATE macro, but prefera...
2008 Feb 12
0
Second part of data export patch
..._continue)) { st->was_speech=1; return 1; @@ -1191,6 +1194,9 @@ for(i=0;i<st->ps_size;i++) ((spx_int32_t *)ptr)[i] = (spx_int32_t) PSHR32(st->noise[i], NOISE_SHIFT); break; + case SPEEX_PREPROCESS_GET_PROB: + (*(spx_int32_t*)ptr) = MULT16_16_Q15(st->speech_prob, 100); + break; default: speex_warning_int("Unknown speex_preprocess_ctl request: ", request); return -1;
2009 Jan 14
0
[PATCH] Pitch now quantised at the band level, got rid of all the VQ code.
...ONST16(.5,15)) + enabled = 1; + ec_enc_bits(enc, enabled, 1); + if (enabled) + pgains[pband] = QCONST16(.9,15); + else + pgains[pband] = 0; + } for (j=C*eBands[i];j<C*eBands[i+1];j++) P[j] = MULT16_16_Q15(pgains[pband], P[j]); } else { @@ -496,7 +510,15 @@ void unquant_bands(const CELTMode *m, celt_norm_t * restrict X, celt_norm_t *P, } else if (pitch_used && eBands[i] < m->pitchEnd) { if (eBands[i] == pBands[pband+1]) + { + int enabled...
2009 Jun 24
2
Speech switching in speakerphone?
>> I think the residual echo estimation is fairly reliable but I do not know >> how to use this to improve Pframe and in that way solve our main problem >> with the gain during near end talk. > > How can you tell that the residual echo estimation is reliable? in any > case, I suspect that the whole Pframe idea might have to be revised > (i.e. computing it completely
2004 Aug 06
0
[ANNOUNCE] PocketPC Port for speex-1.1.5 with sample code
...16_32_Q15(a,b) ((a)*(b)) #define MAC16_32_Q11(c,a,b) ((c)+(a)*(b)) #define MAC16_32_Q15(c,a,b) ((c)+(a)*(b)) #define MAC16_16_Q11(c,a,b) ((c)+(a)*(b)) #define MULT16_16_Q11(a,b) ((a)*(b)) #define MULT16_16_Q13(a,b) ((a)*(b)) #define MULT16_16_Q14(a,b) ((a)*(b)) #define MULT16_16_Q15(a,b) ((a)*(b)) #define DIV32_16(a,b) ((a)/(b)) #define DIV32(a,b) ((a)/(b)) #endif #endif
2013 May 21
0
[PATCH] 02-
...ocess8_%=:\n" + "subs %3, %3, #16;\n" + "subs %1, %1, #16;\n" + "vld1.16 {q2}, [%4]!;\n" //Load 8 window values + "vld1.16 {q0}, [%2]!;\n" //Load 8 x values from beg + "vld1.16 {q1}, [%3];\n" //Load 8 x values from end + + /* MULT16_16_Q15(x[i],window[i]) */ + "vmull.s16 q3, d0, d4;\n" + "vmull.s16 q4, d1, d5;\n" + + "pld [%4, #0];\n" + + /* MULT16_16_Q15(x[n-i-1],window[i]) */ + "vmull.s16 q5, d2, d4;\n" + "vmull.s16 q6, d3, d5;\n" + + "pld [%2, #0];\n&q...
2013 May 21
2
[PATCH] 02-Add CELT filter optimizations
...ocess8_%=:\n" + "subs %3, %3, #16;\n" + "subs %1, %1, #16;\n" + "vld1.16 {q2}, [%4]!;\n" //Load 8 window values + "vld1.16 {q0}, [%2]!;\n" //Load 8 x values from beg + "vld1.16 {q1}, [%3];\n" //Load 8 x values from end + + /* MULT16_16_Q15(x[i],window[i]) */ + "vmull.s16 q3, d0, d4;\n" + "vmull.s16 q4, d1, d5;\n" + + "pld [%4, #0];\n" + + /* MULT16_16_Q15(x[n-i-1],window[i]) */ + "vmull.s16 q5, d2, d4;\n" + "vmull.s16 q6, d3, d5;\n" + + "pld [%2, #0];\n&q...
2004 Aug 06
2
[ANNOUNCE] PocketPC Port for speex-1.1.5 with sample code
Hi Jean-Marc, Based on the wonderful Speex project, I've created SpeexOutLoud, essentially a Speex codec port for Windows Mobile 2003 devices. I've included a sample project intended to show the usage of SpeexOutLoud codec in a Pocket PC application based on .NET Compact Framework. I'd request you to please go through the attached build, and include it as a contribution to the
2013 May 23
2
ASM runtime detection and optimizations
...void pitch_downsample(celt_sig * OPUS_RESTRICT x[], opus_val16 * OPUS_RESTRICT x_lp, - int len, int C) + int len, int C, const int arch) { int i; opus_val32 ac[5]; @@ -167,11 +167,11 @@ void pitch_downsample(celt_sig * OPUS_RESTRICT x[], opus_val16 * OPUS_RESTRICT x tmp = MULT16_16_Q15(QCONST16(.9f,15), tmp); lpc[i] = MULT16_16_Q15(lpc[i], tmp); } - celt_fir(x_lp, lpc, x_lp, len>>1, 4, mem); + celt_fir[arch&OPUS_ARCHMASK](x_lp, lpc, x_lp, len>>1, 4, mem); mem[0]=0; lpc[0]=QCONST16(.8f,12); - celt_fir(x_lp, lpc, x_lp, len>>1, 1, mem...
2005 May 25
3
Speex on TI C6x, Problem with TI C5x Patch
...1(c,a,b) ((c)+(a)*(b)) #define MAC16_32_Q15(c,a,b) ((c)+(a)*(b)) #define MAC16_16_Q11(c,a,b) ((c)+(a)*(b)) #define MAC16_16_Q13(c,a,b) ((c)+(a)*(b)) #define MULT16_16_Q11_32(a,b) ((a)*(b)) #define MULT16_16_Q13(a,b) ((a)*(b)) #define MULT16_16_Q14(a,b) ((a)*(b)) #define MULT16_16_Q15(a,b) ((a)*(b)) #define MULT16_16_P15(a,b) ((a)*(b)) #define DIV32_16(a,b) ((a)/(b)) #define DIV32(a,b) ((a)/(b)) #endif #ifdef CONFIG_TI_C55X /* 2 on TI C5x DSP */ #define BYTES_PER_CHAR 2 #define BITS_PER_CHAR 16 #define LOG2_BITS_PER_CHAR 4 #else #define BYTES_PER_CHAR 1 #...