summaryrefslogtreecommitdiff
path: root/src/modules/module-remap-source.c
Commit message (Collapse)AuthorAgeFilesLines
* sink, source: rename set_state() to set_state_in_main_thread()Tanu Kaskinen2018-03-161-2/+2
| | | | | There will be a new callback named set_state_in_io_thread(). It seems like a good idea to have a similar name for the main thread variant.
* pass pa_suspend_cause_t to set_state() callbacksTanu Kaskinen2018-02-221-1/+1
| | | | | | | | The suspend cause isn't yet used by any of the callbacks. The alsa sink and source will use it to sync the mixer when the SESSION suspend cause is removed. Currently the syncing is done in pa_sink/source_suspend(), and I want to change that, because pa_sink/source_suspend() shouldn't have any alsa specific code.
* build-sys: Stop using symdef headers for modulesArun Raghavan2017-12-121-2/+0
| | | | | | This removes the symdef header generation m4 magic in favour of a simpler macro method, allowing us to skip one unnecessary build step while moving to meson, and removing an 11 year old todo!
* sink-input, source-output: add sink/source_requested_by_application flagTanu Kaskinen2017-12-021-1/+1
| | | | | | | | | | | | | | | | | When a stream is created, and the stream creator specifies which device should be used, that can affect automatic routing policies. Specifically, module-device-manager shouldn't apply its priority list routing when a stream has been routed by the application that created the stream. A stream that was initially routed by the application may be moved for some valid reason (e.g. user requesting a move, or the original device disappearing). When the stream is moved away from its initial device, the "device requested by application" flag isn't relevant any more, so it's set to false and never reset to true again. The change in module-device-manager's routing logic will be done in the following patch.
* remap-source, virtual-source: fix max_rewind handlingTanu Kaskinen2017-11-061-0/+12
| | | | | | The filter sources should have the same max_rewind as the master source, but these modules didn't update max_rewind when the master max_rewind changed.
* virtual sources and sinks: Don't double attach a sink input or source output ↵Georg Chini2017-05-181-11/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | on filter load When a filter is loaded and module-switch-on-connect is present, switch-on-connect will make the filter the default sink or source and move streams from the old default to the filter. This is done from the sink/source put hook, therefore streams are moved to the filter before the module init function of the filter calls sink_input_put() or source_output_put(). The move succeeds because the asyncmsq already points to the queue of the master sink or source. When the master sink or source is attached to the sink input or source output, the attach callback will call pa_{sink,source}_attach_within_thread(). These functions assume that all streams are detached. Because streams were already moved to the filter by switch-on-connect, this assumption leads to an assertion in pa_{sink_input,source_output}_attach(). This patch fixes the problem by reverting the order of the pa_{sink,source}_put() calls and the pa_{sink_input,source_output}_put calls and creating the sink input or source output corked. The initial rewind that is done for the master sink is moved to the sink message handler. The order of the unlink calls is swapped as well to prevent that the filter appears to be moving during module unload. The patch also seems to improve user experience, the move of a stream to the filter sink is now done without any audible interruption on my system. The patch is only tested for module-echo-cancel. Bug-Link: https://bugs.freedesktop.org/show_bug.cgi?id=100065
* virtual sinks and sources: Revert commitsGeorg Chini2017-05-181-2/+1
| | | | | | This patch reverts commit db4fbb0121a2577d786cda023a6a439a9734f152 and 3bb94c4e836ca765a36255e416fd8e6cf272ab44. They were the wrong approach to fix the bug (and did not fix it anyway).
* virtual sources and sinks: Fix possible segfaultGeorg Chini2017-04-241-1/+2
| | | | | | | | | | Several virtual sources and sinks apart from module-echo-cancel also query the master sink or source to estimate the current latency. Those modules might potentially show the bug that is described for module-echo-cancel in bug 100277. This patch checks in the message handlers for the PA_{SINK,SOURCE}_MESSAGE_GET_LATENCY if the master sink or source is valid and returns 0 as latency if not. This is however not yet sufficient to solve the issue. Additional patches will follow.
* source/sink: Allow pa_{source, sink}_get_latency_within_thread() to return ↵Georg Chini2017-04-171-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | negative values The reported latency of source or sink is based on measured initial conditions. If the conditions contain an error, the estimated latency values may become negative. This does not indicate that the latency is indeed negative but can be considered merely an offset error. The current get_latency_in_thread() calls and the implementations of the PA_{SINK,SOURCE}_MESSAGE_GET_LATENCY messages truncate negative latencies because they do not make sense from a physical point of view. In fact, the values are truncated twice, once in the message handler and a second time in the pa_{source,sink}_get_latency_within_thread() call itself. This leads to two problems for the latency controller within module-loopback: - Truncating leads to discontinuities in the latency reports which then trigger unwanted end to end latency corrections. - If a large negative port latency offsets is set, the reported latency is always 0, making it impossible to control the end to end latency at all. This patch is a pre-condition for solving these problems. It adds a new flag to pa_{sink,source}_get_latency_within_thread() to allow negative return values. Truncating is also removed in all implementations of the PA_{SINK,SOURCE}_MESSAGE_GET_LATENCY message handlers. The allow_negative flag is set to false for all calls of pa_{sink,source}_get_latency_within_thread() except when used within PA_{SINK,SOURCE}_MESSAGE_GET_LATENCY. This means that the original behavior is not altered in most cases. Only if a positive latency offset is set and the message returns a negative value, the reported latency is smaller because the values are not truncated twice. Additionally let PA_SOURCE_MESSAGE_GET_LATENCY return -pa_sink_get_latency_within_thread() for monitor sources because the source gets the data before it is played.
* sink-input/source-output: Don't crash when cork() is called without valid ↵Georg Chini2017-03-291-2/+1
| | | | | | | | | | | sink or source If pa_sink_input_cork() or pa_source_output_cork() were called without a sink or source attached, the calls would crash pulseaudio. This patch fixes the problem, so that a source output or sink input can still be corked or uncorked while source or sink are invalid. This is needed to correct the corking logic in module-loopback.
* update FSF addresses to FSF web pageOndrej Holecek2015-01-141-3/+1
| | | | | | | | | FSF addresses used in PA sources are no longer valid and rpmlint generates numerous warnings during packaging because of this. This patch changes all FSF addresses to FSF web page according to the GPL how-to: https://www.gnu.org/licenses/gpl-howto.en.html Done automatically by sed-ing through sources.
* module-remap-source: Add resample_method argumentPeter Meerwald2013-12-051-0/+9
| | | | Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
* Whitespace cleanup: Remove all multiple newlinespoljar (Damir Jelić)2013-06-241-1/+0
| | | | | | | | | | | | | | | This patch removes all occurrences of double and triple newlines. Command used for this: find . -type d \( -name ffmpeg \) -prune -o \ -regex '\(.*\.[hc]\|.*\.cc\)' \ -a -not -name 'adrian-aec.*' -a -not \ -name reserve.c -a -not -name 'rtkit.*' \ -exec sed -i -e '/^$/{N;s/^\n$//}' {} \; Two passes were needed to remove triple newlines. The excluded files are mirrored files from external sources.
* modules: add module-remap-sourceStefan Huber2013-03-051-0/+435