c4974312e5a1e2ab94eca56045f991baf1508d73 |
|
14-Dec-2012 |
Glenn Kasten <gkasten@google.com> |
Fix build warnings Change-Id: I9e3cfa0c6b3467fe763ce55f759d179f02c5deea
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|
7492a7ff46a75b5d8e10ae11d4ad50429cf945ce |
|
10-Nov-2012 |
Mathias Agopian <mathias@google.com> |
more optimizations... calculate the offsets from the phase differently, this happens to reduce the register pressure in the main loop, which in turns allows the compiler to generate much better code (doesn't need to spill a lot of stuff on the stack). this gives another 15% performance increase Change-Id: I2ce3479dd48b9e6941adb80e6d443d6e14d64d96
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|
0d585c85524eb5d398fadff5ca8dd43939ed9cb4 |
|
10-Nov-2012 |
Mathias Agopian <mathias@google.com> |
refactor code to improve neon code we want to make sure we don't transfer data from the neon unit to the arm register file, as this can be quite slow. instead we do all the calculation on the neon side and write the result directly to main memory. Change-Id: Ibb56664d3ab03098ae2798b75e2b6927ac900187
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|
46afbec3743f1d799f185273ff897d1f8e0175dd |
|
04-Nov-2012 |
Mathias Agopian <mathias@google.com> |
change how we store the FIR coefficients The coefficient table is now transposed and shows much better its polyphase nature: we now have a FIR per line, each line corresponding to a phase. This doesn't change at all the results produced by the filter, but allows us to make slightly better use of the data cache and improves performance a bit (although not as much as I thought it would). The main benefit is that it is the first step before we can make much larger optimizations (like using NEON). Change-Id: Iebf7695825dcbd41f25861efcaefbaa3365ecb43
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|
a798c97386a842d06d290797ba5dce95d031332a |
|
04-Nov-2012 |
Mathias Agopian <mathias@google.com> |
improve SINC resampler performance The improvement is about 60% by just tweaking a few things to help the compiler generate better code. It turns out that inlining too much stuff manually was hurting us. Change-Id: I8068f0f75051f95ac600e50ce552572dd1e8c304
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|
443e69625d598ea578e2c838960778ce498fd773 |
|
26-Oct-2012 |
Mathias Agopian <mathias@google.com> |
improve SINC resampler coefficients - we increase the interpolation precision from 4 to 7 bits this doesn't increase CPU power required, it only increases the size of the filter table but significantly reduces the noise introduced by the quantization of the impulse response. - the parameters of the filter are set such that aliasing is rejected at 80 dB below 20 KHz. Because we don't use a lot of coefficient (to save compute power), there are quite a bit of attenuation in the pass-band: starting at 9KHz for the down-sampler (48 to 44.1), and starting at 13 KHz for the up-sampler (44.1 to 48) -- the transition band is about 15 KHz. Change-Id: I855548d2aab8a0fb0d2a2da3a364b6842d7d3838
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|
ac6020508acedd316391dee42329040bf45f8d90 |
|
01-Oct-2012 |
Glenn Kasten <gkasten@google.com> |
Integrate improved coefficient sinc resampler: VHQ Summary: Very high quality is enabled only for 44.1 -> 48 or 48 -> 44.1, and uses low quality for all other use cases. Track estimated CPU load and throttles the quality based on load; as currently configured it should allow up to 2 instances of very high quality. Medium quality and high quality are currently disabled unless explicitly requested. Details: Only load .so the first time it is needed. Cleanup code style: formatting, indentation, whitespace. Restore medium quality resampler, but it is not used (see next line). Fix memory leak for sinc resampler. Check sample rate in resampler constructor. Add logs for debugging. Rename DEFAULT to DEFAULT_QUALITY for consistency with other quality levels. Renumber VERY_HIGH_QUALITY from 255 to 4. Use enum src_quality consistently. Improve parsing of property af.resampler.quality. Fix reentrancy bug - allow an instance of high quality and an instance of very high quality to both be active concurrently. Bug: 7229644 Change-Id: I0ce6b913b05038889f50462a38830b61a602a9f7
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|
76b111685010e1fea7c0a865c038aee35507fde4 |
|
17-Jan-2012 |
SathishKumar Mani <smani@codeaurora.org> |
audioflinger: use resample coefficients from audio-resampler library. -Add a separate quality VERY_HIGH_QUALITY in resampler -Use resample coefficients audio-resampler library for quality VERY_HIGH_QUALITY. -This improves the quality of resampled output. Bug: 7024293 Change-Id: Ia44142413bed5f5963d7eab7846eec877a2415e4 Signed-off-by: Iliyan Malchev <malchev@google.com>
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|
c19e22450e6e3d07594c935c7a9522e85e909e82 |
|
30-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use virtual destructors It turns out to be just a comment, as all except AudioMixer are RefBase. There are only a few performance-sensitive cases where it's worth thinking about whether you need a virtual destructor, and the headache usually outweighs the benefit. Change-Id: I716292f9556ec17c29ce8c76ac8ae602cb496533
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|
54c3b66444ebfb9f2265ee70ac3b76ccefa0506a |
|
06-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
By convention const goes before the type specifier Change-Id: I70203abd6a6f54e5bd9f1412800cc01212157e58
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|
65ab47156e1c7dfcd8cc4266253a5ff30219e7f0 |
|
15-Jul-2010 |
Mathias Agopian <mathias@google.com> |
move native services under services/ moved surfaceflinger, audioflinger, cameraservice all native services should now reside in this location. Change-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8
/frameworks/av/services/audioflinger/AudioResamplerSinc.h
|