Commit graph

126 commits

Author SHA1 Message Date
Wim Taymans
c1b6a87b27 alsa-sink: reduce the amount of smoother updates
Exponentially increase the amount of time between smoother updates. We start
with a 2ms interval and increase up to 200ms intervals.
Smoother updates and the resulting linear regression take a fair amount of CPU
so we want to reduce the amount of updates.
2009-08-20 13:40:27 +02:00
Lennart Poettering
8c31974f56 sink: volume handling rework, new flat volume logic
- We now implement a logic where the sink maintains two distinct
  volumes: the 'reference' volume which is shown to the users, and the
  'real' volume, which is configured to the hardware. The latter is
  configured to the max of all streams. Volume changes on sinks are
  propagated back to the streams proportional to the reference volume
  change. Volume changes on sink inputs are forwarded to the sink by
  'pushing' the volume if necessary.

  This renames the old 'virtual_volume' to 'real_volume'. The
  'reference_volume' is now the one exposed to users.

  By this logic the sink volume visible to the user, will always be the
  "upper" boundary for everything that is played. Saved/restored stream
  volumes are measured relative to this boundary, the factor here is
  always < 1.0.

- introduce accuracy for sink volumes, similar to the accuracy we
  already have for source volumes.

- other cleanups.
2009-08-19 02:55:02 +02:00
Lennart Poettering
d6f598ab3e udev: allow passing of ignore_dB= parameter to alsa modules 2009-08-19 02:29:59 +02:00
Lennart Poettering
58d441f7ea log: place more rate limit invocations 2009-08-15 00:16:25 +02:00
Lennart Poettering
9b2534b6d0 alsa: properly treat ESTRPIPE as system suspend 2009-08-04 00:23:43 +02:00
Lubomir Rintel
34f31f666e Recover stream when it's suspended upon rewind
Error from snd_pcm_rewind() might mean we just woke up from suspend and
didn't have a chance to try to recover the stream since we didn't write
to it in between. Call try_recover() in such cases.

Note that for this to work kernel must return ESTRPIPE instead of EBADF
for rewind/forward attempts on suspended streams, so that
snd_pcm_recover() can recognize it should snd_pcm_resume() the stream.
This is not the case yet (2.6.31-rc5), patch is available.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
2009-08-03 22:47:15 +02:00
Lennart Poettering
5efb07281d alsa: throw timing data away after device resume 2009-07-24 20:13:52 +02:00
Lennart Poettering
18433c19b6 alsa: handle correctly if alsa returns us 0 or EAGAIN on snd_pcm_mmap_begin if we didn't call snd_pcm_avail immediately before 2009-07-24 13:45:59 +02:00
Lennart Poettering
7e2afffb81 alsa: deal properly with IO functions asking us to write 0 bytes 2009-07-22 22:38:38 +02:00
Lennart Poettering
5d4769b7dd alsa: fix a few comments 2009-07-01 20:20:06 +02:00
Lennart Poettering
fc33f7ee97 Merge most of elmarco/rtclock2
Merge commit 'e4d914c945'
2009-06-22 23:09:46 +02:00
Marc-André Lureau
125c528896 pulse: move pa_rtclock_now in pulsecommon 2009-06-20 17:29:08 +03:00
Lennart Poettering
32e2cd6d32 core: get rid of rt sig/timer handling since modern Linux' ppooll() is finally fixed for granularity 2009-06-19 21:00:06 +02:00
Marc-André Lureau
5dcdd5e358 perl -p -i -e 's/pa_rtclock_usec/pa_rtclock_now/g' find . -name '*.[ch]' 2009-06-19 19:04:04 +03:00
Lennart Poettering
348dcd6a31 alsa: unify alsa log handling and snd_config_update_free_global() handling in one place 2009-06-18 21:27:02 +02:00
Lennart Poettering
34b48887ef alsa: when creating alsa sinks/sources include mapping name in device name to allow profiles mit multiple sinks or multiple sources 2009-06-18 03:42:39 +02:00
Lennart Poettering
31575f7766 alsa: rework mixer logic
Completely rework mixer logic. This now allows controlling a full set of
elements from a single sink's volume slider/mute button.

