platform/upstream/pulseaudio.git
6 years agoAdd support for dlog 84/168484/7
Sangchul Lee [Mon, 29 Jan 2018 02:43:52 +0000 (11:43 +0900)]
Add support for dlog

original patches are as below
 : d2f6895a10071acd1929d6fa7a6c4bfbefb2d39b - hs7388.lee@samsung.com - 2017-03-28 - Enhance log format for dlog & enhance pcm dump, remove unused code
 : 2411e1330151cd11ee45aafb12de35a48c7fd5b0 - vivian.zhang@intel.com - 2014-05-28 - add support for dlog - samsung

[Version] 11.1-1
[Issue Type] Feature

Change-Id: I7780ce3731afdc670fe8a684c91b9d6329e1ed32
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
6 years agoAdd initial spec file for tizen public 53/168353/3
Sangchul Lee [Fri, 26 Jan 2018 04:34:01 +0000 (13:34 +0900)]
Add initial spec file for tizen public

 Feature enable status
     Enable memfd shared memory:    no
     Enable X11:                    no
     Enable OSS Output:             no
     Enable OSS Wrapper:            no
     Enable EsounD:                 no
     Enable Alsa:                   yes
     Enable CoreAudio:              no
     Enable Solaris:                no
     Enable WaveOut:                no
     Enable GLib 2.0:               yes
     Enable Gtk+ 3.0:               no
     Enable GConf:                  no
     Enable Avahi:                  no
     Enable Jack:                   no
     Enable Async DNS:              no
     Enable LIRC:                   no
     Enable D-Bus:                  yes
     Enable BlueZ 4:                no
     Enable BlueZ 5:                yes
         Enable ofono headsets:     yes
         Enable native headsets:    no
     Enable udev:                   yes
       Enable HAL->udev compat:     no
     Enable systemd
       Daemon (Socket Activation):  yes
       Login (Session Tracking):    no
       Journal (Logging):           yes
     Enable TCP Wrappers:           no
     Enable libsamplerate:          no
     Enable IPv6:                   no
     Enable OpenSSL (for Airtunes): yes
     Enable fftw:                   no
     Enable orc:                    no
     Enable Adrian echo canceller:  yes
     Enable speex (resampler, AEC): yes
     Enable soxr (resampler):       no
     Enable WebRTC echo canceller:  no
     Enable gcov coverage:          no
     Enable unit tests:             no
     Database
       tdb:                         no
       gdbm:                        no
       simple database:             yes

     System User:                   pulse
     System Group:                  pulse
     Access Group:                  pulse-access
     Enable per-user EsounD socket: no
     Force preopen:                 no
     Preopened modules:             all

     Legacy Database Entry Support: yes

[Version] 11.1-0
[Issue Type] Spec

Change-Id: I5bf12c4173ad0df2fd48319cd70dee9739fd0483
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
6 years agoMerge branch 'upstream/11.1' into tizen 37/168337/1
Sangchul Lee [Fri, 26 Jan 2018 01:18:23 +0000 (10:18 +0900)]
Merge branch 'upstream/11.1' into tizen

Change-Id: I9cda970c0b2b8cd40a4883559d9707718bf3ecd9
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
6 years agoInitialize codes based on 11.1 36/168336/1
Sangchul Lee [Fri, 26 Jan 2018 01:17:02 +0000 (10:17 +0900)]
Initialize codes based on 11.1

Change-Id: I0826e35f3806e89de2b6cc7a1d3060101e1fd8d8
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
6 years agoInitialize git 10/168210/1
Sangchul Lee [Thu, 25 Jan 2018 03:54:20 +0000 (12:54 +0900)]
Initialize git

The previous tizen branch is based on PulseAudio 5.0 + a lot of patches from Intel.
Since we do use features from Intel and it also brings complicated situation to merge
upstream codes, we decide to initialize this git from the beginning.
Next patches which are upstream codes and tizen patches will be coming soon.

Change-Id: I5b80f66bd1cb1525133321733f05cf790d975a3f
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
6 years agoDisable pcm-dump feature by default on TV 64/164664/1
Seungbae Shin [Tue, 19 Dec 2017 08:36:07 +0000 (17:36 +0900)]
Disable pcm-dump feature by default on TV

[Version] 5.0-124
[Issue Type] Security

Change-Id: Id2fa8bbe74635d09a8fd394cbccf013b26de1597
(cherry picked from commit 0982ee20c86b54b0d4ac29e5d3ba2097af7649e2)

6 years agobluetooth-policy: Revise role according to Tizen policy 94/163894/1 accepted/tizen/unified/20171214.154143 submit/tizen/20171214.052708 submit/tizen/20171214.053311
Sangchul Lee [Wed, 13 Dec 2017 01:36:29 +0000 (10:36 +0900)]
bluetooth-policy: Revise role according to Tizen policy

Change-Id: I32626ffc2a030ac243493a270f83617fcf9c2668
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
(cherry picked from commit 6bf9ae23e52622c5aa0fe0881785a5d1392f9b80)

6 years agoRemove not supported update script 27/151327/1 accepted/tizen/unified/20170922.065214 submit/tizen/20170921.061238
Sunmin Lee [Fri, 8 Sep 2017 01:47:41 +0000 (10:47 +0900)]
Remove not supported update script

RW update script for Tizen 2.4 (to 3.0) is not necessary in Tizen 4.0.
(Tizen 4.0 does not support upgrade from Tizen 2.4)
Remove this file in terms of clearing the redundancy.

Change-Id: I85813870ddeeea0b4fbe0266e481fb7b3621648d
(cherry picked from commit db45997b7745c7c75401db34a186204f4b961ce5)

6 years agoupdate NEWS upstream/11.1 v11.1
Tanu Kaskinen [Mon, 18 Sep 2017 14:40:00 +0000 (17:40 +0300)]
update NEWS

6 years agoNEWS: add GNU Hurd support
Tanu Kaskinen [Tue, 5 Sep 2017 10:23:58 +0000 (13:23 +0300)]
NEWS: add GNU Hurd support

For some reason this was left out when copying the feature list from the
release notes.

6 years agobluez: Don't crash on strange MTU sizes
Arun Raghavan [Wed, 13 Sep 2017 07:19:28 +0000 (12:49 +0530)]
bluez: Don't crash on strange MTU sizes

We got reports of this with automatically detected MTUs that weren't
frame aligned.

6 years agobluez: Don't autodetect MTU by default
Arun Raghavan [Wed, 13 Sep 2017 03:52:27 +0000 (09:22 +0530)]
bluez: Don't autodetect MTU by default

This breaks a lot of headsets, so disabling by default. Can be
re-enabled in configuration for specific hardware where it is deemed
necessary.

