summaryrefslogtreecommitdiffstats
path: root/src/modules
Commit message (Collapse)AuthorAgeFilesLines
* cork-on-phone: Only cork (and subsequently uncork) streams that are not ↵Colin Guthrie2011-03-121-8/+17
| | | | | | | | | | | | | | | | | already corked. Although by "cork" I really mean "cork+mute" as that's what the module does. If e.g. Rhythmbox is paused when a phone call comes in, the current stream state will be corked and thus we should not track it for future uncorking when the phone call ends. Likewise if the stream is just muted (manually) we will not take any action either when the phone stream is seen first, nor when it disappears. Also add some additional debug messages.
* Fix up according to Coding StyleMaarten Bosmans2011-03-1125-140/+85
| | | | Only whitespace changes in here
* alsa-mixer: When figuring out the max_dB of a path, use only channels that ↵Tanu Kaskinen2011-03-111-4/+9
| | | | | | | | | | | are used by the path elements. Without this, p->max_dB could never be less than 0 dB, because the loop at the end of pa_alsa_path_probe() would reset p->max_dB to 0 as soon as the loop encountered a channel that wasn't touched by any element. There was a similar issue for p->min_dB too (it could never be more than 0 dB), which is also fixed by this patch.
* alsa-mixer: Implement support for setting element specific upper limits for ↵Tanu Kaskinen2011-03-113-1/+69
| | | | | | | | | | | | | volume. This feature is mainly useful in embedded systems that have built-in speakers. In such situations the full audio path is known beforehand, so it's possible to know what is the maximum sensible volume, and any higher volume can be disabled. The volume limit is set in path configuration files in the [Element] section, using option "volume-limit". The value is the desired maximum volume step of the volume element.
* dbus: Always accept mono volumes when setting device or stream volume.Tanu Kaskinen2011-03-112-10/+8
| | | | | pa_sink_set_volume() and friends accept mono volumes too, so no need to impose unneeded restrictions in the D-Bus API.
* dbusiface-stream: Fix crash when there's no resampling used.Tanu Kaskinen2011-03-111-0/+5
|
* alsa-card: Print the profile set configuration when loading the card.Tanu Kaskinen2011-03-111-0/+1
|
* alsa-mixer: Add a default case for a switch, so that the compiler won't ↵Tanu Kaskinen2011-03-111-15/+17
| | | | complain about unhandled cases.
* alsa-mixer: Use decibel fixes when getting and setting decibel volumes.Tanu Kaskinen2011-03-112-56/+212
|
* alsa-mixer: Add DecibelFix section to the profile set config file format.Tanu Kaskinen2011-03-114-14/+297
| | | | | This commit only implements the parser, the decibel fix data is not yet used for anything.
* alsa-mixer: Fix a git-am cockup in b0f72311Colin Guthrie2011-03-041-3/+3
| | | | | | | | | | It seems git managed to mess up a git-am with a patch from David which moved where this function was called element_probe to within itself (recursive which could normally lead to an infinite loop, but as it was now never called from anywhere else, this didn't happen). Thank you to Maarten for spotting and following up the issue.
* Various fixes for build warningsMaarten Bosmans2011-03-021-1/+1
|
* Include <time.h> where necessaryMaarten Bosmans2011-03-011-0/+1
|
* alsa-mixer: Add support for "Line Boost" elementDavid Henningsson2011-02-282-0/+11
| | | | Signed-off-by: David Henningsson <david.henningsson@canonical.com>
* Add src/*-symdef.h to .gitignore.Tanu Kaskinen2011-02-281-1/+0
| | | | | Also remove src/module/.gitignore as this is no longer needed as pointed out by Arun Raghavan
* virtual-sink: Fix a crash when moving the sink to a new master right after ↵Tanu Kaskinen2011-02-262-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | setup. If the virtual sink is moved to a new master right after it has been created, then the virtual sink input's memblockq can be rewound to a negative read index. The data written prior to the move starts from index zero, so after the rewind there's a bit of silence. If the memblockq doesn't have a silence memchunk set, then pa_memblockq_peek() will return zero in such case, and the returned memchunk's memblock pointer will be NULL. That scenario wasn't taken into account in the implementation of sink_input_pop_cb. Setting a silence memchunk for the memblockq solves this problem, because pa_memblock_peek() will now return a valid memblock if the read index happens to point to a hole in the memblockq. I believe this isn't the best possible solution, though. It doesn't really make sense to rewind the sink input's memblockq beyond index 0 in the first place, because now when the stream starts to play to the new master sink, there's some unnecessary silence before the actual data starts. This is a small problem, though, and I don't grok the rewinding system well enough to know how to fix this issue properly. I went through all files that call pa_memblockq_peek() to see if there are more similar bugs. play-memblockq.c was the only one that looked to me like it might be broken in the same way. I didn't try reproducing the bug with play-memblockq.c, though, so I just added a FIXME comment there.
* virtual-sink/source: Remove an unused variable.Tanu Kaskinen2011-02-262-10/+0
|
* virtual-sink/source: Use a more descriptive stream name.Tanu Kaskinen2011-02-262-2/+2
|
* virtual-sink: Add a modarg for forcing flat volume.Tanu Kaskinen2011-02-261-1/+15
|
* virtual-sink: Add a modarg for enabling volume sharing.Tanu Kaskinen2011-02-261-5/+12
|
* alsa-mixer: Make sure capture source and input source use right pathDavid Henningsson2011-02-256-45/+12
| | | | | | | Make sure that mic and line (with common names) use the specific path instead of the analog-input one. Signed-off-by: David Henningsson <david.henningsson@canonical.com>
* alsa-mixer: Fixup "Mic"/"Line"/"analog-input" paths to work with the new pathsDavid Henningsson2011-02-254-22/+111
| | | | Signed-off-by: David Henningsson <david.henningsson@canonical.com>
* alsa-mixer: Add new paths for Internal Mic, Front Mic, Rear Mic and Dock MicDavid Henningsson2011-02-256-78/+317
| | | | Signed-off-by: David Henningsson <david.henningsson@canonical.com>
* alsa-mixer: always round towards 0 dBDavid Henningsson2011-02-251-6/+9
| | | | | | | Always round towards 0 dB. Also add a few debug comments to aid troubleshooting. Signed-off-by: David Henningsson <david.henningsson@canonical.com>
* alsa-mixer: add required-any and required-* for enum optionsDavid Henningsson2011-02-253-12/+91
| | | | | | | | | | | Now you can add required-any to elements in a path and the path will be valid as long as at least one of the elements are present. Also you can have required, required-any and required-absent in element options, causing a path to be unsupported if an option is (not) present (simplified example: to skip line in path if "Capture source" doesn't have a "Line In" option). Signed-off-by: David Henningsson <david.henningsson@canonical.com>
* alsa-mixer: Add a few well-known descriptionsDavid Henningsson2011-02-251-0/+7
| | | | | | | | Add front mic, rear mic, and docking line-in. These are likely to be present on modern hda chips, for reference see linux-2.6/sound/pci/hda/hda_codec.c:hda_get_input_pin_label Signed-off-by: David Henningsson <david.henningsson@canonical.com>
* alsa-card: Add a new modarg "profile_set" for giving the card a custom ↵Tanu Kaskinen2011-02-251-1/+8
| | | | profile set configuration file.
* alsa-mixer: Fix path set building when using the element-output or ↵Tanu Kaskinen2011-02-251-0/+5
| | | | | | | | | element-input mapping options in profile set configuration. When creating synthesized paths, pa_alsa_path_set_new() created duplicate elements for each path, and one of the duplicate elements would be marked as required absent. That made path probing fail. While debugging this, I noticed also that pa_alsa_path_synthesize() didn't initialize p->last_element properly.
* Support for multichannel DSP processing in module-ladspa-sinkKim Therkelsen2011-02-251-147/+237
|
* Merge remote-tracking branch 'mkbosmans/mingw32-build'Colin Guthrie2011-02-2512-184/+258
|\
| * module-waveout: Adapted to updated APIMaarten Bosmans2011-02-171-168/+227
| | | | | | | | Waveout sink works again, Wavein source still needs some work.
| * Use PCRE if POSIX regex.h is not availableMaarten Bosmans2011-02-171-1/+6
| |
| * Apply #ifdefs around functionality not available on win32Maarten Bosmans2011-02-173-1/+16
| | | | | | | | And also the reverse: around some win32 specific functionality
| * Use <pulsecore/socket.h> instead of <sys/socket.h>Maarten Bosmans2011-02-172-5/+2
| | | | | | | | | | | | | | | | The check whether POSIX socket.h or WIN32 winsock2.h must be included can be made centrally. The downside is that some functionality of e.g. arpa/inet.h is also implemented in winsock.h, so that some files that don't use socket functions, but do use inet.h functions, must also include pulsecore/socket.h. (as well as arpa/inet.h)
| * Clean up <poll.h> includesMaarten Bosmans2011-02-177-9/+7
| | | | | | | | | | | | Instead <pulsecore/poll.h> should be included. That file includes poll.h on platform where it is appropriate. Also remove some unnecessary <ioctl.h> includes.
* | solaris: update call of pa_thread_new to new prototypeEdward Rudd2011-02-221-1/+1
| |
* | coreaudio: Fix call to pa_thread_newEdward Rudd2011-02-221-1/+1
| |
* | Allow read-only or non-existing sink input volume.Tanu Kaskinen2011-02-222-48/+86
| | | | | | | | | | | | | | | | | | | | | | | | There are two known cases where read-only or non-existing sink input volume is relevant: passthrough streams and the planned volume sharing logic. Passthrough streams don't have volume at all, and the volume sharing logic requires read-only sink input volume. This commit is primarily working towards the volume sharing feature, but support for non-existing sink input volume is also added, because it is so closely related to read-only volume. Some unrelated refactoring in iface-stream.c creeped into this commit too (new function: stream_to_string()).
* | dbusiface-stream: Send the Device property in the GetAll handler.Tanu Kaskinen2011-02-221-0/+1
| |
* | core: Link virtual sinks and sources to their streams.Tanu Kaskinen2011-02-226-1/+21
|/ | | | | | | | | | | | | | | This change doesn't add any functionality in itself, but it will be useful in the future for operating on chains of sinks or sources that are piggy-backing on each other. For example, the PA_PROP_DEVICE_MASTER_DEVICE property could be handled in the core so that each virtual device doesn't have to maintain it separately. By using the origin_sink and destination_source pointers the core is able to see at stream creation time that the stream is created by a virtual device, and then update that device's property list using the name of the master device that the stream is being connected to. The same thing can be done also when the stream is being moved from a device to another, in which case the _MASTER_DEVICE property needs updating.
* alsa: disable period wakeups in tsched mode if possiblePierre-Louis Bossart2011-02-011-0/+28
| | | | | | | | | | | | | | | | | | | | | | | This patch reflects a new capability that Lennart was wishing for. Wish granted... Re-submitting it now that alsa-lib 1.0.24 provides additional entry points to disable period wakeups in timer-scheduling mode if hardware can work without it (HDAudio, oxygen and Intel SST). Example with standard playback on HDAudio output Before change: Top causes for wakeups: 3.8% ( 5.4) [hda_intel] <interrupt> 2.8% ( 4.0) alsa-sink After change: Top causes for wakeups: 2.3% ( 3.0) alsa-sink Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
* echo-cancel: Make Orc file names less sillyArun Raghavan2011-02-012-1/+1
| | | | | The naming was what it was because of the way orc.mak was originally written. This has changed now.
* build: Simplify Orc-related make rulesArun Raghavan2011-02-013-312/+1
| | | | | | | This greatly simplifies the Orc-related make rules. The old system of distributing generated files is gone, which means that anyone who wants to build with Orc support enabled needs to have the orcc compiler installed (presumably the orc 'devel' package in most distros).
* build: Don't include empty Makefile.am in subdirsMaarten Bosmans2011-01-3113-260/+0
|
* Merge remote branch 'mkbosmans/rate-adjustment'Colin Guthrie2011-01-313-60/+103
|\
| * module-rtp-recv: Request proper rewind after underrunMaarten Bosmans2011-01-161-1/+3
| |
| * module-rtp-recv: Remove smoother from write indexMaarten Bosmans2011-01-161-21/+3
| | | | | | | | | | It isn't necessary anymore with the new algorithm. The slow adjust of the smoother was even detrimental to the accuracy of the rate estimate.
| * module-rtp-recv: Average the estimated real sample rateMaarten Bosmans2011-01-161-4/+22
| |
| * module-rtp-recv: Use new algorithm for adjusting sample rateMaarten Bosmans2011-01-161-15/+29
| |
| * Limit rate adjustments to small, inaudible jumpsMaarten Bosmans2011-01-163-26/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The same logic is applied to the sample rate adjustments in module-rtp-recv, module-loopback and module-combine: - Each time an adjustment is made, the new rate can differ at most 2‰ from the old rate. Such a step is equal to 3.5 cents (a cent is 1/100th of a semitone) and as 5 cents is generally considered the smallest observable difference in pitch, this results in inaudible adjustments. - The sample rate of the stream can only differ from the rate of the corresponding sink by 25%. As these adjustments are meant to account for very small clock drifts, any large deviation from the base rate suggests something is seriously wrong. - If the calculated rate is within 20Hz of the base rate, set it to the base rate. This saves CPU because no resampling is necessary.