shithub: opus

Download patch

ref: 8d6467c7ed09535845f7c84074e7ffc1f2a364c8
parent: ad29b2c26a9a74cff984073336b7a27dd84ccef6
author: Gregory Maxwell <[email protected]>
date: Thu Sep 29 12:20:38 EDT 2011

More silk/ resampler cleanup.

--- a/silk/resampler_private.h
+++ b/silk/resampler_private.h
@@ -88,16 +88,6 @@
     opus_int32                        len                /* I:    Signal length                            */
 );
 
-/* Fourth order ARMA filter */
-void silk_resampler_private_ARMA4(
-    opus_int32                        S[],            /* I/O: State vector [ 4 ]                        */
-    opus_int16                        out[],            /* O:    Output signal                            */
-    const opus_int16                    in[],            /* I:    Input signal                            */
-    const opus_int16                    Coef[],            /* I:    ARMA coefficients [ 7 ]                 */
-    opus_int32                        len                /* I:    Signal length                            */
-);
-
-
 #ifdef __cplusplus
 }
 #endif
--- a/silk/resampler_private_ARMA4.c
+++ /dev/null
@@ -1,75 +1,0 @@
-/***********************************************************************
-Copyright (c) 2006-2011, Skype Limited. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, (subject to the limitations in the disclaimer below)
-are permitted provided that the following conditions are met:
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-- Neither the name of Skype Limited, nor the names of specific
-contributors, may be used to endorse or promote products derived from
-this software without specific prior written permission.
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED
-BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
-CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "SigProc_FIX.h"
-#include "resampler_private.h"
-
-/* Fourth order ARMA filter                                             */
-/* Internally operates as two biquad filters in sequence.               */
-
-/* Coeffients are stored in a packed format:                                                        */
-/*    { B1_Q14[1], B2_Q14[1], -A1_Q14[1], -A1_Q14[2], -A2_Q14[1], -A2_Q14[2], gain_Q16 }            */
-/* where it is assumed that B*_Q14[0], B*_Q14[2], A*_Q14[0] are all 16384                           */
-
-void silk_resampler_private_ARMA4(
-    opus_int32                        S[],            /* I/O: State vector [ 4 ]                        */
-    opus_int16                        out[],            /* O:    Output signal                            */
-    const opus_int16                    in[],            /* I:    Input signal                            */
-    const opus_int16                    Coef[],            /* I:    ARMA coefficients [ 7 ]                 */
-    opus_int32                        len                /* I:    Signal length                            */
-)
-{
-    opus_int32 k;
-    opus_int32 in_Q8, out1_Q8, out2_Q8, X;
-
-    for( k = 0; k < len; k++ ) {
-        in_Q8  = silk_LSHIFT32( (opus_int32)in[ k ], 8 );
-
-        /* Outputs of first and second biquad */
-        out1_Q8 = silk_ADD_LSHIFT32( in_Q8,   S[ 0 ], 2 );
-        out2_Q8 = silk_ADD_LSHIFT32( out1_Q8, S[ 2 ], 2 );
-
-        /* Update states, which are stored in Q6. Coefficients are in Q14 here */
-        X      = silk_SMLAWB( S[ 1 ], in_Q8,   Coef[ 0 ] );
-        S[ 0 ] = silk_SMLAWB( X,      out1_Q8, Coef[ 2 ] );
-
-        X      = silk_SMLAWB( S[ 3 ], out1_Q8, Coef[ 1 ] );
-        S[ 2 ] = silk_SMLAWB( X,      out2_Q8, Coef[ 4 ] );
-
-        S[ 1 ] = silk_SMLAWB( silk_RSHIFT32( in_Q8,   2 ), out1_Q8, Coef[ 3 ] );
-        S[ 3 ] = silk_SMLAWB( silk_RSHIFT32( out1_Q8, 2 ), out2_Q8, Coef[ 5 ] );
-
-        /* Apply gain and store to output. The coefficient is in Q16 */
-        out[ k ] = (opus_int16)silk_SAT16( silk_RSHIFT32( silk_SMLAWB( 128, out2_Q8, Coef[ 6 ] ), 8 ) );
-    }
-}
-
-
--- a/silk/resampler_private_IIR_FIR.c
+++ b/silk/resampler_private_IIR_FIR.c
@@ -74,13 +74,9 @@
     while( 1 ) {
         nSamplesIn = silk_min( inLen, S->batchSize );
 
-        if( S->input2x == 1 ) {
-            /* Upsample 2x */
-                silk_resampler_private_up2_HQ( S->sIIR, &buf[ RESAMPLER_ORDER_FIR_144 ], in, nSamplesIn );
-        } else {
-            /* Fourth-order ARMA filter */
-            silk_resampler_private_ARMA4( S->sIIR, &buf[ RESAMPLER_ORDER_FIR_144 ], in, S->Coefs, nSamplesIn );
-        }
+        silk_assert( S->input2x );
+        /* Upsample 2x */
+        silk_resampler_private_up2_HQ( S->sIIR, &buf[ RESAMPLER_ORDER_FIR_144 ], in, nSamplesIn );
 
         max_index_Q16 = silk_LSHIFT32( nSamplesIn, 16 + S->input2x );         /* +1 if 2x upsampling */
         out = silk_resampler_private_IIR_FIR_INTERPOL(out, buf, max_index_Q16, index_increment_Q16);
--- a/silk/silk_common.vcxproj
+++ b/silk/silk_common.vcxproj
@@ -146,7 +146,6 @@
     <ClCompile Include="resampler_down2.c" />
     <ClCompile Include="resampler_down2_3.c" />
     <ClCompile Include="resampler_private_AR2.c" />
-    <ClCompile Include="resampler_private_ARMA4.c" />
     <ClCompile Include="resampler_private_down_FIR.c" />
     <ClCompile Include="resampler_private_IIR_FIR.c" />
     <ClCompile Include="resampler_private_up2_HQ.c" />
--- a/silk/silk_common.vcxproj.filters
+++ b/silk/silk_common.vcxproj.filters
@@ -198,9 +198,6 @@
     <ClCompile Include="resampler_private_AR2.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="resampler_private_ARMA4.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="resampler_private_down_FIR.c">
       <Filter>Source Files</Filter>
     </ClCompile>
--- a/silk_sources.mk
+++ b/silk_sources.mk
@@ -71,7 +71,6 @@
 silk/resampler_down2_3.c \
 silk/resampler_down2.c \
 silk/resampler_private_AR2.c \
-silk/resampler_private_ARMA4.c \
 silk/resampler_private_down_FIR.c \
 silk/resampler_private_IIR_FIR.c \
 silk/resampler_private_up2_HQ.c \