summaryrefslogtreecommitdiffstats
path: root/src/modules
Commit message (Collapse)AuthorAgeFilesLines
* alsa-sink: fix mmap_write() work_doneWu Fengguang2011-06-281-1/+1
| | | | | mmap_write() work_done is wrongly initilized to TRUE. It ends up never being FALSE. Fix it to reduce the costly update_smoother() calls.
* alsa-mixer: Whoops, forgot to git-add this in a previous.Colin Guthrie2011-06-261-0/+35
|
* alsa-mixer: Add UAC1.0 Sennheiser Dongle to the usb-headset profile.Colin Guthrie2011-06-261-0/+2
| | | | Reported by Sean McNamara
* alsa-mixer: Add an mixer profile exception for a BT Agile handsetColin Guthrie2011-06-251-0/+4
|
* alsa-mixer: Add workaround for some USB headsetsDavid Henningsson2011-06-251-0/+3
| | | | | | | | | This is a workaround - these usb headsets have one output volume control only, labeled "Speaker". This causes the default profile set to not control the volume at all, which is a bug. Workaround that by creating a separate profile set. Signed-off-by: David Henningsson <david.henningsson@canonical.com>
* win32: Make some unused-variable warnings go awayMaarten Bosmans2011-06-242-1/+3
|
* Remove obsolete description property from modulesMaarten Bosmans2011-06-243-9/+4
|
* raop: Change socket buffer size handling to avoid playback underrunsBryan Gleeson2011-06-221-1/+0
| | | | | | | | | | | | | When a TCP socket is created the size of the send buffer (SO_SNDBUF) used is determined by the OS, using the net.ipv4.tcp_wmem sysctl parameter. Previously a call to setsockopt set the buffer size to a value that was too small, and that in some cases could result in underruns and choppy playback. This setsockopt call has now been removed so that the value determined by the OS is used unchanged. Note that the value used for the send buffer size is the 2nd value in net.ipv4.tcp_wmem, e.g. if this is set to "4096 65536 8388608" the send buffer size is set to 65536.
* Remove unnecessary #includesMaarten Bosmans2011-06-2281-234/+38
|
* database: Support legacy format database entries.Colin Guthrie2011-06-224-181/+441
| | | | | | This adds code to specifically support legacy entries. I kept this code in a separate commit so that it can be (relatively) easily removed at some point in the future.
* device-restore: Add a new protocol extension for device-restore.Colin Guthrie2011-06-221-3/+266
| | | | | | This simply exposes the formats that a device supports via a simple protocol extension that will allow clients to setup what a connected receiver supports format wise.
* database: Convert our use of database files to save in tagstruct format.Colin Guthrie2011-06-224-368/+565
| | | | | | | | | | | | | This has the advantage of allowing versioned updates in the future, thus allowing us to be more user friendly going forward (as opposed to just ignoring entries from old versions). The primary motivation for this, however, is to allow variable length storage in each entry which will be needed for upcoming work. At present this commit will ignore any legacy entries but support for reading and subsequently converting legacy entries will be added shortly.
* alsa-mixer: select nearest alsa volume step in sync-volume modeJuho Hämäläinen2011-06-224-14/+76
|
* alsa-mixer: When setting hw volume, always round up with playback and down ↵Colin Guthrie2011-06-221-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | with capture. The previous logic in ade0a6f88464d8aecf83982d400ccfc402341920 does not work with for input volumes. This was discussed on the mailing list: https://tango.0pointer.de/pipermail/pulseaudio-discuss/2011-May/010091.html This approach can introduce a problem when setting the volumes for sources. What follows is Tanu Kaskinen's analysis: [quote] I'll quote the log: D: protocol-native.c: Client pavucontrol changes volume of source alsa_input.pci-0000_00_1b.0.analog-stereo. D: alsa-source.c: Requested volume: 0: 45% 1: 45% D: alsa-source.c: in dB: 0: -20.71 dB 1: -20.71 dB D: alsa-source.c: Got hardware volume: 0: 45% 1: 45% D: alsa-source.c: in dB: 0: -21.00 dB 1: -21.00 dB D: alsa-source.c: Calculated software volume: 0: 101% 1: 101% (accurate-enough=no) D: alsa-source.c: in dB: 0: 0.29 dB 1: 0.29 dB D: source.c: Volume going up to 29273 at 270475970821 D: source.c: Volume change to 29273 at 270475970821 was written 34 usec late D: alsa-source.c: Written HW volume did not match with the request: 0: 45% 1: 45% (request) != 0: 42% 1: 42% D: alsa-source.c: in dB: 0: -21.00 dB 1: -21.00 dB (request) != 0: -22.50 dB 1: -22.50 dB Looking at the last line, the requested volume seems to hit exactly the right step (-21.00dB), but for some reason Alsa decides to choose something else. I'm pretty sure that this happens because of rounding errors. In the first phase we ask Alsa what dB value we should set, and it returns -21.00 dB. The value is given as a long int, but we convert that to pa_cvolume. Then when we set the volume, we convert the pa_cvolume value back to a long integer. At this point I believe it gets converted to -2101. This is not visible in the debug message for some reason - the rounding algorithm must be different from what was used with the pa_cvolume -> long conversion. [/quote] The commit after this contains a patch that addresses this issue.
* alsa: Remove unneeded includeColin Guthrie2011-06-221-1/+0
|
* capture: Implement per-stream volume control for capture streams.Colin Guthrie2011-06-227-106/+214
| | | | | | | This piggy backs onto the previous changes for protocol 22 and thus does not bump the version. This and the previous commits should be seen as mostly atomic. Apologies for any bisecting issues this causes (although I would expect these to be minimal)
* capture: Add the passthrough format negotiation to capture streams.Colin Guthrie2011-06-227-15/+11
| | | | | This helps to keep the API more symmetrical and also potentially allows support for passthrough monitor sources at some point in the future.
* alsa-sink: Some trivial tidyupsColin Guthrie2011-06-221-3/+2
| | | | | Mostly typo fixes but also a change to make a function relating to sink inputs use more generic variable names.
* bluetooth-discover: Remove remaining ifdef NOKIAs.Tanu Kaskinen2011-06-221-12/+3
| | | | | | These were supposed to be removed already in 13849f153, but at that time I missed the ifdefs in module-bluetooth-discover.c.
* echo-cancel: More preprocessing fixesArun Raghavan2011-06-131-2/+6
| | | | | The speex_preprocess_ctl() function takes a spx_int32_t, but we've been passing a pa_bool_t, which could potentially crash.
* echo-cancel: Fix preprocessor initialisationArun Raghavan2011-06-131-1/+1
| | | | | | We were using the block size in bytes instead of samples, which meant preprocessing was broken. This fix makes a large-ish difference in the quality of echo-cancellation with speex.
* combine: Fix a crash on shutdown if the module is loaded outside of our control.Colin Guthrie2011-06-081-5/+7
| | | | By using module indexes rather than module pointers we avoid this posibility.
* device-manager: Free a hook slot to prevent segv on unloadColin Guthrie2011-06-061-0/+3
|
* module-combine-sink: Check running flag before rendering in null modeForest Bond2011-06-021-0/+4
| | | | | This makes process_render_null consistent with render_memblock and avoids introducing slight inaccuracies in early latency estimates.
* module-combine-sink: Initialize smoother in paused stateForest Bond2011-06-021-6/+9
| | | | | | | | | | | | | The smoother is paused on initialization and resumed when the sink state is set to running. Otherwise, early latency estimates are too low since there is some delay between module initialization and entering the running state. After the smoother is initially resumed, it is paused when the sink state is not running. The previous behavior was to pause only when the sink enters suspended state, however, this would lead to large errors in latency estimates after the sink has been idle for some time.
* module-combine-sink: Initialize smoother with offset pa_rtclock_now()Forest Bond2011-06-021-1/+1
| | | | | The smoother was being initialized with offset zero, which caused the sink latency to be unconditionally reported as zero.
* alsa-mixer: Fix the assumption that volume is always positiveLu Guanqun2011-05-301-1/+5
| | | | | | | | | | | | | | | | | Add a variable to track whether the actual volume is set or not. Suppose this: min volume: -126 max volume: 0 then when user wants to set some constant volume to -10, it would fail. While the alsa values are typically positive, some values are "funky" and have negative values. It is desirable to fix this at the alsa level so that the numbers are positive, but it's not technically invalid, and thus we have to support it. Discussed here: http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/9832 and http://thread.gmane.org/gmane.linux.alsa.devel/85459
* echo-cancel: Fix a crash is speex cleanupArun Raghavan2011-05-281-1/+2
| | | | | | If module initialisation fails, the speex done() function might try to free a value that's not been allocated yet. Adding protection for this condition.
* echo-cancel: Fix echo suppression, add some knobsBart Cerneels2011-05-282-3/+36
| | | | | | | The echo suppress attenuation value was being incorrectly modified. Fixed and added 2 arguments to change the attenuation of the residual echo filter. Default values of the speex preprocessor will be used when omitted.
* echo-cancel: Speex preprocessor has to run *after* the AEC.Bart Cerneels2011-05-281-3/+4
| | | | This is how it is expected to be run.
* echo-cancel: Add speex preprocessingArun Raghavan2011-05-242-3/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows the selective enabling of speex' preprocessing algorithms before running the echo-canceller -- for now this includes automatic gain control, noise suppression and echo suppression. It's all off by default for now, though at some point in the near future we might want to enable at least denoising by default. The denoising works pretty well, though we might want to add a way to tweak the noise-suppression knob that libspeex provides. The AGC option is just a stop-gap -- we need a real AGC mechanism that tweaks the source volume rather than doing this in software. The speex documentation mentions VAD and dereverb, but it appears that these are not complete yet. We don't do all this in a separate module from module-echo-cancel to avoid the overhead of adding another virtual source. It makes more sense to make a separate virtual source module that can be used for cases where preprocessing is useful but AEC is not (for e.g. noise suppression for fan noise in a recording application). Another reason to keep this integrated with the AEC module is that the echo suppression bits use the speex echo canceller state. This does leak some information about the AEC implementation into module-echo-cancel, but this is unavoidable.
* echo-cancel: Remove extraneous debug messageArun Raghavan2011-05-201-1/+0
| | | | This was making it impossible to run in debug mode with save_aec=1
* echo-cancel: Don't overpad variableArun Raghavan2011-05-161-1/+1
| | | | The padding was to be 16 bytes, not 16 elements.
* loopback: Add a modarg for disabling remixing.Tanu Kaskinen2011-05-151-5/+13
|
* bluetooth: Fix early return styling and add missing return valueColin Guthrie2011-05-151-5/+6
| | | | Thanks to Tanu Kaskinen for pointing out the missing return.
* suspend-on-idle: Trigger mempool vacuumingJyri Sarha2011-05-151-1/+40
| | | | | | | | In a setup with one or more filter sinks or sources there is always at least one stream existing. In such a situation normal mempool vacuuming never happens. This patch causes suspend-on-idle module to vacuum memory when ever it notices that all sinks and sources are suspended. The behavior can be enabled with a module parameter.
* Merge branch 'passthrough'Colin Guthrie2011-05-1516-57/+127
|\
| * module-tunnel: Update for recent protocol changesArun Raghavan2011-05-151-0/+59
| | | | | | | | | | | | | | | | | | This updates the tunnel module for protocol version >= 19. module-tunnel-sink does not proxy server-side passthrough support (yet). This would require a few more changes, namely keeping track of what formats are available and if any other sink inputs are connected on the server-side.
| * core: Factor out passthrough checks into their own functionsArun Raghavan2011-05-021-2/+2
| | | | | | | | | | | | | | | | | | | | Since we currently have two mechanisms to signal a passthrough connection (non-PCM format or PA_SINK_INPUT_PASSTHROUGH flag), we move all the related checks into functions and use those everywhere. This makes things more consistent, and should we decide to get rid of the flag, we only need to change pa_sink_input_*_is_passthrough() accordingly.
| * alsa: Reconfigure sink sample rate for passthrough inputsArun Raghavan2011-05-021-0/+52
| | | | | | | | | | | | When a passthrough sink-input is added, we need to reconfigure the sink's sample rate since no resampling occurs. We revert to the original rate when the passthrough sink-input is removed.
| * alsa-mixer: Remove passthrough profilesArun Raghavan2011-05-022-26/+0
| | | | | | | | | | These aren't used any more - we handle passthrough mode in the iec958* profiles now.
| * sink: Remove PASSTHROUGH flagArun Raghavan2011-05-021-7/+0
| | | | | | | | | | | | | | This removes the passthrough flag from sinks since we will drop exclusively passthrough sinks in favour of providing a list of formats supported by each sink. We can still determine whether a sink is in passthrough mode by checking if any non-PCM streams are attached to it.
| * core: Add extended stream API to support compressed formatsArun Raghavan2011-05-0212-24/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the beginning of work to support compressed formats natively in PulseAudio. This adds a pa_stream_new_extended() that takes a format structure, sends it to the server (=> protocol extension) and has the server negotiate with the appropropriate sink to figure out what format it should use. This is work in progress, and works only with PCM streams. Actual compressed format support in some sink needs to be implemented, and extensive testing is required. More details on how this is supposed to work is available at: http://pulseaudio.org/wiki/PassthroughSupport
| * filter-apply: Mark modules as being autoloadedArun Raghavan2011-05-025-11/+28
| | | | | | | | | | | | | | (Based on Colin's review) We mark modules as being autoloaded so that they can handle this as a special case if needed (which is required by module-echo-cancel for now). This inverts how things were done and makes using these modules manually less error-prone.
* | echo-cancel: Remove unnecessary noalign attributeArun Raghavan2011-05-111-1/+0
| | | | | | | | | | | | | | This was just introduced for debugging and should not have been in the final commit. Won't make a difference at the moment since this function is used as a pointer, but removing this in case we change this in the future.
* | echo-cancel: Handle alignment requirement manuallyArun Raghavan2011-05-112-4/+11
| | | | | | | | | | | | | | PA_ALIGNED can't always guarantee that the alignment we want (the GCC man page suggests that the linker might not be able to meet the alignment requirements we desire). Instead, we now allocate some extra memory and guaratee that the alignment we require is met.
* | filter-apply: Mark modules as being autoloadedArun Raghavan2011-05-035-11/+28
|/ | | | | | | (Based on Colin's review) We mark modules as being autoloaded so that they can handle this as a special case if needed (which is required by module-echo-cancel for now). This inverts how things were done and makes using these modules manually less error-prone.
* combine: Rename module-combine to module-combine-sink.Colin Guthrie2011-04-302-1352/+1423
| | | | | This also includes a compatibility module that will ultimately be removed in a future release.
* bluetooth: Only close SCO if status has changedLuiz Augusto von Dentz2011-04-301-5/+5
| | | | | In case the io thread is starting there is no point on closing SCO just to resume it latter when the source/sink changes to opened state.
* bluetooth: Fix using pointer-pointer when appending an array as variantLuiz Augusto von Dentz2011-04-301-4/+2
| | | | | pa_dbus_append_basic_array_variant_dict_entry should take the direct pointer to the array.