| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
In the assembly optimized versions of SSE, a noise could occur when the
number of channels were 3,5,6 or 7. For MMX and ARM, this could occur
when the number of channels were 3.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
|
|\ |
|
| |
| |
| |
| | |
Make use of D-Bus to transfer file descriptors.
|
| |
| |
| |
| |
| |
| |
| | |
A good many of the header files are broken into a function
reference page and an overview page. These changes add
a direct link from each function reference page to their
overview page if one exists.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
stream.h, simple.h
The words drain and flush are a little ambiguous, make it explicit as
to what happens to any existing audio.
*mainloop.h
reword *_free and *_get_api for grammar
|
| |
| |
| |
| |
| |
| | |
Mostly change "Set the volume of all channels" to
"Set the volume of the first n channels" as the first is incorrect,
it doesn't set all the channels and doesn't explain what n was for.
|
|/ |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
stream is not linked.
When looping through the streams on a given device checking to see if the
stream is 'active' there should be no assert if the stream is not linked, it
should simply be ignored.
This assert can be hit if a sink and a sink input are both created and setup
but the final put calls are left to the end as is done in module-ladspa-sink.
While the order of the calls in module-ladspa-sink could be altered, we should
deal gracefully with the way it is now and not complain about ending up
in this state.
A trigger case was trivial:
1. Load a ladspa-sink.
2. Play a stream and move it to it.
3. Unload the module, then reload it.
4. Due to module-stream-restore and module-suspend-on-idle, the hook callbacks
will ultimately hit this assert.
Thanks to Kim Therkelsen for highlighting this issue.
|
|
|
|
|
|
|
| |
in order of their priority.
Currently the order of the sinks is simply that of their position in the idxset which is certainly
not what the user would want.
|
| |
|
| |
|
|
|
|
|
|
| |
This forces us to get native-endian samples in the adrian module so that
we can rely on the existing endianness conversion mechanisms instead of
doing it in the module.
|
|
|
|
|
|
| |
The adrian module was using home-brewed endianness conversion instead of
the appropriate mactos, and speex assumed a little-endian host. This
fixes both of these.
|
|
|
|
|
| |
This uses Orc to optimise an inner loop in the core NLMS function of the
Adrian echo canceller.
|
|
|
|
|
|
| |
Optimises the core inner-product function, which takes the most CPU. The
SSE-optimised bits of the adrian echo canceller only if the CPU that PA
is running on actually supports SSE.
|
|
|
|
|
|
| |
This retains CPU information (processor type and supported features) in
pa_core, so that this information can be used by modules at init time to
figure out what optimisations may be used.
|
|
|
|
| |
src/utils/qpaeq was not being dist'ed
|
| |
|
|
|
|
|
| |
This commit restores the functionality originally included in 65e807
by Leszek Koltunski.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
This commit mostly converts the X11 handling to XCB. There are still
some uses of XLib to deal with the X11 session handling modules, however all
client-side code should now be free of XLib and thus this should fix Bug #799
Note that this removes the screen-based changes by Leszek Koltunski
in 65e80, however this will be restored in due course.
|
|
|
|
| |
Previously, if work_done was false, we could conceivably not call snd_pcm_start().
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently when rewinding alsa, a fixed value of 256 bytes is used,
which represents 1.33ms @ 48kHz (2ch, 16bit). This is typically fine
and due to DMA constraints we would not want to rewind less than this.
However with more demanding sample specs, (e.g. 8ch 192kHz 32bit)
256 bytes is likely not sufficient, so calculate what 1.33ms would
be and use which ever value is bigger.
Discussed with David Henningsson and Pierre-Louis Bossart here:
http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/7286
|
|
|
|
|
| |
This new audio interface from Native Instruments has 2 stereo channels
for both input and output direction. This patch adds mappings for them.
|
|
|
|
|
| |
Add missing files to module_echo_cancel_la_SOURCES
Add Adrian license file to EXTRA_DIST
|
|
|
|
|
| |
While the sink or source is in the suspended state, disable the timer
callback because we are not doing any echo canceling then.
|
|
|
|
|
| |
Make the echo canceler drift up to 1ms now that things are more accurate.
Add 10 samples of headroom to allow for timing inaccuracies.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make new defines for the smoother window size and adjust time constants instead
of reusing some unrelated constant.
Increase the smoother window size even more because the bigger it is, the
better. Since we have a 200ms max update interval and the max smoother history
is 64 entries, 10seconds is a good default.
Decrease the smoother adjust time to 1 second. The previous value of 4 seconds
was too much to adapt quickly after a resume.
|
|
|
|
|
| |
Rework the code to align capture and playback samples so that we can keep more
accurate timings.
|
|
|
|
|
|
| |
Use snd_pcm_avail_delay() in pa_alsa_safe_delay() so that we can check the delay
value against the avail value and patch it up when it looks invalid. Only do
this for capture.
|
|
|
|
| |
Extend the test to also work for capture devices.
|
|
|
|
|
|
|
| |
Move the code to start the capture and the smoother closer together to improve
smoother accuracy.
Rework things to look more like the alsa sink where the device is started in
only one place.
|
|
|
|
|
| |
Avoid losing precision by subtracting uint64 values before converting them to
doubles.
|
|
|
|
|
| |
Marks the recording and playback streams as const in the
pa_echo_canceller->run method for clarity.
|
|
|
|
|
|
| |
Since all algorithms will need to specify a block size (the amount of
data to be processed together), we make this a common parameter and have
the implementation set it at initialisation time.
|
|
|
|
|
| |
This adds an "aec_method" module argument to allow us to select the AEC
implementation to use.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds Andre Adrian's AEC implementation from his intercom project
(http://andreadrian.de/intercom/) as an alternative to the speex echo
cancellation routines. Since the implementation was in C++ and not in
the form of a library, I have converted the code to C and made a local
copy of the implementation.
The implementation actually works on floating point data, so we can
tweak it to work with both integer and floating point samples (currently
we just use S16LE).
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since the source and sink specification will need to be determined by
the AEC algorithm (can it handle multi-channel audio, does it work with
a fixed sample rate, etc.), we negotiate these using inout parameters at
initialisation time.
There is opportunity to make the sink-handling more elegant. Since the
sink data isn't used for playback (just processing), we could pass
through the data as-is and resample to the required spec before using in
the cancellation algorithm. This isn't too important immediately, but
would be nice to have.
|
|
|
|
|
| |
This allows us to tweak module parameters for whichever AEC module is
chosen.
|
|
|
|
|
| |
This splits out the echo-cancelling core from the PA-specific bits to
allow us to plug in other echo-cancellation engines.
|
|
|
|
| |
This will make splitting out the canceller parts cleaner.
|
|
|
|
|
| |
When .including a directory, all files with the extension '.pa'
in that folder will be parsed in alphabetical order.
|
|
|
|
|
| |
40ms for the smoother window is too small. Increase the size to 4 seconds, like
we do for the sinks.
|
|
|
|
|
|
|
| |
The speex echo canceler prefers a power of 2 for the frame size. Round down the
ideal frame_size to the nearest power of two. This makes sure we don't create
more than the requested frame_size_ms latency while still providing a power of 2
to the speex echo canceller.
|
| |
|
|
|
|
|
|
| |
Try to keep the drift between source and sink within 4ms now that we have more
accurate timings.
Don't force a resync on latency changes but let the drift code handle it.
|