Also added some debug logging to be able to examine what MTU size is
reported by the device.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=102660
6 years agoalsa-mixer: add mixer handling to the fallback stereo case
Tanu Kaskinen [Fri, 8 Sep 2017 12:10:41 +0000 (15:10 +0300)]
alsa-mixer: add mixer handling to the fallback stereo case

Some sound cards don't have any alsa-lib configuration, but they used to
work well enough up to PulseAudio 10. PulseAudio 11 stopped using "hw:0"
for the analog-stereo mapping, and instead defined it as a fallback
mapping without any mixer handling. As a result, switching between
headphones and speakers stopped working without changing the mixer
settings manually at least on Toshiba Chromebook 2. This patch adds the
mixer handling back to the fallback mapping.

I also renamed "unknown-stereo" to "stereo-fallback", because I like
that name more.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=102560
6 years agosink: remove priority bonus for the "internal" form factor
Tanu Kaskinen [Wed, 6 Sep 2017 13:08:29 +0000 (16:08 +0300)]
sink: remove priority bonus for the "internal" form factor

We're supposed to prioritize USB sound cards over PCI sound cards, but
the priority bonus for the "internal" form factor prevents this from
happening. Not all (if any) USB sound cards have the form factor
property set, whereas at least on my laptop the on-board sound card has
the form factor set to "internal".

6 years agosink, source: fix out of date comments
Tanu Kaskinen [Sun, 10 Sep 2017 19:32:57 +0000 (22:32 +0300)]
sink, source: fix out of date comments

update_shared_real_volume() doesn't exist. I checked that
update_real_volume() does what the comments claim
update_shared_real_volume() to do.

6 years agosink, source: don't try to update volumes of not-yet-linked devices
Tanu Kaskinen [Sun, 10 Sep 2017 19:32:56 +0000 (22:32 +0300)]
sink, source: don't try to update volumes of not-yet-linked devices

The order of the pa_sink_input_put() and pa_sink_put() calls in filter
modules was swapped in commit edc465da77 ("virtual sources and sinks:
Don't double attach a sink input or source output on filter load").
If flat volumes and volume sharing is enabled, the pa_sink_input_put()
call will update volumes of the whole tree of virtual sinks that are
connected to the root sink. The recursive updating procedure tried to
also update the volume of the new sink for which pa_sink_put() had not
yet been called, causing an assertion failure.

This patch tries to make sure that the volume of not-yet-linked sinks
is never changed. pa_sink_put() will set the sink volume correctly, so
it's fine to skip the not-yet-linked sinks during pa_sink_input_put().

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=102549
6 years agobluetooth: Fix build warnings 76/149176/1 accepted/tizen/unified/20170914.230148 submit/tizen/20170912.051952 submit/tizen/20170914.073859
DoHyun Pyun [Tue, 12 Sep 2017 00:58:55 +0000 (09:58 +0900)]
bluetooth: Fix build warnings

Change-Id: I0411938d904f64b6e7bd7a13a044b1d553ad9251
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
6 years agoupdate NEWS v11.0
Tanu Kaskinen [Tue, 5 Sep 2017 09:10:29 +0000 (12:10 +0300)]
update NEWS

6 years agobluez5-device: lower sink/source priority for Audio gateway or a2dp source
Georg Chini [Sat, 2 Sep 2017 19:46:04 +0000 (21:46 +0200)]
bluez5-device: lower sink/source priority for Audio gateway or a2dp source

When a phone is connected via bluetooth and switches to HFP, the sinks
and sources will have higher priority than the built-in devices.
Therefore they are chosen as default and module-bluetooth-policy will
incorrectly insert loopback modules that loop the phone back to itself.

This patch fixes the problem by lowering the priority of sink and source
if PulseAudio is in the headset role. The priority is also lowered if the
device is an a2dp source. In both cases it does not make sense to make the
source or sink default unless there is no other sound device available.

6 years agocore: ignore devices that are not linked when choosing the default sink or source
Tanu Kaskinen [Wed, 30 Aug 2017 18:51:15 +0000 (21:51 +0300)]
core: ignore devices that are not linked when choosing the default sink or source

Sources should probably be added to pa_core.sources in pa_source_put(),
but currently they're added in pa_source_new(). A lot of stuff can
happen between the pa_source_new() and pa_source_put() calls, and
it has happened that the default source was updated during this time.
Therefore, pa_core_update_default_source() needs to take it into account
that not every source is necessarily linked.

6 years agoi18n: add a Norwegian Nynorsk translation
Karl Ove Hufthammer [Thu, 17 Aug 2017 11:15:09 +0000 (14:15 +0300)]
i18n: add a Norwegian Nynorsk translation

6 years agotunnel-{sink, source}-new: Fix assertion when used with loopback or combine-sink
Georg Chini [Sat, 12 Aug 2017 20:29:26 +0000 (22:29 +0200)]
tunnel-{sink, source}-new: Fix assertion when used with loopback or combine-sink

Currently pulseaudio crashes with an assertion in pa_rtpoll_item_new_asyncmsgq_read()
or pa_rtpoll_item_new_asyncmsgq_write() if a loopback is applied to a tunnel-new
sink or source, because tunnel-{sink,source}-new do not set thread_info.rtpoll.
The same applies to module-combine-sink and module-rtp-recv.

This patch is not a complete fix for the problem but provides a temporary band-aid
by initializing thread_info.rtpoll properly. The rtpoll created is never run, but
loopback and combine-sink nevertheless work, see comments in the code.

This patch does not work for module-rtp-recv, but using rtp-recv with a remote
sink does not seem to make a lot of sense anyway.

link: https://bugs.freedesktop.org/show_bug.cgi?id=73429
6 years agoi18n: update the Lithuanian translation
Moo [Tue, 15 Aug 2017 05:41:59 +0000 (08:41 +0300)]
i18n: update the Lithuanian translation

6 years agoUpdate rw upgrade script 95/143595/1
Seungbae Shin [Thu, 10 Aug 2017 11:41:14 +0000 (20:41 +0900)]
Update rw upgrade script

[Version] 5.0-124
[Issue Type] RW Upgrade

Change-Id: Id6eb863a90e39f4777cf499baf27aec58247bdc6

6 years agofixup! Apply ASLR 97/143297/1 accepted/tizen/4.0/unified/20170828.221808 accepted/tizen/unified/20170809.135531 submit/tizen/20170809.082250 submit/tizen_4.0/20170828.100007
Seungbae Shin [Wed, 9 Aug 2017 08:17:33 +0000 (17:17 +0900)]
fixup! Apply ASLR

[Version] 5.0-123
[Issue Type] Cleanup

Change-Id: I8ba3dffc37314c5a2015422476a91c5223baa608

6 years agoconf-parser: provide a replacement for scandir on Win32
Vadim Troshchinskiy [Fri, 4 Aug 2017 13:05:31 +0000 (15:05 +0200)]
conf-parser: provide a replacement for scandir on Win32

PA builds fine on MinGW except for the use of the scandir function in
pulsecore/conf-parser.c, so I provided a Win32 implementation. With this
patch the latest code builds on Win32 without problems.

6 years agoecho-cancel: don't set latency range if the device doesn't support dynamic latency
Tanu Kaskinen [Thu, 3 Aug 2017 07:38:01 +0000 (10:38 +0300)]
echo-cancel: don't set latency range if the device doesn't support dynamic latency

pa_sink/source_set_latency_range() has an assertion that is triggered
when setting the latency range on a fixed latency device.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=102020
6 years agoInstall LGPL licenes instead of GPL for util package 33/142233/1
Seungbae Shin [Thu, 3 Aug 2017 06:33:05 +0000 (15:33 +0900)]
Install LGPL licenes instead of GPL for util package

(only python script(qpaeq) is GPL licensed but not installed)

[Version] 5.0-122
[Issue Type] Cleanup

Change-Id: I12b0f752fe2be2bb115991ee2ee99deee8a3b427

6 years agoFix 'set but not used' build warning 27/141327/2 accepted/tizen/4.0/unified/20170816.010257 accepted/tizen/unified/20170801.054919 submit/tizen/20170731.062712 submit/tizen_4.0/20170811.094300
Seungbae Shin [Mon, 31 Jul 2017 03:56:48 +0000 (12:56 +0900)]
Fix 'set but not used' build warning

[Version] 5.0.121
[Issue Type] Cleanup

Change-Id: Ia9ddcc066f55c9015f5955e4002da2a1bb779968

6 years agosconv: Cleanup ARM NEON code 08/141308/1
Peter Meerwald [Wed, 16 Apr 2014 16:20:16 +0000 (18:20 +0200)]
sconv: Cleanup ARM NEON code

Fix compiler warning, code formatting

Change-Id: I480591aedc6ae265ac0f1a8a8b8c58483da976f3
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: Seungbae Shin <seungbae.shin@samsung.com>
6 years agomodules: Fix compiler warning comparing 0 with bool 07/141307/1
Peter Meerwald [Wed, 13 Jan 2016 22:52:11 +0000 (23:52 +0100)]
modules: Fix compiler warning comparing 0 with bool

modules/module-stream-restore.c: In function 'clean_up_db':
modules/module-stream-restore.c:2344:74: warning: comparison of constant '0' with boolean expression is always true [-Wbool-compare]
         pa_assert_se(entry_write(u, item->entry_name, item->entry, true) >= 0);

reported by Ubuntu gcc-6

Change-Id: Iac596a9bbf341040adc9b8012f6ea916f4787461
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: Seungbae Shin <seungbae.shin@samsung.com>
6 years agocore: Work around -Wlogical-not-parentheses warnings 05/141305/1
Peter Meerwald [Tue, 26 May 2015 21:35:10 +0000 (23:35 +0200)]
core: Work around -Wlogical-not-parentheses warnings

pulsecore/sink.c: In function 'pa_sink_put':
pulsecore/sink.c:648:53: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
     pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == (s->thread_info.fixed_latency != 0));
                                                     ^

