| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
malloc/free directly
|
|\ |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Fallback to the default C implementation when the remap init function did not
set a function.
|
| |
| |
| |
| |
| | |
Move the remapping code into a separate file. Have functions to install custom
init functions that can install optimized versions, when they want.
|
| |
| |
| |
| |
| |
| | |
Move the channel remapping bits into a separate structure. We'll make this
structure global so that optimized versions can use it to perform the channel
remapping.
|
| |
| |
| |
| | |
Add methods to override the default conversion functions.
|
| |
| |
| |
| |
| | |
Use PA_MAX
Use pa_rtclock_now() for benchmarks
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Fix the identity matrix check for mono to stereo.
Help the compiler generate better code for the C implementation of the channel
remapping code.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Factor out the channel remap matrix code into a separate function.
Keep a pointer to the channel remapping function so we can install custom
functions.
Catch the common mono->stereo remapping case and install a custom, more
optimized function.
|
| |
| |
| |
| | |
Mark code that should only be compiled on x86 CPUs with proper defines.
|
| | |
|
| |
| |
| |
| |
| | |
We don't need the compare because the sub operation already set the right flags
for us.
|
| |
| |
| |
| |
| | |
Calculate and cache an integer version of the channel map so that we don't have
to regenerate it when dealing with s16 samples.
|
| |
| |
| |
| |
| |
| |
| | |
Get rid of the liboil dependency and reimplement the liboil functions with an
equivalent C implementation. Note that most of these functions are deprecated in
liboil and that none of them had any optimisations. We can further specialize
our handrolled versions for some extra speedups.
|
| | |
|
| | |
|
| |
| |
| |
| | |
MMX is about 6x faster, SSE around 15x on my machine.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Add CPU detection code to activate the various optimisations.
Move some method definitions around.
Use compatibility macros when we can.
|
| |
| |
| |
| |
| | |
Add CPU detection code and various macros and typdefs to make it easier to write
64 and 32 bit code.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Add code for an mmx optimized version of s16ne volume scaling. Install the
custom function.
|
| |
| |
| |
| |
| | |
Pad the volume array with a copy of the start. We'll need this later to be able
to write optimized functions.
|
| |
| |
| |
| |
| | |
Move the volume code into a separate file with the reference C implementations.
Add a function to retrieve the volume function and one to install a new one.
|
| |
| |
| |
| | |
Move some stuff around before splitting it into a separate file.
|
| |
| |
| |
| |
| |
| | |
Make the coding style match the rest of pulseaudio more.
Remove some liboil functions, they seem unoptimized and likely slower than our
handrolled versions here.
|
| |
| |
| |
| |
| | |
Move the volume functions out of the switch case and use a table indexed by the
sample format to find the volume function.
|
| |
| |
| |
| | |
inputs
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Provides getgrgid, getgrnam, getpwuid & getpwnam replacements that are
thread safe (a la getgrgid_r() and friends) that internally
handle allocating big-enough buffers to avoid ERANGE errors
on large users or groups.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Instead of using string contents for type identification use the address
of a constant string array. This should speed up type verifications a
little sind we only need to compare one machine word instead of a full
string. Also, this saves a few strings.
To make clear that types must be compared via address and not string
contents 'type_name' is now called 'type_id'.
This also simplifies the macros for declaring and defining public and
private subclasses.
|
| | |
|
|/ |
|
|
|
|
|
|
|
| |
According to POSIX getgrnam_r() returns the error code as return value,
and not in errno. Honour that.
Pointed out and inspired by a patch from Ted Percival.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- We now implement a logic where the sink maintains two distinct
volumes: the 'reference' volume which is shown to the users, and the
'real' volume, which is configured to the hardware. The latter is
configured to the max of all streams. Volume changes on sinks are
propagated back to the streams proportional to the reference volume
change. Volume changes on sink inputs are forwarded to the sink by
'pushing' the volume if necessary.
This renames the old 'virtual_volume' to 'real_volume'. The
'reference_volume' is now the one exposed to users.
By this logic the sink volume visible to the user, will always be the
"upper" boundary for everything that is played. Saved/restored stream
volumes are measured relative to this boundary, the factor here is
always < 1.0.
- introduce accuracy for sink volumes, similar to the accuracy we
already have for source volumes.
- other cleanups.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- drop the 'virtual_' prefix from s->virtual_volume since we don't
distuingish between reference and real volumes for sources
- introduce an accuracy for source volumes: if the hardware can control
the volume "close enough" don't necessarily adjust the rest in
software unless it is beyond a certain threshold. This should save a
little bit of CPU at the expensive of a bit of accuracy in volume
handling.
- other minor cleanups
|