Displaying 6 results from an estimated 6 matches for "out32_q14".
2017 Apr 26
2
2 patches related to silk_biquad_alt() optimization
...stride /* I Operate on
interleaved signal if > 1 */
)
{
/* DIRECT FORM II TRANSPOSED (uses 2 element state vector) */
opus_int k;
silk_assert( ( stride == 1 ) || ( stride == 2 ) );
if( stride == 1) {
opus_int32 out32_Q14;
for( k = 0; k < len; k++ ) {
/* S[ 0 ], S[ 1 ]: Q12 */
out32_Q14 = silk_LSHIFT( silk_SMLAWB( S[ 0 ], B_Q28[ 0 ], in[ k
] ), 2 );
S[ 0 ] = S[ 1 ] + silk_RSHIFT_ROUND( (opus_int64)out32_Q14 *
(-A_Q28[ 0 ]), 30 );
S[ 0 ] = silk_SMLAWB( S[ 0...
2017 May 15
2
2 patches related to silk_biquad_alt() optimization
...gnal if > 1 */
> )
> {
> /* DIRECT FORM II TRANSPOSED (uses 2 element state vector) */
> opus_int k;
>
> silk_assert( ( stride == 1 ) || ( stride == 2 ) );
>
> if( stride == 1) {
> opus_int32 out32_Q14;
> for( k = 0; k < len; k++ ) {
> /* S[ 0 ], S[ 1 ]: Q12 */
> out32_Q14 = silk_LSHIFT( silk_SMLAWB( S[ 0 ], B_Q28[ 0
> ], in[ k ] ), 2 );
>
> S[ 0 ] = S[ 1 ] + silk_RSHIFT_ROUND(
> (opus_int64)out32_Q14 * (...
2017 May 08
0
2 patches related to silk_biquad_alt() optimization
...Operate on
> interleaved signal if > 1 */
> )
> {
> /* DIRECT FORM II TRANSPOSED (uses 2 element state vector) */
> opus_int k;
>
> silk_assert( ( stride == 1 ) || ( stride == 2 ) );
>
> if( stride == 1) {
> opus_int32 out32_Q14;
> for( k = 0; k < len; k++ ) {
> /* S[ 0 ], S[ 1 ]: Q12 */
> out32_Q14 = silk_LSHIFT( silk_SMLAWB( S[ 0 ], B_Q28[ 0 ], in[
> k ] ), 2 );
>
> S[ 0 ] = S[ 1 ] + silk_RSHIFT_ROUND( (opus_int64)out32_Q14 *
> (-A_Q28[ 0 ]), 30 );
>...
2017 Apr 25
2
2 patches related to silk_biquad_alt() optimization
.../* lower part */
A0_U_Q28 = silk_RSHIFT( -A_Q28[ 0 ], 14 ); /* upper part */
A1_L_Q28 = ( -A_Q28[ 1 ] ) & 0x00003FFF; /* lower part */
A1_U_Q28 = silk_RSHIFT( -A_Q28[ 1 ], 14 ); /* upper part */
...
S[ 0 ] = S[1] + silk_RSHIFT_ROUND( silk_SMULWB( out32_Q14, A0_L_Q28
), 14 );
S[ 0 ] = silk_SMLAWB( S[ 0 ], out32_Q14, A0_U_Q28 );
S[ 0 ] = silk_SMLAWB( S[ 0 ], B_Q28[ 1 ], inval);
S[ 1 ] = silk_RSHIFT_ROUND( silk_SMULWB( out32_Q14, A1_L_Q28 ), 14
);
S[ 1 ] = silk_SMLAWB( S[ 1 ], out32_Q14, A1_U_Q28 );
S[ 1 ] = silk...
2017 May 17
0
2 patches related to silk_biquad_alt() optimization
...; > )
> > {
> > /* DIRECT FORM II TRANSPOSED (uses 2 element state vector) */
> > opus_int k;
> >
> > silk_assert( ( stride == 1 ) || ( stride == 2 ) );
> >
> > if( stride == 1) {
> > opus_int32 out32_Q14;
> > for( k = 0; k < len; k++ ) {
> > /* S[ 0 ], S[ 1 ]: Q12 */
> > out32_Q14 = silk_LSHIFT( silk_SMLAWB( S[ 0 ], B_Q28[ 0
> > ], in[ k ] ), 2 );
> >
> > S[ 0 ] = S[ 1 ] + silk_RSHIFT_ROUND(
>...
2017 Apr 25
2
2 patches related to silk_biquad_alt() optimization
Hi Jean-Marc,
Tested on my chromebook, when stride (channel) == 1, the optimization has
no gain compared with C function.
When stride (channel) == 2, the optimization is 1.2%-1.8% faster (1.6% at
Complexity 8) compared with C function.
Please let me know and I can remove the optimization of stride 1 case.
If it's allowed to skip the split of A_Q28 and replace by 32-bit
multiplication