pulsecore/source.c: In function 'pa_source_put':
pulsecore/source.c:599:55: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
     pa_assert(!(s->flags & PA_SOURCE_DYNAMIC_LATENCY) == (s->thread_info.fixed_latency != 0));
                                                       ^
rewrite expression to suppress warning:
!(x & MASK) == (y != 0)
<->
!(x & MASK) == !(y == 0)

Change-Id: Iba926986cc16d17f0d74e7ca58d987592dfa7ed7
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: Seungbae Shin <seungbae.shin@samsung.com>
6 years agopacat: fix a memory issue
Denis Shulyaka [Sun, 30 Jul 2017 20:40:19 +0000 (23:40 +0300)]
pacat: fix a memory issue

If only part of the buffer is written into stdout by stdout_callback,
the buffer_index variable is increased by the number of written bytes,
buffer_length variable is decreased while the allocated buffer size
remains the same. That suggests that the current allocated size is
calculated as (buffer_index + buffer_length). However the current
stream_read_callback implementation writes new data to the start of the
buffer and allocates too little space, so that (buffer + buffer_index +
buffer_length - 1) could actully point outside of the allocated buffer.

6 years agoi18n: update Polish translation
Piotr Drąg [Tue, 25 Jul 2017 15:26:06 +0000 (17:26 +0200)]
i18n: update Polish translation

https://bugs.freedesktop.org/show_bug.cgi?id=101918

6 years agobuild-sys: add coverity/model.c to the tarball v10.99.1
Tanu Kaskinen [Mon, 24 Jul 2017 23:27:31 +0000 (02:27 +0300)]
build-sys: add coverity/model.c to the tarball

6 years agobuild-sys: bump sonames
Tanu Kaskinen [Mon, 24 Jul 2017 22:47:58 +0000 (01:47 +0300)]
build-sys: bump sonames

6 years agosimple: fix negative latency handling
Tanu Kaskinen [Tue, 11 Jul 2017 18:21:43 +0000 (21:21 +0300)]
simple: fix negative latency handling

pa_usec_t is an unsigned type, but there were calculations that used it
as if it were a signed type.

If the latency is negative, pa_simple_get_latency() now reports 0.

Added some comments too.

6 years agosimple: Change latency estimation to account for already-read data in pa_simple_get_l...
Ted Ying [Thu, 1 Jun 2017 22:00:20 +0000 (18:00 -0400)]
simple: Change latency estimation to account for already-read data in pa_simple_get_latency().

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=81075
6 years agolog: Do not print thread name in case of dlog 76/139776/1 accepted/tizen/unified/20170724.020311 submit/tizen/20170721.075214
Sangchul Lee [Thu, 20 Jul 2017 08:57:47 +0000 (17:57 +0900)]
log: Do not print thread name in case of dlog

[Version] 5.0.120
[Issue Type] Logs

Change-Id: Iab60d9dbc98a82cd2163689745ee4b48e0212f42
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
6 years agoprotocol-native: fix bytes-to-usec conversion of "on-the-fly" data
Tanu Kaskinen [Tue, 11 Jul 2017 18:16:17 +0000 (21:16 +0300)]
protocol-native: fix bytes-to-usec conversion of "on-the-fly" data

The on_the_fly_snapshot variable contains the amount of bytes that has
been sent from the source IO thread to the main thread, but not yet
pushed to the stream memblockq. The data is in the stream format, but
the bytes-to-usec conversion used the source format, which caused random
latency reporting errors.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=81075
6 years agocore: change configured_default_sink/source type to string
Tanu Kaskinen [Thu, 29 Jun 2017 21:09:34 +0000 (00:09 +0300)]
core: change configured_default_sink/source type to string

