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
#...