>Ok, that suggests that the problem is not with chrome specifically. But
>in your first mail you said that firefox works fine...
Firefox works ok, have just tested it again to be sure.
>If you record with parecord without having chrome running at the same
>time, is the sound still bad? If it is,
Add a log_interval parameter to control the amount of logging. Default is
no logging. Like for adjust_time, two parameters exist: log_interval specifies
the interval in seconds while log_interval_msec is in ms.
If the log interval is too small, logging will occur on every iteration.
---
src/modul
For USB devices the latency jitter strongly depends on device latency. Therefore
a boolean low_device_latency parameter is introduced to half the device latency.
Normally 1/3 of the configured end-to-end latency is used, with the parameter
this is changed to 1/6. In many situations the parameter ca
The previous patch slows down initial convergence. Therefore do not use
the controller weight until we can assume that we reached an equilibrium.
Because it takes some time before the reported latency values are reliable,
assume that a steady state is reached when the target latency has been
crosse
The current loopback controller can produce a rate jump of up to 1% at startup,
which may be audible. To prevent large initial jumps, a second controller is
introduced, which produces a rate, that is not more than 2‰ away from the last
rate. Only during the startup phase, the rates produced by this
Using the new feature of pa_{source,sink}_get_latency_within_thread() leads
to improved end to end latency estimation and to correct handling of port
latency offsets.
---
src/modules/module-loopback.c | 105 --
1 file changed, 81 insertions(+), 24 deletions
Returning -1 on error does not make sense for a function that may return
negative values. Also no caller checks the return value anyway, so it
looks like a better idea to just return the offset when the message
processing fails.
---
src/pulsecore/sink.c | 3 +--
src/pulsecore/source.c | 3 +--
In most situations, the P-controller is too sensitive and therefore exhibits
rate hunting.
To avoid rate hunting, the sensibility of the controller is set by the new
parameter
adjust_threshold_usec. The parameter value is the deviation from the target
latency in usec
which is needed to produce a
This patch is purely cosmetic. It changes debugging output to a be better
readable
and tracks the prediction error for debugging purpose only. The patch also adds
Georg Chini to the authors of the module.
---
src/modules/module-loopback.c | 34 +++---
1 file changed,
A Kalman filter is added to further reduce noise. The Kalman filter needs a
latency prediction as input, so estimate the next expected latency as well.
Again, theory is at
https://www.freedesktop.org/software/pulseaudio/misc/rate_estimator.odt
---
src/modules/module-loopback.c | 67 ++
The current code assumes that the time domains of source and sink are
equal. This leads to a saw-tooth characteristics of the resulting end
to end latency.
This patch adds an iterative calculation of an optimum rate which accounts
for the difference between the source and sink time domains, thereby
The current code does not make any attempt to initialize the end-to-end latency
to a value near the desired latency. This leads to underruns at startup because
the memblockq is initially empty and to very long adjustment times for long
latencies because the end-to-end latency at startup is signific
The configured adjust time does not match exactly the real adjust time. Also
the adjust time varies. To improve latency estimation use an average of the
measured adjust times instead of the configured value in all calculations.
---
src/modules/module-loopback.c | 36 ++
Calculate minimum possible latency for the current combination of source and
sink.
The actual calculation has been put in a separate function so it can easily be
changed. To keep the values up to date, changes in the latency ranges have to be
tracked.
Use the calculated minimum latency to limit th
The previous patch assumed constant port latency offsets. The offsets can
however be changed by the user, therefore these changes need to be tracked
as well. This patch adds the necessary hooks.
---
src/modules/module-loopback.c | 38 --
src/pulsecore/core.h
If source or sink are changed, the current sink input rate may be different
from the default rate. Switch sink input rate back to default to avoid the
influence of the previous combination of source and sink.
---
src/modules/module-loopback.c | 18 +++---
1 file changed, 15 insertions
The rate set by module loopback may exceed PA_RATE_MAX by 1%, therefore
allow rates higher than PA_RATE_MAX in pa_sample_rate_valid().
---
src/pulse/sample.c | 5 -
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/pulse/sample.c b/src/pulse/sample.c
index cb04254..ff77985 1006
A new parameter is introduced to allow specifying smaller adjust_time values
than 1s. This may be useful for a better latency control, although with alsa
devices and the current smoother code no improvement could be found.
This patch also changes the default adjust time to 1s, the old value of 10s
The latency controller will try to adjust to the configured latency regardless
of underruns. If the configured latency is set too small, it will lead to
periodically occuring underruns. Therefore an underrun protection is implemented
which will increase the target latency if too many underruns are
This is version 2 of the new loopback patch series. It includes many fixes
based on Tanu's review as well as two new features. The main changes
compared to the original loopback module are:
- Reduce latency jitter by a factor 100 from around 30 ms to 300 usec
- Implement modified P-controller and
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_
The code is now waiting for source and sink to start up, so the skip
logic is not necessary anymore.
---
src/modules/module-loopback.c | 38 ++
1 file changed, 2 insertions(+), 36 deletions(-)
diff --git a/src/modules/module-loopback.c b/src/modules/module-loo
The comments were wrong and confusing.
---
src/modules/module-loopback.c | 10 +-
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c
index 016d403..2907bbc 100644
--- a/src/modules/module-loopback.c
+++ b/src/modules
On Sat, 2017-02-11 at 11:55 +0100, archli...@nicohood.de wrote:
> From: NicoHood
>
> ---
> src/paprefs.cc| 23 ---
> src/paprefs.glade | 56
> ++-
> 2 files changed, 67 insertions(+), 12 deletions(-)
Thanks! Applied.
lynx is required for generating README, so building failed when lynx was
disabled.
---
Makefile.am | 11 ---
doc/Makefile.am | 9 ++---
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 30b014c..6f14ab6 100644
--- a/Makefile.am
+++ b/M
On Sun, 2017-02-12 at 05:39 +0100, Mihai Moldovan wrote:
> Make sure that we NULL pointers after freeing them. Otherwise bad things
> happen.
>
> Signed-off-by: Mihai Moldovan
> ---
> src/modules/macosx/module-coreaudio-device.c | 8
> 1 file changed, 4 insertions(+), 4 deletions(-)
Ca
On Thu, 2017-02-16 at 21:26 -0300, Fatima Castiglione Maldonado 发
wrote:
> > To narrow down the problem further, you could try recording from the
> > microphone at the same time when chrome is supposed to be recording
> > from it. You can use this command:
> > parecord --device=alsa_input.pci-_
27 matches
Mail list logo