This allows us to restore the default device properly when a
hotpluggable device (e.g. a USB sound card) is set as the default, but
unplugged temporarily. Previously we would forget that the unplugged
device was ever set as the default, because we had to set
configured_default_sink to NULL to avoid having a stale pa_sink pointer,
and also because module-default-device-restore couldn't resolve the name
of a currently-unplugged device to a pa_sink pointer.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=89934
6 years agofix dbus message leaks
Tanu Kaskinen [Mon, 3 Jul 2017 14:35:08 +0000 (17:35 +0300)]
fix dbus message leaks

I reviewed all places that call
dbus_connection_send_with_reply_and_block(), and found several places
where dbus messages aren't properly unreffed.

6 years agosolaris: Support building on GNU Hurd
David Michael [Sun, 4 Jun 2017 03:53:48 +0000 (20:53 -0700)]
solaris: Support building on GNU Hurd

6 years agoman: fix typo: "the" -> "they"
Tanu Kaskinen [Wed, 12 Jul 2017 16:56:09 +0000 (19:56 +0300)]
man: fix typo: "the" -> "they"

6 years agoman: fix typos: "my" -> "may"
Tanu Kaskinen [Wed, 12 Jul 2017 16:44:38 +0000 (19:44 +0300)]
man: fix typos: "my" -> "may"

6 years agoman: fix a copy-paste error
Tanu Kaskinen [Wed, 12 Jul 2017 15:35:24 +0000 (18:35 +0300)]
man: fix a copy-paste error

6 years agobluez5-device: Log subband count instead of subband flag
Grzegorz Kolodziejczyk [Mon, 12 Jun 2017 15:42:26 +0000 (17:42 +0200)]
bluez5-device: Log subband count instead of subband flag

As log information says, SBC log info have to have one of two subband count
values: 4 or 8, instead of subband flag.

6 years agofilter-apply: Add "autoclean_interval" module argument 45/137245/2 accepted/tizen/unified/20170717.021035 submit/tizen/20170713.021221
Sangchul Lee [Wed, 5 Jul 2017 05:04:09 +0000 (14:04 +0900)]
filter-apply: Add "autoclean_interval" module argument

Now it is possible to set interval time of "autoclean" behavior.
Deafult time is 10 seconds which is the same as before.

[Version] 5.0.119
[Issue Type] New feature

Change-Id: I30d11b4e7a735ba37a7c1983c6ab7944721641aa
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
6 years agoSwitch -ldl to support ASan build 53/88253/4 accepted/tizen/unified/20170706.193611 submit/tizen/20170705.123628
Slava Barinov [Thu, 15 Sep 2016 12:58:18 +0000 (15:58 +0300)]
Switch -ldl to support ASan build

Change-Id: I046e37e2cbdb349cd8cef6df5191c7d5193cfe06
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
6 years agoi18n: update the Ukrainian translation
Yuri Chornoivan [Sun, 25 Jun 2017 19:30:55 +0000 (22:30 +0300)]
i18n: update the Ukrainian translation

6 years agoRevert "bluetooth: Auto recover if profile is 'off'"
Tanu Kaskinen [Tue, 13 Jun 2017 16:02:37 +0000 (19:02 +0300)]
Revert "bluetooth: Auto recover if profile is 'off'"

This reverts commit 69c212f8c13794f70899d1fe6baec1b6e3c92032.

Reasons:

The original reason for the patch was to work around some issue
regarding the profile not connecting immediately (sorry, I don't really
know the details), but that issue was fixed later by commit 998dfdf4cc,
so the original reason doesn't apply any more.

Automatically changing the profile when the transport state changes to
PLAYING has traditionally been handled by module-bluetooth-policy, and
as far as I can tell, there's no reason to change that.

The assertion is unsafe. It's not guaranteed that the profile change
will always succeed (at least pa_thread_mq_init() can fail due to
reaching the maximum file descriptor limit).

6 years agoloopback: apply official patchset 60/133660/1 accepted/tizen/unified/20170627.071444 submit/tizen/20170626.070954
KimJeongYeon [Tue, 13 Jun 2017 04:27:05 +0000 (13:27 +0900)]
loopback: apply official patchset

PulseAudio 10.0
Georg Chini (8):
      loopback: Save time stamps during latency snapshots
      loopback: Improve latency estimation in snapshots
      loopback: Improve latency estimation
      loopback: Change memblockq length
      loopback: Move timer restart and snapshots to timer callback
      loopback: Restart timer after 1/3 second
      loopback: Adjust rate based on latency difference
      loopback: Stop tracking max_request and min_memblockq_length

PulseAudio 9.0
Tanu Kaskinen (24):
      loopback: refactor proplist updating

PulseAudio 8.0
Georg Chini (2):
      loopback: Validate the rate parameter

PulseAudio 7.0
Alexander E. Patrakov (4):
      module-loopback: don't use 0 for custom source output message id
      loopback: Fix the obviously-wrong "buffer+=buffer" logic

PulseAudio 6.0
Georg Chini (1):
      loopback: Don't push zero-sized block to memblockq

Note for tizen:
1) These patchset improve latency and fix many other bugs of module-loopback.
2) Applied up to PulseAudio 10.0 release except 'loopback: refactor proplist updating'.
   (commit: 95dd90ce06046fb574e4a2174545bdebeb7c460d)
   Because, pa_{sink_input|source_output}_set_property() aren't exist in this code base.

Signed-off-by: KimJeongYeon <jeongyeon.kim@samsung.com>
Change-Id: Ia4044d4fc74d72e37f181331eeb6be05355e0048

7 years agoi18n: update the Italian translation
Milo Casagrande [Thu, 8 Jun 2017 11:30:59 +0000 (13:30 +0200)]
i18n: update the Italian translation

Signed-off-by: Milo Casagrande <milo@milo.name>
7 years agopadsp: Write only frame-aligned chunks to the stream
Arun Raghavan [Thu, 1 Jun 2017 07:01:47 +0000 (16:01 +0900)]
padsp: Write only frame-aligned chunks to the stream

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=101121

7 years agoalsa: make priority of the port headset-mic higher than headphone-mic
Hui Wang [Thu, 25 May 2017 03:10:33 +0000 (11:10 +0800)]
alsa: make priority of the port headset-mic higher than headphone-mic

There are two reasons for this change:

1. If it is a Dell desktop machine with the realtek codec, and there
is no internal microphone on it, there is one physical audio jack
which can support headphone, headset and microphone, but this audio
jack does not have hardware capability to distinguish what is plugged
in, after users plug in a headphone and select headphone from UI
program, the headphone can't output any sound. There are many reasons
for this issue, one of them is the active_port of pa_source is set
to headphone-mic, that means the kernel audio driver will configure
this audio jack to be a microphone jack instead of headphone jack.
If we make the priority of headset-mic a bit higher than headphone-mic,
the headset-mic will be the active_port of pa_source unless users
select the headphone-mic on purpose, then this issue will be fixed.

