Optimized function WebRtcSpl_FilterARFastQ12 for ARM platform.

Speed close to doubled for an offline test in NetEq.
Bit exact.
Review URL: https://webrtc-codereview.appspot.com/346001

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1520 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
kma@webrtc.org
2012-01-24 02:12:49 +00:00
parent 6da8eeb946
commit 4bc24c4afa
4 changed files with 280 additions and 56 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
@@ -385,11 +385,28 @@ void WebRtcSpl_FilterMAFastQ12(WebRtc_Word16* in_vector,
WebRtc_Word16* ma_coef,
WebRtc_Word16 ma_coef_length,
WebRtc_Word16 vector_length);
void WebRtcSpl_FilterARFastQ12(WebRtc_Word16* in_vector,
WebRtc_Word16* out_vector,
WebRtc_Word16* ar_coef,
WebRtc_Word16 ar_coef_length,
WebRtc_Word16 vector_length);
// WebRtcSpl_FilterARFastQ12(...)
//
// Performs a AR filtering on a vector in Q12
//
// Input:
// - data_in : Input samples
// - data_out : State information in positions
// data_out[-order] .. data_out[-1]
// - coefficients : Filter coefficients (in Q12)
// - coefficients_length : Number of coefficients (order+1)
// - data_length : Number of samples to be filtered
//
// Output:
// - data_out : Filtered samples
void WebRtcSpl_FilterARFastQ12(int16_t* data_in,
int16_t* data_out,
int16_t* __restrict coefficients,
int coefficients_length,
int data_length);
int WebRtcSpl_DownsampleFast(WebRtc_Word16* in_vector,
WebRtc_Word16 in_vector_length,
WebRtc_Word16* out_vector,
@@ -1437,23 +1454,6 @@ void WebRtcSpl_SynthesisQMF(const WebRtc_Word16* low_band,
// - out_vector : Filtered samples
//
//
// WebRtcSpl_FilterARFastQ12(...)
//
// Performs a AR filtering on a vector in Q12
//
// Input:
// - in_vector : Input samples
// - out_vector : State information in positions
// out_vector[-order] .. out_vector[-1]
// - ar_coef : Filter coefficients (in Q12)
// - ar_coef_length : Number of B coefficients (order+1)
// - vector_length : Number of samples to be filtered
//
// Output:
// - out_vector : Filtered samples
//
//
// WebRtcSpl_DownsampleFast(...)
//