andrew@webrtc.org ceafa8cce9 MIPS optimizations for ISAC (patch #2)
Implemented functions:
- WebRtcIsacfix_CalculateResidualEnergy
- WebRtcIsacfix_Spec2Time
- WebRtcIsacfix_Time2Spec
- WebRtcIsacfix_HighpassFilterFixDec32
- WebRtcIsacfix_PCorr2Q32

Gain achieved: aprox. further 5% on top of patch#1 on ISAC encoding path.
The optimizations are bit-exact to the C code, with the excception of the
MIPS DSPr2 variant of the WebRtcIsacfix_Time2Spec function (the accuracy of
the WebRtcIsacfix_Time2Spec MIPS DSPr2 variant is same or better than C
variant). Code verification and improvement achieved have been determined
using the iSACFixtest application.

R=andrew@webrtc.org, tina.legrand@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/19749004

Patch from Ljubomir Papuga <lpapuga@mips.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6749 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-21 16:43:13 +00:00

147 lines
3.9 KiB
Python

# 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
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
{
'targets': [
{
'target_name': 'iSACFix',
'type': 'static_library',
'dependencies': [
'<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
'<(webrtc_root)/system_wrappers/source/system_wrappers.gyp:system_wrappers',
],
'include_dirs': [
'../interface',
'<(webrtc_root)'
],
'direct_dependent_settings': {
'include_dirs': [
'../interface',
'<(webrtc_root)',
],
},
'sources': [
'../interface/isacfix.h',
'arith_routines.c',
'arith_routines_hist.c',
'arith_routines_logist.c',
'bandwidth_estimator.c',
'decode.c',
'decode_bwe.c',
'decode_plc.c',
'encode.c',
'entropy_coding.c',
'fft.c',
'filterbank_tables.c',
'filterbanks.c',
'filters.c',
'initialize.c',
'isacfix.c',
'lattice.c',
'lattice_c.c',
'lpc_masking_model.c',
'lpc_tables.c',
'pitch_estimator.c',
'pitch_estimator_c.c',
'pitch_filter.c',
'pitch_filter_c.c',
'pitch_gain_tables.c',
'pitch_lag_tables.c',
'spectrum_ar_model_tables.c',
'transform.c',
'transform_tables.c',
'arith_routins.h',
'bandwidth_estimator.h',
'codec.h',
'entropy_coding.h',
'fft.h',
'filterbank_tables.h',
'lpc_masking_model.h',
'lpc_tables.h',
'pitch_estimator.h',
'pitch_gain_tables.h',
'pitch_lag_tables.h',
'settings.h',
'spectrum_ar_model_tables.h',
'structs.h',
],
'conditions': [
['OS!="win"', {
'defines': [
'WEBRTC_LINUX',
],
}],
['(target_arch=="arm" and arm_version==7) or target_arch=="armv7"', {
'dependencies': [ 'isac_neon', ],
'sources': [
'lattice_armv7.S',
'pitch_filter_armv6.S',
],
'sources!': [
'lattice_c.c',
'pitch_filter_c.c',
],
}],
['target_arch=="mipsel"', {
'sources': [
'filters_mips.c',
'lattice_mips.c',
'pitch_estimator_mips.c',
'transform_mips.c',
],
'sources!': [
'lattice_c.c',
'pitch_estimator_c.c',
],
'conditions': [
['mips_dsp_rev>0', {
'sources': [
'filterbanks_mips.c',
],
}],
['mips_dsp_rev>1', {
'sources': [
'lpc_masking_model_mips.c',
'pitch_filter_mips.c',
],
'sources!': [
'pitch_filter_c.c',
],
}],
],
}],
],
},
],
'conditions': [
['(target_arch=="arm" and arm_version==7) or target_arch=="armv7"', {
'targets': [
{
'target_name': 'isac_neon',
'type': 'static_library',
'includes': ['../../../../../../build/arm_neon.gypi',],
'dependencies': [
'<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
],
'include_dirs': [
'<(webrtc_root)',
],
'sources': [
'entropy_coding_neon.c',
'filterbanks_neon.S',
'filters_neon.S',
'lattice_neon.S',
'lpc_masking_model_neon.S',
'transform_neon.S',
],
},
],
}],
],
}