2. Nowadays, the headset is more popular than traditional microphone,
It is highly possible that users plug in a headset instead of
microphone, it makes sense to make the headset-mic's priority higher
than headphone-mic's.

Signed-off-by: Hui Wang <hui.wang@canonical.com>
7 years agostream-restore: Ignore sink-inputs/source-outputs that connect a filter to the master
Georg Chini [Wed, 31 May 2017 18:54:43 +0000 (20:54 +0200)]
stream-restore: Ignore sink-inputs/source-outputs that connect a filter to the master

module-stream-restore primarily uses the role of a stream for restoring. The sink-inputs
and source-outputs of filters all have role "filter", therefore currently all filters are
treated equally and are restored to the same device and volume.

This patch lets module-stream-restore ignore the streams that connect the filter to the
master.

link: https://bugs.freedesktop.org/show_bug.cgi?id=100065
7 years agoFix build warnings 51/131151/6 accepted/tizen/unified/20170531.082625 submit/tizen/20170526.083733
Seungbae Shin [Thu, 25 May 2017 12:51:00 +0000 (21:51 +0900)]
Fix build warnings

Additionally, replaced some remaing words "zero pop" with "empty pop" for clear meanings

[Version] 5.0.118
[Profile] Common
[Issue Type] Clean up

Change-Id: I15f714d5a4c8fe731a428441987b7d2dcd46d2fd

7 years agoladspa-sink: dbus implementation for tizen 18/71818/17
KimJeongYeon [Fri, 27 May 2016 07:45:19 +0000 (16:45 +0900)]
ladspa-sink: dbus implementation for tizen

Use system bus instead of protocol-dbus.

Signed-off-by: KimJeongYeon <jeongyeon.kim@samsung.com>
Change-Id: I26e89b160cf90cf52c96af42d61964aa2d5b5f82

7 years agomodule-filter-apply: Fix a memory leak 98/128498/3
KimJeongYeon [Wed, 10 May 2017 08:04:43 +0000 (17:04 +0900)]
module-filter-apply: Fix a memory leak

Dynamic memory allocated to 'module_name' and 'fltr' was being leaked.
Its now freed properly before return.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=95293
Signed-off-by: Sachin Kumar Chauhan <sachin.kc@samsung.com>
Signed-off-by: Arun Raghavan <arun@arunraghavan.net>
This patch based on:
https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=a19e1e5382ca9c193d9fa33356465b040f55a672

filter-apply: fix typo "what" -> "want"

This patch based on:
https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=71b128aaeabfdb0b5845ef062d8ddfd56baa77a8

Note for tizen:
The purpose of these patches is that sync code with upstream.

Change-Id: I0a8e2de2312752520e868c0dc0e84fa31bd12a00

7 years agofilter-apply: Do not re-route stream to master sink/source when manually moved to... 41/125541/14
KimJeongYeon [Wed, 10 May 2017 07:32:41 +0000 (16:32 +0900)]
filter-apply: Do not re-route stream to master sink/source when manually moved to filter

Currently, if a stream is manually moved to a filter sink or source managed by
module-filter-apply, the stream will be silently re-routed to the master sink
or source, because the filter.apply property is not set on that stream. We can
assume, that the users intention however was to have the stream filtered.

Therefore this patch changes the logic, so that the stream will not be moved
to the master but remains on the filter sink or source. To handle the change
of a property correctly, the filter.apply property must be set temporarily.
An additional property filter.apply.set_by_mfa was introduced to mark those
streams, so that filter.apply can be removed again when the stream moves away
from the filter.

This patch based on:
https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?h=next&id=b8858ff24d03dcd0828db529d455e3b2d2493b98

Signed-off-by: KimJeongYeon <jeongyeon.kim@samsung.com>
Change-Id: Id9072d92038f3806ff39f9d539c3229cb358afbf

7 years agofilter-apply: Add ability to pass parameters to a filter module 03/125103/2
KimJeongYeon [Thu, 13 Apr 2017 23:06:36 +0000 (08:06 +0900)]
filter-apply: Add ability to pass parameters to a filter module

Currently passing parameters to a filter loaded by module-filter-apply is
not possible.

To enable passing parameters to a filter this patch uses an additional property
filter.apply.{MODULE_NAME}.parameters. This way, filters like virtual-surround-sink
and ladspa-sink are fully supported. For example:
paplay file.wav --property=filter.apply=ladspa-sink \
                --property=filter.apply.ladspa-sink.parameters="plugin=ladspa \
                  label=ladspa_stereo control=0"

This patch based on:
https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=caabff2728d9d588664f8a0ea2f8441804c8b91a

Note for tizen:
Proplist 'filter.apply.extra.parameters' and 'filter.apply.extra.group' are removed.
Also, their names are modified as below.
1) 'filter.apply.extra.group' to 'filter.apply.{MODULE_NAME}.group'
2) 'filter.apply.extra.parameters' to 'filter.apply.{MODULE_NAME}.parameters'
For example:
paplay file1.wav --property=filter.apply=ladspa-sink \
                 --property=filter.apply.ladspa-sink.group=group1 \
                 --property=filter.apply.ladspa-sink.parameters="plugin=ladspa1 \
                   label=ladspa_stereo control=0"
paplay file2.wav --property=filter.apply=ladspa-sink \
                 --property=filter.apply.ladspa-sink.group=group2 \
                 --property=filter.apply.ladspa-sink.parameters="plugin=ladspa2 \
                   label=ladspa_stereo control=0"

Signed-off-by: KimJeongYeon <jeongyeon.kim@samsung.com>
Change-Id: Ia1c85aca2be1f7f4328674146e5caa5e78f5e536

7 years agoMerge "ladspa-sink: Add sink_master argument to enable filter-apply to load the modul...
youngseok lee [Fri, 26 May 2017 05:33:29 +0000 (05:33 +0000)]
Merge "ladspa-sink: Add sink_master argument to enable filter-apply to load the module" into tizen

7 years agoMerge "virtual-surround-sink: Add sink_master argument to enable filter-apply to...
youngseok lee [Fri, 26 May 2017 05:32:06 +0000 (05:32 +0000)]
Merge "virtual-surround-sink: Add sink_master argument to enable filter-apply to load the module" into tizen

7 years agoMerge "filter-apply: Fix memory leak in process()" into tizen
youngseok lee [Fri, 26 May 2017 05:30:24 +0000 (05:30 +0000)]
Merge "filter-apply: Fix memory leak in process()" into tizen

7 years agoi18n: update the French translation
Tanu Kaskinen [Mon, 22 May 2017 07:06:29 +0000 (10:06 +0300)]
i18n: update the French translation