This also introduces sink and source "ports" that can be used to choose
different input or output ports with the UI. (i.e. "mic"/"line-in" or
"speaker"/"headphones".

The mixer paths and device maps are now configered in external
configuration files and can be tweaked as necessary.
2009-06-17 03:45:14 +02:00
Lennart Poettering
587fc2ab1c core: make sure soft mute status stays in sync with hw mute status
This should close rhbz #494851, mandriva bz #51234.

Probably the same as our own #572, launchpad #352732.
2009-06-08 00:02:15 +02:00
Lennart Poettering
561c0af851 alsa: monitor device reservation status and resume automatically when device becomes unused 2009-06-05 19:05:42 +02:00
Lennart Poettering
00797b8b6e core: add a suspend cause flags field 2009-06-05 19:05:07 +02:00
Lennart Poettering
1c4393acf0 modules: add {sink|source|card}_properties argument to all modules 2009-05-28 02:39:22 +02:00
Lennart Poettering
dfd6b61cd1 alsa: include mixer name in sink/source properties 2009-05-12 22:55:50 +02:00
Lennart Poettering
3766850c8b core: introduce pa_{sink,source}_set_fixed_latency()
This allows us to forward the fixed latency directly from the sink to
the monitor source withut having to wait for pa_sink_put().
2009-05-08 02:04:48 +02:00
Lennart Poettering
4129f51194 alsa: don't hit an assert when invalid module arguments are passed 2009-05-01 04:11:30 +02:00
Lennart Poettering
98a25c506e alsa: properly convert return values of snd_strerror() to utf8 2009-04-19 19:22:51 +02:00
Lennart Poettering
fe8b10cc05 core: introduce new 'reference' volume for sinks
The reference volume is to be used as reference volume for stored stream
volumes. Previously if a new stream was created the relative volume was
taken relatively to the virtual device volume. Due to the flat volume
logic this could then be fed back to the virtual device volume.
Repeating the whole story over and over would result in a device volume
that would go lower, and lower and lower.

This patch introduces a 'reference' volume for each sink which stays
unmodified by stream volume changes even if flat volumes are used. It is
only modified if the sink volumes are modified directly by the user.

For further explanations see http://pulseaudio.org/wiki/InternalVolumes
2009-04-13 22:56:25 +02:00
Lennart Poettering
49dcf0940e alsa: include the alsa mixer control that is used in the property list 2009-04-13 22:56:25 +02:00
Lennart Poettering
6fd8fd18c2 alsa: store mixer controls to use in profile data
This allows us to easily use different mixer controls for analog and
spdif output.
2009-04-13 22:56:19 +02:00
Lennart Poettering
d8de5d374e make sure we never overflow when calculating sleep time
Issue pointed out by Jaroslav Kysela
2009-04-13 03:40:46 +02:00
Lennart Poettering
991cb06134 set fixed latencies at more places where appropriate 2009-04-10 02:26:59 +02:00
Lennart Poettering
5388b44b9a alsa: when printing warning about bogus data from alsa include snd_pcm_dump() 2009-04-10 01:58:39 +02:00
Lennart Poettering
6ba3333030 Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio 2009-04-05 03:05:51 +02:00
Lennart Poettering
d035f4a3f3 Modify smoothing code to make cubic interpolation optional and allow 'quick fixups' on resuming
The primary reason for this change is to allow time graphs that do not
go through the origin and hence smoothing starting from the origin is
not desired. This change will allow passing time data into the smoother
while paused and then abruptly use that data without smoothing using the
'quick fixup' flag when resuming.

Primary use case is allowing recording time graphs where the data
recorded originates from a time before the stream was created. The
resulting graft will be shifted and should not be smoothened to go
through the origin.
2009-04-05 02:26:02 +02:00
Lennart Poettering
77a1e3876b refuse to initialize on modem devices 2009-04-04 04:12:42 +02:00
Maarten Bosmans
8bcb9c6910 various spelling fixes 2009-04-04 02:27:13 +02:00
Kyle Cronan
92ae5f1a74 Specifying ALSA mixer control
On Fri, Mar 27, 2009 at 7:21 AM, Lennart Poettering <lennart@poettering.net> wrote:

>> I tried installing the latest git sources on my Ubuntu Jaunty box but
>> it just broke sound in all my applications.  For my own purposes, I'm
>> going to need to start with the Ubuntu-patched 0.9.14.  However, if
>> you are willing to accept this patch I will forward port it so that it
>> applies to the latest sources.  It's a completely harmless change, so
>> why not apply it?
>
> Yes, I am happy to apply it. Could you please update it for current git?
>

Great.  An updated patch is attached.  For symmetry, I added this
option to the alsa source module as well.

The Ubuntu folks have customized pulse so much that it is difficult
for me to get this version working on my system.  For this patch I
have only made sure that it compiles.  But it does pretty much the
same thing as the one for 0.9.14, which is working great for me.

Thanks,
Kyle
2009-03-31 00:56:41 +02:00
Lennart Poettering
e3f15104cf don't enabled tsched on software ALSA devices 2009-03-30 18:00:23 +02:00
Lennart Poettering
4edb109239 use u->use_tsched everywhere 2009-03-25 16:17:45 +01:00
Lennart Poettering
0316dba9d1 set latency range only in tsched mode 2009-03-25 00:41:23 +01:00
Lennart Poettering
44ca897769 introduce new flag that marks sinks/sources which can adjust the latency dynamically 2009-03-25 00:30:54 +01:00
Lennart Poettering
2f9a784167 set request/rewind sizes only via accessor functions 2009-03-24 21:13:41 +01:00
Lennart Poettering
aa92ff408c simplify latency range by not allowing stored 'wildcard' ranges anymore 2009-03-24 21:06:57 +01:00
Lennart Poettering
869341729f various smaller cleanups 2009-03-04 02:55:34 +01:00
Lennart Poettering
f3de61edf6 fix device reservation for system mode 2009-03-03 22:27:05 +01:00
Colin Guthrie
86dee05aec Use LGPL 2.1 on all files previously using LGPL 2 2009-03-03 20:23:02 +00:00
Lennart Poettering
77514c1c4c Merge commit 'coling/master' 2009-03-02 14:08:11 +01:00
Lennart Poettering
671b927955 add logic for initializing a useful icon name 2009-03-01 21:38:27 +01:00
Lennart Poettering
784ac5b0da get additional device data from udev 2009-03-01 21:38:22 +01:00
Colin Guthrie
8fc9b19cb3 Don't assume that device reservation is enabled.
In the case when the alsa 'device' is not a physical card, it wont have an index and thus
the reservation name will be NULL and therefore we will not initialise the reservation system.

Fixes #498
2009-02-28 23:51:12 +00:00
Lennart Poettering
798e39a5b6 when alsa tweaks our sample_spec make sure we adjust the watermark accordingly 2009-02-27 01:15:29 +01:00