new coefficients for the vhq resampler
previous coefficients were provided by a 3rd party and didn't have a
way to re-generate them. we're now using the 'fir' utility.
the performance of the filter is virtually identical, except for
the down-sampling case which seems slightly better now:
It looks like both the previous and new coefficients are generating
some sort of clipping for full-scale signals in the down-sampling case
(although the new ones seem better), the reason for that is
unknown (see bug: 7453062)
Also updated the HQ coefficients for the down-samplers, previous ones
were a little bit too conservative -- the new ones push the cut-off
frequency up by about 1 KHz.
Change-Id: I54a827b5c707c7cc41268ed01283758dce1d7647
diff --git a/services/audioflinger/audio-resampler/AudioResamplerCoefficients.cpp b/services/audioflinger/audio-resampler/AudioResamplerCoefficients.cpp
index ade58a7..af3e40d 100644
--- a/services/audioflinger/audio-resampler/AudioResamplerCoefficients.cpp
+++ b/services/audioflinger/audio-resampler/AudioResamplerCoefficients.cpp
@@ -14,42 +14,41 @@
* limitations under the License.
*/
-#include <dnsampler_filter_coefficients_x128_10112011.h>
-#include <resampler_filter_coefficients_10042011.h>
-#undef LOG_TAG
-#include <utils/Log.h>
-//#include "common_log.h"
#define LOG_TAG "ResamplerCoefficients"
#define LOG_NDEBUG 0
-const int32_t RESAMPLE_FIR_NUM_COEF = 16;
-const int32_t RESAMPLE_FIR_LERP_INT_BITS = 7;
+#include <utils/Log.h>
+
+#include "filter_coefficients.h"
+
+const int32_t RESAMPLE_FIR_NUM_COEF = 16;
+const int32_t RESAMPLE_FIR_LERP_INT_BITS = 7;
using namespace android;
+
#ifdef __cplusplus
extern "C" {
#endif
+
const int32_t* readResamplerCoefficients(bool upSample) {
ALOGV("readResamplerCoefficients");
- if(upSample) {
- return resampler_filter_coefficients_10042011;
+ if (upSample) {
+ return up_sampler_filter_coefficients;
+ } else {
+ return dn_sampler_filter_coefficients;
}
- else {
- return dnsampler_filter_coefficients_x128_10112011;
- }
}
int32_t readResampleFirNumCoeff() {
-
return RESAMPLE_FIR_NUM_COEF;
}
int32_t readResampleFirLerpIntBits() {
-
- return RESAMPLE_FIR_LERP_INT_BITS;
+ return RESAMPLE_FIR_LERP_INT_BITS;
}
+
#ifdef __cplusplus
}
#endif