These changes are from fedora.zanata.org. The authors are
Sam Friedmann <sfriedma@redhat.com>
Wim Taymans <wim.taymans@gmail.com>
Edouard Duliege <edouard.duliege@gmail.com>

7 years agoi18n: Updated Turkish translation
Muhammet Kara [Sat, 20 May 2017 08:20:00 +0000 (11:20 +0300)]
i18n: Updated Turkish translation

7 years agosink-input, source-output: don't allow moving streams that are connected to moving...
Tanu Kaskinen [Mon, 8 May 2017 09:58:49 +0000 (12:58 +0300)]
sink-input, source-output: don't allow moving streams that are connected to moving filter devices

When a filter sink is moving, it's not connected to any master sink, and
therefore it's not connected to any IO thread either. In this situation
trying to move a stream that is connected to the filter sink is likely
to result in crashing, because starting the move involves sending a
message to the IO thread. Sometimes this works by accident (the
asyncmsgq of the filter sink still points to the old master sink's
asyncmsgq), but we really should never attempt it. This patch blocks all
moves where the moving stream is connected to a filter sink that itself
is in the middle of a move.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100277
7 years agosink/source: Don't update default sink/source before calling PA_CORE_HOOK_{SINK,SOURC...
Georg Chini [Thu, 18 May 2017 05:47:27 +0000 (07:47 +0200)]
sink/source: Don't update default sink/source before calling PA_CORE_HOOK_{SINK,SOURCE}_PUT

In sink_put() and source_put(), pa_core_update_default_{sink,source}() was called
before the PA_CORE_HOOK_{SINK,SOURCE}_PUT hook. Therefore module-switch-on-connect
could not correctly determine the old default sink/source if no user default was
set and a sink/source with higher priority than any other sink/source turned up.

This patch corrects the problem by swapping the order of the hook call and the
pa_core_update_default_sink() call.

Additionally it corrects a problem in module-switch-on-connect. If, after the
change above, the new sink/source was the first sink/source to appear, pulseaudio
would crash because module-switch-on-connect assumed that the default sink/source
was not NULL. The patch checks if the default sink/source is NULL and only sets
the new default sink/source in that case.

7 years agovirtual sources and sinks: Don't double attach a sink input or source output on filte...
Georg Chini [Thu, 18 May 2017 05:46:46 +0000 (07:46 +0200)]
virtual sources and sinks: Don't double attach a sink input or source output 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.

Link: https://bugs.freedesktop.org/show_bug.cgi?id=100065
7 years agovirtual sinks and sources: Revert commits
Georg Chini [Thu, 18 May 2017 05:46:08 +0000 (07:46 +0200)]
virtual sinks and sources: Revert commits

This patch reverts commit db4fbb0121a2577d786cda023a6a439a9734f152 and
3bb94c4e836ca765a36255e416fd8e6cf272ab44. They were the wrong approach
to fix the bug (and did not fix it anyway).

7 years agosink, source: update the default sink/source on port switches
Tanu Kaskinen [Sun, 7 May 2017 09:12:39 +0000 (12:12 +0300)]
sink, source: update the default sink/source on port switches

When sinks are compared during the default sink selection, the active
port's availability is inspected. Therefore, the default sink should be
updated when the active port changes, because the new port may have
different availability status than the old port.

For example, let's say that a laptop has an analog sink with a speaker
and a headphone port, and headphones are initially plugged in, so both
ports can be used[1]. The headphone port is initially the active port.
There's also a null sink in the system. When the headphones are
unplugged, the headphone port becomes unavailable, and the null sink
becomes the new default sink. Then module-switch-on-port-available
changes the analog sink port to speakers. Now the default sink should
change back to the analog sink, but that doesn't happen without this
patch.

[1] Actually we currently mark speakers as unavailable when headphones
are plugged in, but that's not strictly necessary. My example relies on
both ports being available initially, so the bug can't be reproduced
with the current mixer configuration.

7 years agoi18n: update the Croatian translation
muzena [Thu, 27 Apr 2017 13:06:46 +0000 (15:06 +0200)]
i18n: update the Croatian translation

7 years agosink-input: Enhance PCM dump 19/125419/3
Jungsup Lee [Mon, 17 Apr 2017 07:08:04 +0000 (16:08 +0900)]
sink-input: Enhance PCM dump

PCM dump is not correct if one or more sink-input hasn't pcm data enough when sink request pcm data
In this case, PCM dump file should be rewound when pa_sink_input_drop is called

[Version] 5.0.117
[Profile] Common
[Issue Type] Enhancement

Signed-off-by: Jungsup Lee <jungsup4.lee@samsung.com>
Change-Id: I42cb75c6e058a186d0b761583b87bcd46361bdfb

7 years agoladspa-sink: Add sink_master argument to enable filter-apply to load the module 04/123404/4
KimJeongYeon [Thu, 13 Apr 2017 22:45:00 +0000 (07:45 +0900)]
ladspa-sink: Add sink_master argument to enable filter-apply to load the module

Currently, module-filter-apply cannot load module-ladspa-sink because filter-apply
provides the argument "sink_master" but ladspa-sink expects "master" instead.

Therefore this patch adds the sink_master argument to module-ladspa-sink.

Additionally, the autoloaded argument was also added.

This patch based on:
https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=145da09aca8b54d611999ebf661b05ceb9e1c62f

ladspa-sink, virtual-surround-sink: fix master sink argument handling

The old code worked incorrectly in several situations. For example,
trying to use the "master" argument wouldn't work, because if
"sink_master" wasn't specified, pa_namereg_get() would pick the default
sink as the master sink.

This patch based on:
https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=65f7ca44148e8c79fa965a6ecbc889e3f9668178

Signed-off-by: KimJeongYeon <jeongyeon.kim@samsung.com>
Change-Id: I15382f0f2551bcd2d3bcb9bf117914ed2cc3e5ff

7 years agovirtual-surround-sink: Add sink_master argument to enable filter-apply to load the... 00/123400/4
KimJeongYeon [Thu, 13 Apr 2017 22:41:22 +0000 (07:41 +0900)]
virtual-surround-sink: Add sink_master argument to enable filter-apply to load the module

Currently, module-filter-apply cannot load module-virtual-surround-sink because filter-apply
provides the argument "sink_master" but virtual-surround-sink expects "master" instead.

Therefore this patch adds the sink_master argument to module-virtual-surround-sink.

Additionally, the autoloaded argument was also added.

This patch based on:
https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=ba4de85b530d91f5f7d81f3bf29a0ae8bc60b04e

ladspa-sink, virtual-surround-sink: fix master sink argument handling

The old code worked incorrectly in several situations. For example,
trying to use the "master" argument wouldn't work, because if
"sink_master" wasn't specified, pa_namereg_get() would pick the default
sink as the master sink.

