summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* core: Add infrastructure for synchronizing HW and SW volume changesJyri Sarha2010-10-163-31/+369
| | | | | | | | | | | | | | | | To make concurrent use of SW and HW volume glitchles their application needs to be synchronized. For accurate synchronization the HW volume needs to be applied in IO thread. This patch adds infrastructure to delay the applying of HW volume to match with SW volume timing. To avoid synchronization problems this patch moves many of the volume and mute related functions from main thread to IO thread. All these changes become active only if the sync volume flag for a sink has been set. So, for this patch to have any effect it needs to be taken into use by sink implementor. Signed-off-by: Jyri Sarha <jyri.sarha@nokia.com> Reviewed-by: Tanu Kaskinen <tanu.kaskinen@digia.com> Reviewd-by: Colin Guthrie <cguthrie@mandriva.org>
* volume: Decrease PA_VOLUME_MAX to be < 2^31Arun Raghavan2010-10-151-1/+1
| | | | | | | This decrease PA_VOLUME_MAX to be less than 2^31. We want to do this in order to simplify signed arithmetic when applying software volume scaling (since the volume can now always be safely treated as a signed number).
* pactl: Validate volume before settingArun Raghavan2010-10-151-0/+15
| | | | | This makes sure that a valid volume is provided before setting on sink/sink-input/source.
* cli: Validate volume before settingArun Raghavan2010-10-151-0/+15
| | | | | This causes an error to be generated if an invalid volume is provided to commands that set sink/sink-input/source volume.
* volume: Clamp volume to PA_VOLUME_MAXArun Raghavan2010-10-157-19/+24
| | | | | | This ensures that we always clamp the volume to PA_VOLUME_MAX. While this currently has no effect, it will be required for making sure we don't exceed PA_VOLUME_MAX when its value changes in the future.
* volume: Use a macro to check if a volume is validArun Raghavan2010-10-159-27/+30
| | | | | | | This adds a PA_VOLUME_IS_VALID() macro for checking if a given pa_volume_t is valid. This makes changes to the volume ranges simpler (just change PA_VOLUME_MAX, for example, without needing to modify any other code).
* SSE/MMX/ARM: Fix high frequency noise with unusual number of channelsDavid Henningsson2010-10-133-13/+25
| | | | | | | | 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>
* Merge remote branch 'vudentz2/master'Colin Guthrie2010-10-134-72/+1109
|\
| * bluetooth: Add support for Media APILuiz Augusto von Dentz2010-10-074-72/+1109
| | | | | | | | Make use of D-Bus to transfer file descriptors.
* | doxygen: Add 'See also' linking to the overview pageDavid Fries2010-10-1312-11/+46
| | | | | | | | | | | | | | 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.
* | doxygen: Documentation improvementsDavid Fries2010-10-135-15/+16
| | | | | | | | | | | | | | | | | | 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
* | doxygen: Fix the "all" comments regarding volume helper functions.David Fries2010-10-131-10/+11
| | | | | | | | | | | | 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.
* | doxygen: Fix documentation typosDavid Fries2010-10-133-7/+8
|/
* introspect: Include whether a stream is corked in the info callback.Colin Guthrie2010-10-065-5/+23
|
* augment-properties: Fix debug messages and statement bracketing.Colin Guthrie2010-10-061-2/+3
|
* sink-input: Fix commentColin Guthrie2010-10-011-1/+1
|
* suspend: Do not assert when checking for device suspended status and a ↵Colin Guthrie2010-10-012-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* device-manager: Ensure that sinks/sources populate the device manager lists ↵Colin Guthrie2010-09-291-5/+59
| | | | | | | 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.
* augment-properties: Search for .desktop files in subfolders too.Colin Guthrie2010-09-291-5/+39
|
* echo-cancel: Use S16NE for adrian moduleArun Raghavan2010-09-271-9/+5
| | | | | | 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.
* echo-cancel: Ensure correct handling of endiannessArun Raghavan2010-09-232-3/+4
| | | | | | 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.
* echo-cancel: orc-ify some bits for optimisationArun Raghavan2010-09-236-5/+336
| | | | | This uses Orc to optimise an inner loop in the core NLMS function of the Adrian echo canceller.
* echo-cancel: Add SSE optimisation to the adrian moduleArun Raghavan2010-09-237-12/+61
| | | | | | 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.
* cpu: Add CPU information to pa_coreArun Raghavan2010-09-238-55/+119
| | | | | | 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.
* build: Fix make distcheckArun Raghavan2010-09-231-0/+1
| | | | src/utils/qpaeq was not being dist'ed
* echo-cancel: Fix out-of-tree buildArun Raghavan2010-09-201-0/+2
|
* x11: Use the default screen for X11 properties.Colin Guthrie2010-09-185-69/+95
| | | | | This commit restores the functionality originally included in 65e807 by Leszek Koltunski.
* xcb: xcb_get_setup() can return 0, so make sure we check it before usingColin Guthrie2010-09-181-20/+48
|
* xcb: Ensure the XCB connection is valid before using it.Colin Guthrie2010-09-182-0/+10
|
* x11: Partially convert to XCB.Colin Guthrie2010-09-187-97/+108
| | | | | | | | | 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.
* alsa: Only set the 'first' flag to false when we actually call snd_pcm_start()Colin Guthrie2010-09-141-1/+2
| | | | Previously, if work_done was false, we could conceivably not call snd_pcm_start().
* alsa: Set the rewind safeguard proportionally to sample specColin Guthrie2010-09-141-2/+3
| | | | | | | | | | | | | 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
* alsa-mixer: add profile for Traktor Kontrol S4Daniel Mack2010-09-123-1/+84
| | | | | This new audio interface from Native Instruments has 2 stereo channels for both input and output direction. This patch adds mappings for them.
* echo-cancel: Fix make distcheckRico Tzschichholz2010-09-101-4/+5
| | | | | Add missing files to module_echo_cancel_la_SOURCES Add Adrian license file to EXTRA_DIST
* echo-cancel: pause timer when echo canceling is offWim Taymans2010-09-091-16/+25
| | | | | While the sink or source is in the suspended state, disable the timer callback because we are not doing any echo canceling then.
* echo-cancel: improve accuracyWim Taymans2010-09-091-1/+5
| | | | | Make the echo canceler drift up to 1ms now that things are more accurate. Add 10 samples of headroom to allow for timing inaccuracies.
* alsa: make defines for smoother configurationWim Taymans2010-09-092-4/+10
| | | | | | | | | | | | 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.
* echo-cancel: rework alignment codeWim Taymans2010-09-091-59/+76
| | | | | Rework the code to align capture and playback samples so that we can keep more accurate timings.
* alsa: work around slightly broken _delay implementationsWim Taymans2010-09-094-6/+46
| | | | | | 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.
* alsa-time-test: make test usable for capture tooWim Taymans2010-09-071-16/+43
| | | | Extend the test to also work for capture devices.
* alsa-source: refactor smoother and device startWim Taymans2010-09-071-8/+18
| | | | | | | 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.
* smoother: avoid losing precisionWim Taymans2010-09-071-3/+1
| | | | | Avoid losing precision by subtracting uint64 values before converting them to doubles.
* echo-cancel: Mark immutable parameters as const in vfuncArun Raghavan2010-09-073-5/+5
| | | | | Marks the recording and playback streams as const in the pa_echo_canceller->run method for clarity.
* echo-cancel: Make blocksize a module-wide parameterArun Raghavan2010-09-074-43/+25
| | | | | | 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.
* echo-cancel: Allow selection of AEC method using modargsArun Raghavan2010-09-071-8/+27
| | | | | This adds an "aec_method" module argument to allow us to select the AEC implementation to use.
* echo-cancel: Add alternative echo-cancellation implementationArun Raghavan2010-09-078-1/+798
| | | | | | | | | | | | 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).
* echo-cancel: Let AEC module determine source/sink specArun Raghavan2010-09-073-24/+49
| | | | | | | | | | | | | 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.
* echo-cancel: Pass arguments to the specific canceller moduleArun Raghavan2010-09-073-33/+53
| | | | | This allows us to tweak module parameters for whichever AEC module is chosen.
* echo-cancel: Split out speex code from the core moduleArun Raghavan2010-09-074-36/+184
| | | | | This splits out the echo-cancelling core from the PA-specific bits to allow us to plug in other echo-cancellation engines.
* echo-cancel: Move the module into it's own directoryArun Raghavan2010-09-072-2/+2
| | | | This will make splitting out the canceller parts cleaner.