AudioResampler: Add property for resampler testing.
Add ro.audio.resampler.psd.tbwcheat to allow partner experimentation
Test: native resampler_tests.
Bug: 123920996
Change-Id: I983ab3ef7303fc9d93fc680de05d0cf3cfd7ff5a
diff --git a/media/libaudioprocessing/AudioResamplerDyn.cpp b/media/libaudioprocessing/AudioResamplerDyn.cpp
index 0a389bb..ec56b00 100644
--- a/media/libaudioprocessing/AudioResamplerDyn.cpp
+++ b/media/libaudioprocessing/AudioResamplerDyn.cpp
@@ -201,6 +201,8 @@
"ro.audio.resampler.psd.stopband", mPropertyStopbandAttenuation);
mPropertyCutoffPercent = property_get_int32(
"ro.audio.resampler.psd.cutoff_percent", mPropertyCutoffPercent);
+ mPropertyTransitionBandwidthCheat = property_get_int32(
+ "ro.audio.resampler.psd.tbwcheat", mPropertyTransitionBandwidthCheat);
}
template<typename TC, typename TI, typename TO>
@@ -379,9 +381,17 @@
halfLength = mPropertyHalfFilterLength;
stopBandAtten = mPropertyStopbandAttenuation;
useS32 = true;
- fcr = mInSampleRate <= mSampleRate
- ? 0.5 : 0.5 * mSampleRate / mInSampleRate;
- fcr *= mPropertyCutoffPercent / 100.;
+
+ // Use either the stopband location for design (tbwCheat)
+ // or use the 3dB cutoff location for design (fcr).
+ // This choice is exclusive and based on whether fcr > 0.
+ if (mPropertyTransitionBandwidthCheat != 0) {
+ tbwCheat = mPropertyTransitionBandwidthCheat / 100.;
+ } else {
+ fcr = mInSampleRate <= mSampleRate
+ ? 0.5 : 0.5 * mSampleRate / mInSampleRate;
+ fcr *= mPropertyCutoffPercent / 100.;
+ }
} else {
// Voice quality devices have lower sampling rates
// (and may be a consequence of downstream AMR-WB / G.722 codecs).
diff --git a/media/libaudioprocessing/AudioResamplerDyn.h b/media/libaudioprocessing/AudioResamplerDyn.h
index 479142e..82b9505 100644
--- a/media/libaudioprocessing/AudioResamplerDyn.h
+++ b/media/libaudioprocessing/AudioResamplerDyn.h
@@ -193,6 +193,13 @@
int32_t mPropertyCutoffPercent = 100;
// "ro.audio.resampler.psd.cutoff_percent"
+ // Specify the transition bandwidth extension beyond Nyquist.
+ // If this is nonzero then mPropertyCutoffPercent is ignored.
+ // A value of 100 or greater is typically used, where 100 means the
+ // stopband is at Nyquist (this is a typical design).
+ int32_t mPropertyTransitionBandwidthCheat = 0;
+ // "ro.audio.resampler.psd.tbwcheat"
+
// Filter creation design parameters, see setSampleRate()
double mStopbandAttenuationDb = 0.;
double mPassbandRippleDb = 0.;