This patch based on:
https://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=65f7ca44148e8c79fa965a6ecbc889e3f9668178

Signed-off-by: KimJeongYeon <jeongyeon.kim@samsung.com>
Change-Id: I25b328ffd308e09c6082ed39ec4aa299a56422bf

7 years agobluez5-device: Correctly handle suspend/resume cyle for audio gateway role of ofono...
Georg Chini [Thu, 4 May 2017 11:14:51 +0000 (13:14 +0200)]
bluez5-device: Correctly handle suspend/resume cyle for audio gateway role of ofono backend

When the ofono backend released a tranport during suspend of sink or source, the
transport state was not changed to IDLE. Therefore pa_bluetooth_transport_set_state()
would return immediately when trying to resume. Even though the transport was acquired
correctly, setup_stream() would never be called and the resume failed.

This patch sets the transport state to IDLE when the transport is released. On resume,
the first call to transport_acquire() will be done from the message handler of the
*_SET_STATE message when source or sink are set to RUNNING. This call will only request
the setup of the connection, so setup_stream() cannot be called.
When the transport changes the state to PLAYING in hf_audio_agent_new_connection(),
handle_transport_state_change() is called. Because the sink or source state is already
RUNNING, the pa_{source,sink}_suspend() call will not lead to a state change message
and the I/O thread must be signaled explicitely to setup the stream.

The first setup of the device would also fail, which was only visible when the profile
was restored after connecting the headset. When trying to restore the headset_head_unit
profile, the profile was shortly set to off, so the headset always returned to a2dp.

This patch allows a delayed setup for the headset_head_unit profile, so that the profile
can successfully be restored.

7 years agobluetooth: ofono: Fix failing to parse valid NewConnection
Luiz Augusto von Dentz [Thu, 4 May 2017 11:12:59 +0000 (13:12 +0200)]
bluetooth: ofono: Fix failing to parse valid NewConnection

When suspending due to idle timeout the transport will not change its
state, also in case the fd is closed due to POLLERR/POLLHUP events
the release shall check if the fd is still set otherwise it will fail
to be acquired again.

7 years agobluetooth: ofono: Close fd if cannot be accepted
Luiz Augusto von Dentz [Thu, 4 May 2017 11:11:27 +0000 (13:11 +0200)]
bluetooth: ofono: Close fd if cannot be accepted

Always close fd that cannot be accepted otherwise it will be left open
without being attached to any transport.

7 years agobluetooth: Auto recover if profile is 'off'
Luiz Augusto von Dentz [Thu, 4 May 2017 10:58:54 +0000 (12:58 +0200)]
bluetooth: Auto recover if profile is 'off'

This means something went wrong, which in case of ofono backend it is
probably due to the profile not connecting immediately, but it can be
safely restored in that case the transport is playing which means the
profile has recovered connectivity.

7 years agobluetooth: Don't default to native backend
Luiz Augusto von Dentz [Thu, 4 May 2017 10:53:32 +0000 (12:53 +0200)]
bluetooth: Don't default to native backend

The native backend is limited to HSP only which may not work with devices
that can only do HFP so if oFono is enabled it shall be used as default.

7 years agobluetooth: ofono: Detect if Connect has been called
Luiz Augusto von Dentz [Thu, 4 May 2017 10:52:18 +0000 (12:52 +0200)]
bluetooth: ofono: Detect if Connect has been called

This detects if profile has already been called and we are waiting
the response.

7 years agobluetooth: ofono: Fix asserting when connecting as AG
Luiz Augusto von Dentz [Thu, 4 May 2017 10:51:00 +0000 (12:51 +0200)]
bluetooth: ofono: Fix asserting when connecting as AG

Check the card Type property instead of assuming ofono would only be used
for HF role.

7 years agobluetooth: ofono: Don't attempt to connect if fd is ready
Luiz Augusto von Dentz [Thu, 4 May 2017 10:47:58 +0000 (12:47 +0200)]
bluetooth: ofono: Don't attempt to connect if fd is ready

If SCO fd is already set don't attempt to connect again.

7 years agojack-sink: fix latency calculation
Tanu Kaskinen [Tue, 2 May 2017 13:44:29 +0000 (16:44 +0300)]
jack-sink: fix latency calculation

The compiler warned about number_of_frames being possibly used
uninitialized, and on closer inspection I found that it was indeed not
initialized if saved_frame_time_valid is false.

In commit fe70b9e11a "source/sink: Allow pa_{source,
sink}_get_latency_within_thread() to return negative values" the
number_of_frames variable was added as an unsigned version of the l
variable, and number_of_frames partially replaced the l variable. The
replacement should have gone all the way, however. This patch removes
the remaining uses of the l variable and substitutes number_of_frames
on its place, and as a result, number_of_frames is now always
initialized.

7 years agocore, device-port: check availability when choosing the default device
Tanu Kaskinen [Thu, 16 Feb 2017 10:09:39 +0000 (12:09 +0200)]
core, device-port: check availability when choosing the default device

It doesn't make sense to use a sink or source whose active port is
unavailable, so let's take this into account when choosing the default
sink and source.

7 years agoimprove default sink/source handling
Tanu Kaskinen [Thu, 16 Feb 2017 10:09:38 +0000 (12:09 +0200)]
improve default sink/source handling

Currently the default sink policy is simple: either the user has
configured it explicitly, in which case we always use that as the
default, or we pick the sink with the highest priority. The sink
priorities are currently static, so there's no need to worry about
updating the default sink when sink priorities change.

I intend to make things a bit more complex: if the active port of a sink
is unavailable, the sink should not be the default sink, and I also want
to make sink priorities dependent on the active port, so changing the
port should cause re-evaluation of which sink to choose as the default.
Currently the default sink choice is done only when someone calls
pa_namereg_get_default_sink(), and change notifications are only sent
when a sink is created or destroyed. That makes it hard to add new rules
to the default sink selection policy.

This patch moves the default sink selection to
pa_core_update_default_sink(), which is called whenever something
happens that can affect the default sink choice. That function needs to
know the previous choice in order to send change notifications as
appropriate, but previously pa_core.default_sink was only set when the
user had configured it explicitly. Now pa_core.default_sink is always
set (unless there are no sinks at all), so pa_core_update_default_sink()
can use that to get the previous choice. The user configuration is saved
in a new variable, pa_core.configured_default_sink.

pa_namereg_get_default_sink() is now unnecessary, because
pa_core.default_sink can be used directly to get the
currently-considered-best sink. pa_namereg_set_default_sink() is
replaced by pa_core_set_configured_default_sink().

