| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Change-Id: I9e3cfa0c6b3467fe763ce55f759d179f02c5deea
|
|
|
|
|
|
| |
we were always erasing the current mix instead of mixing into it.
Change-Id: Ib229245f9e5a0d384f1727640a59e9f0469211a2
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
this currently gives us a 60% to 80% boost depending
on the quality level selected.
Change-Id: I7db385007e811ed7bffe5fd3403b44e300894f5b
|
|
|
|
| |
Change-Id: Ia12ee4fb59e90221761bec85e6450db29197591f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
make sure the C version of the code generates the same
output than the ARM assemply version.
Change-Id: Ide218785c35d02598b2d7278e646b1b178148698
|
|
|
|
|
|
|
|
| |
the impulse response of a low-pass is 2*f*sinc(2*pi*f*k), we were
missing the 2*f scale factor. This explains why we were seeing
clipping and had to manually scale the filter down.
Change-Id: I86d0bb82ecdd99681c8ba5a8112a8257bf6f0186
|
|
|
|
|
|
|
|
|
|
| |
up-sample coefficient were generated with a cut-off frequency of 24KHz
intead of ~20KHz, which caused more aliasing in the audible band.
also increased the attenuation to 1.3 dB on both up and down
sampling coefficient to avoid clipping.
Change-Id: Ie8aeecf1429190541b656810c6716b6aae5ece2e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
| |
the problem is that if libaudio_resampler is present, it is those
coefficients that will always be selected, but the correct
meta-data.
Bug: 7385994
Change-Id: Ieebeb37b4dfb62a1a051bc29fae2ce056dbc6621
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
-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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix indentation to be multiple of 4.
Make it easier to search:
sp< not sp < to
"switch (...)" instead of "switch(...)" (also "if" and "while")
Remove redundant blank line at start or EOF.
Remove whitespace at end of line.
Remove extra blank lines where they don't add value.
Use git diff -b or -w to verify.
Change-Id: I966b7ba852faa5474be6907fb212f5e267c2874e
|
|
|
|
|
|
|
|
| |
Bring in changes to audio flinger made to support timed audio tracks
and HW master volume control.
Change-Id: Ide52d48809bdbed13acf35fd59b24637e35064ae
Signed-off-by: John Grossman <johngro@google.com>
|
|
|
|
|
|
|
|
|
| |
Code was aliasing mBuffer as buffer, but continuing to use both buffer
and mBuffer after that point. This was at best misleading, and at worst
could confuse the compiler into generating bad code. There was no
performance advantage to the alias, in fact removing it saves 16 bytes.
Change-Id: I55023ddba465d9be82f66745b088d18af658ac60
|
|
|
|
| |
Change-Id: I70203abd6a6f54e5bd9f1412800cc01212157e58
|
|
moved surfaceflinger, audioflinger, cameraservice
all native services should now reside in this location.
Change-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8
|