I haven't confirmed it, but I expect that this patch will fix problems
in the D-Bus protocol related to default sink handling. The D-Bus
protocol used to get confused when the current default sink gets
removed. It would incorrectly think that if there's no explicitly
configured default sink, then there's no default sink at all. Even
worse, when the D-Bus thinks that there's no default sink, it concludes
that there are no sinks at all, which made it impossible to configure
the default sink via the D-Bus interface. Now that pa_core.default_sink
is always set, except when there really aren't any sinks, the D-Bus
protocol should behave correctly.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=99425
7 years agoalsa: don't assume that hw:x is an analog output
Tanu Kaskinen [Mon, 24 Apr 2017 15:06:52 +0000 (18:06 +0300)]
alsa: don't assume that hw:x is an analog output

Previously, if front:x didn't work, we would try to use hw:x for analog
stereo output. There's no guarantee that hw:x is an analog output,
however. For example, the Intel HDMI LPE driver uses hw:x for HDMI
output, and PulseAudio incorrectly created analog profiles for that
card, because front:x doesn't work but hw:x does.

This patch changes things so that the analog stereo mapping doesn't any
more use hw:x as a fallback. A separate "unknown stereo" fallback
mapping is added to handle the rare case where hw:x is the only PCM
device that works.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100488
7 years agovolume: Fix overflow in percent calculation of pa_*volume_snprint*()
Georg Chini [Sat, 29 Apr 2017 08:38:05 +0000 (10:38 +0200)]
volume: Fix overflow in percent calculation of pa_*volume_snprint*()

The percent calculation could overflow in the pa_*volume_snprint*() functions.
For large volumes, volume * 100 can exceed UINT32_MAX.

This patch adds appropriate type casts.

7 years agovolume: Print a warning when volume is clipped in pa_sw_volume_multiply/divide()
Georg Chini [Sat, 29 Apr 2017 08:12:01 +0000 (10:12 +0200)]
volume: Print a warning when volume is clipped in pa_sw_volume_multiply/divide()

When the volume exceeds PA_VOLUME_MAX in pa_sw_volume_multiply() or
pa_sw_volume_divide(), volume settings are insanely high and the
user should be notified about it.

This patch adds volume clamping to pa_sw_volume_divide() and prints
a warning when the volume is clipped in both functions.

7 years agosource/sink: Fix wrong calculation of thread_info.current_hw_volume
Georg Chini [Sat, 29 Apr 2017 08:07:01 +0000 (10:07 +0200)]
source/sink: Fix wrong calculation of thread_info.current_hw_volume

In pa_{source,sink}_new() and pa_{source,sink}_put() the current hardware
volume was miscalculated:

hw volume (dB) = real volume (dB) + soft volume (dB)
was used instead of
hw volume (dB) = real volume (dB) - soft volume (dB)

This lead to a crash in pa_alsa_path_set_volume() if high volumes were
set and the port was changed.

This patch fixes the calculation. Thanks to Tanu for pointing out
the correct solution.

link: https://bugs.freedesktop.org/show_bug.cgi?id=65520
7 years agoi18n: update the Brazilian Portuguese translation
Rafael Fontenelle [Sun, 9 Apr 2017 23:22:04 +0000 (20:22 -0300)]
i18n: update the Brazilian Portuguese translation

7 years agovirtual sources and sinks: Fix possible segfault
Georg Chini [Mon, 24 Apr 2017 18:31:54 +0000 (20:31 +0200)]
virtual sources and sinks: Fix possible segfault

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.

7 years agoecho-cancel: Fix segfault during profile switch
Georg Chini [Mon, 24 Apr 2017 18:30:48 +0000 (20:30 +0200)]
echo-cancel: Fix segfault during profile switch

When module-echo-cancel is loaded and there is only one sound card, then during a
profile switch, all sinks and sources can become temporarily unavailable. If
module-always sink is loaded, it will load a null-sink in that situation. If
also module-switch-on-connect is loaded, it will try to move the sink-inputs to
the new null-sink. If a sink-input was connected to the echo-cancel sink,
pa_sink_input_start_move() will send a PA_SINK_GET_LATENCY message to the
echo-cancel sink. The message handler will then in turn call
pa_sink_get_latency_within_thread() for the invalid master sink of module-echo-cancel.
This lead to a segfault.

This patch checks in the message handler if the master sink (or source) is valid and
returns 0 if not.

7 years agoi18n: Update the Korean translation
KimJeongYeon [Sat, 22 Apr 2017 17:29:24 +0000 (02:29 +0900)]
i18n: Update the Korean translation

Translate filter modules and fixed wrong c-format.

Signed-off-by: KimJeongYeon <jeongyeon.kim@samsung.com>
7 years agoi18n: add Croatian translation
muzena [Sun, 23 Apr 2017 21:06:47 +0000 (23:06 +0200)]
i18n: add Croatian translation

7 years agobluez5-util: Fix segfault during shutdown of daemon
Georg Chini [Fri, 21 Apr 2017 19:49:58 +0000 (21:49 +0200)]
bluez5-util: Fix segfault during shutdown of daemon

If a HFP audio gateway was connected via the ofono backend, pulse would
segfault during shutdown of the daemon. pa_bluetooth_discovery_unref()
removed the devices and transports before the ofono backend was freed.
Because the ofono backend keeps its own list of transports, transport_free()
was then called during termination of the ofono backend with an invalid
transport. Bug reported by Andrew Hlynskyi.

This patch moves the termination of the ofono and native backends before
freeing the devices.

7 years agoecho-cancel: Change the DEVICE_MASTER_DEVICE property when changing device
Corentin Noël [Wed, 12 Apr 2017 23:54:25 +0000 (01:54 +0200)]
echo-cancel: Change the DEVICE_MASTER_DEVICE property when changing device

7 years agosink: Add missing 'hifi' form factor to priorities
Christian Kellner [Wed, 5 Apr 2017 11:59:08 +0000 (13:59 +0200)]
sink: Add missing 'hifi' form factor to priorities

Assign it a propriety of 600, therefore ranking higher then speaker,
but below headphone.

https://bugs.freedesktop.org/show_bug.cgi?id=100579

7 years agosink: Add portable form factor priority (450)
Christian Kellner [Wed, 5 Apr 2017 11:52:27 +0000 (13:52 +0200)]
sink: Add portable form factor priority (450)

The 'portable' form factor was currently missing meaning it is not
getting any form-factor priority at all and it would therefore always
be ranked lower then internal devices (which receive 400 form factor
priority). The priority 450 is smaller then 'speaker', based on the
idea that a portable device might have less quality then a dedicated
'speaker' device (some Yamaha amplifiers announce themselves as such).

https://bugs.freedesktop.org/show_bug.cgi?id=100579

7 years agosource/sink: Allow pa_{source, sink}_get_latency_within_thread() to return negative...
Georg Chini [Mon, 17 Apr 2017 17:50:10 +0000 (19:50 +0200)]
source/sink: Allow pa_{source, sink}_get_latency_within_thread() to return 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.