pulseaudio: Customize pulseaudio configuration for i.MX6 platforms
PATCH v2 1/3 pulseaudio: Customize pulseaudio configuration for i.MX6 platforms
on i.MX6 seriese boards, some pulseaudio's defualt setting should be modified to improve the user experience:
- Daemon's exit_idle_time: set value as -1 to make pulseaudio service
never be terminated by any user-space apps.
- Resample method: switch to the build-in ffmpeg library to improve the
sound quality.
- Flat_Volumes: set value as "no" to align with the normal use case.
These customized configuration would be installed to overwrite the original version.
--- .../pulseaudio/pulseaudio/mx6/daemon.conf | 87 ++++++++++ .../pulseaudio/pulseaudio/mx6/default.pa | 170 ++++++++++++++++++++ .../pulseaudio/pulseaudio_5.0.bbappend | 20 +++ 3 files changed, 277 insertions(+) create mode 100644 recipes-multimedia/pulseaudio/pulseaudio/mx6/daemon.conf create mode 100644 recipes-multimedia/pulseaudio/pulseaudio/mx6/default.pa create mode 100644 recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend
recipes-multimedia/pulseaudio/pulseaudio/mx6/daemon.conf new file +87 -0
@@ -0,0 +1,87 @@ +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. + +## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for +## more information. Default values are commented out. Use either ; or # for +## commenting. + +; daemonize = no +; fail = yes +; allow-module-loading = yes +; allow-exit = yes +; use-pid-file = yes +; system-instance = no +; local-server-type = user +; enable-shm = yes +; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB +; lock-memory = no +; cpu-limit = no + +; high-priority = yes +; nice-level = -11 + +; realtime-scheduling = yes +; realtime-priority = 5 + +exit-idle-time = -1 +; scache-idle-time = 20 + +; dl-search-path = (depends on architecture) + +; load-default-script-file = yes +; default-script-file = /etc/pulse/default.pa + +; log-target = auto +; log-level = notice +; log-meta = no +; log-time = no +; log-backtrace = 0 + +resample-method = ffmpeg +; enable-remixing = yes +; enable-lfe-remixing = no + +flat-volumes = no + +; rlimit-fsize = -1 +; rlimit-data = -1 +; rlimit-stack = -1 +; rlimit-core = -1 +; rlimit-as = -1 +; rlimit-rss = -1 +; rlimit-nproc = -1 +; rlimit-nofile = 256 +; rlimit-memlock = -1 +; rlimit-locks = -1 +; rlimit-sigpending = -1 +; rlimit-msgqueue = -1 +; rlimit-nice = 31 +; rlimit-rtprio = 9 +; rlimit-rttime = 1000000 + +; default-sample-format = s16le +; default-sample-rate = 44100 +; alternate-sample-rate = 48000 +; default-sample-channels = 2 +; default-channel-map = front-left,front-right + +; default-fragments = 4 +; default-fragment-size-msec = 25 + +; enable-deferred-volume = yes +; deferred-volume-safety-margin-usec = 8000 +; deferred-volume-extra-delay-usec = 0
recipes-multimedia/pulseaudio/pulseaudio/mx6/default.pa new file +170 -0
170 lines not on this page · raw message
recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend new file +20 -0
@@ -0,0 +1,20 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI_append_mx6 = " file://daemon.conf \ + file://default.pa \ +" + +do_install_append_mx6 () { + # FIXME: Install the customized pulseaudio damon setting to overwrite the default one + install -m 0644 ${WORKDIR}/daemon.conf ${D}${sysconfdir}/pulse/daemon.conf + install -m 0644 ${WORKDIR}/default.pa ${D}${sysconfdir}/pulse/default.pa + + #FIXME: Remove the kde desktop, because there are two destop in default + # (pulseaudio-kde.destop, pulseaudio.destop), then the pulseaudio server + # will be started twice, pulseaudio will have issue to switch to default input/output. + if [ -e ${D}${sysconfdir}/xdg/autostart/pulseaudio-kde.desktop ] + then + rm ${D}${sysconfdir}/xdg/autostart/pulseaudio-kde.desktop + fi +} +
Signature · 1 line
1.7.9.5
PATCH v2 2/3 pulseaudio: Fix mutext issue when do pause in gstreamer
Pulseaudio crashes when other program using sound:
Assertion 'pthread_mutex_unlock(&m->mutex) == 0' failed at pulsecore/mutex-posix.c:106, function pa_mutex_unlock().
Disable the feature PTHREAD priority inheritance is the easiest workaround for this issue.
--- .../pulseaudio/pulseaudio_5.0.bbappend | 1 + 1 file changed, 1 insertion(+)
recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend +1 -0
@@ -18,3 +18,4 @@ do_install_append_mx6 () { fi } +CACHED_CONFIGUREVARS_append_mx6 = " ax_cv_PTHREAD_PRIO_INHERIT=no"
Signature · 1 line
1.7.9.5
Re: [meta-fsl-arm][PATCH v2 2/3] pulseaudio: Fix mutext issue when do pause in gstreamer
Quoted 8 lines · Jun Zhu
Pulseaudio crashes when other program using sound:
Assertion 'pthread_mutex_unlock(&m->mutex)== 0' failed atpulsecore/mutex-posix.c:106, functionpa_mutex_unlock().Disable the feature PTHREAD priority inheritance is the easiest workaround for this issue.
Signed-off-by Jun Zhu <[email protected]>
I am fine with this patch, please rebase it to it not depend on 1/3 to be applied so we include it in master-next for testing.
Signature · 3 lines
Otavio Salvador O.S. Systems http://www.ossystems.com.br http://code.ossystems.com.br Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
PATCH v2 3/3 pulseaudio: Fix no sound issue after plugin/out headphone
In reply to Jun ZhuThis issue found on the i.MX6 testing: when switch audio output between headphone and speaker, sometimes it founds no sound when plugin headphone.
Root cause is the the core-subscribe.c has a defer queue for audio sink's switch event and stores the status in database. Because it is a defer queue, sometimes the stored status is changed not as user expected.
--- ...s-no-sound-after-plugin-plugout-headphone.patch | 127 ++++++++++++++++++++ .../pulseaudio/pulseaudio_5.0.bbappend | 1 + 2 files changed, 128 insertions(+) create mode 100644 recipes-multimedia/pulseaudio/pulseaudio/mx6/Fix-issue-there-is-no-sound-after-plugin-plugout-headphone.patch
recipes-multimedia/pulseaudio/pulseaudio/mx6/Fix-issue-there-is-no-sound-after-plugin-plugout-headphone.patch new file +127 -0
@@ -0,0 +1,127 @@ +From 7dfff7e62296779dca9831598af082ee72bfed41 Mon Sep 17 00:00:00 2001 +From: Shengjiu Wang <[email protected]> +Date: Mon, 5 May 2014 14:21:16 +0800 +Subject: [PATCH] Fix issue: there is no sound after plugin/plugout headphone + +In default config, when switching headphone with speaker, the unused one will +be switch off. And pulseaudio will store the setting in the database for +restore later, when switch back to the output path. +But the core-subscribe.c has a defer queue for these events, like sink|new, +sink|change, which will read the current switch status and store it in +the database. Because it is a defer queue, sometimes the stored status is +changed not as user's requirement. below is the call flow. + +init: + store on for speaker to database. + store on for headphone to database. +---Activating analog-output-speaker + switch on speaker + switch off headphone +----headphone plugin + ---analog-output-speaker status no + ---Activating analog-output + Queued event (SINK|CHANGE|0) + switch off speaker + switch off headphone + ---analog-output-headphone status yes + ---Activating analog-output-headphone + switch off speaker + switch off headphone + Dispatched event (SINK|CHANGE|0) + store off for headphone to database. + +Meantime the root cause is not found, a workaround is used by changing the +configure file. + +Another change is remain the volume same as the asound.state. + +Upstream Status: N/A + - It is i.Mx specific + +Signed-off-by: Shengjiu Wang <[email protected]> +--- + .../alsa/mixer/paths/analog-output-headphones.conf | 8 ++++---- + .../alsa/mixer/paths/analog-output-speaker.conf | 8 ++++---- + src/modules/alsa/mixer/paths/analog-output.conf | 8 ++++---- + 3 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/src/modules/alsa/mixer/paths/analog-output-headphones.conf b/src/modules/alsa/mixer/paths/analog-output-headphones.conf +index b1a349a..7bfa79e 100644 +--- a/src/modules/alsa/mixer/paths/analog-output-headphones.conf ++++ b/src/modules/alsa/mixer/paths/analog-output-headphones.conf +@@ -63,8 +63,8 @@ volume = off + + [Element Headphone] + required-any = any +-switch = mute +-volume = merge ++switch = on ++volume = ignore + override-map.1 = all + override-map.2 = all-left,all-right + +@@ -86,8 +86,8 @@ switch = mute + volume = zero + + [Element Speaker] +-switch = off +-volume = off ++switch = on ++volume = ignore + + [Element Desktop Speaker] + switch = off +diff --git a/src/modules/alsa/mixer/paths/analog-output-speaker.conf b/src/modules/alsa/mixer/paths/analog-output-speaker.conf +index d79fad1..eae40a0 100644 +--- a/src/modules/alsa/mixer/paths/analog-output-speaker.conf ++++ b/src/modules/alsa/mixer/paths/analog-output-speaker.conf +@@ -62,8 +62,8 @@ volume = off + ; This profile path is intended to control the speaker, let's mute headphones + ; else there will be a spike when plugging in headphones + [Element Headphone] +-switch = off +-volume = off ++switch = on ++volume = ignore + + [Element Headphone2] + switch = off +@@ -71,8 +71,8 @@ volume = off + + [Element Speaker] + required-any = any +-switch = mute +-volume = merge ++switch = on ++volume = ignore + override-map.1 = all + override-map.2 = all-left,all-right + +diff --git a/src/modules/alsa/mixer/paths/analog-output.conf b/src/modules/alsa/mixer/paths/analog-output.conf +index 3a552c9..bd5c12b 100644 +--- a/src/modules/alsa/mixer/paths/analog-output.conf ++++ b/src/modules/alsa/mixer/paths/analog-output.conf +@@ -53,16 +53,16 @@ switch = off + ; headphones. But it should not hurt if we leave the headphone jack + ; enabled nonetheless. + [Element Headphone] +-switch = mute +-volume = zero ++switch = on ++volume = ignore + + [Element Headphone2] + switch = mute + volume = zero + + [Element Speaker] +-switch = mute +-volume = off ++switch = on ++volume = ignore + + [Element Desktop Speaker] + switch = mute +-- +1.7.9.5 +
recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend +1 -0
@@ -2,6 +2,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI_append_mx6 = " file://daemon.conf \ file://default.pa \ + file://Fix-issue-there-is-no-sound-after-plugin-plugout-headphone.patch \ " do_install_append_mx6 () {
Signature · 1 line
1.7.9.5
Re: [meta-fsl-arm][PATCH v2 3/3] pulseaudio: Fix no sound issue after plugin/out headphone
Quoted 9 lines · Jun Zhu
This issue found on the i.MX6 testing: when switch audio output between headphone and speaker, sometimes it founds no sound when plugin headphone.
Root cause is the thecore-subscribe.chas a defer queue for audio sink's switch event and stores the status in database. Because it is a defer queue, sometimes the stored status is changed not as user expected.Signed-off-by Jun Zhu <[email protected]>
...
Quoted 1 line
+Another change is remain the volume same as the asound.state.
...
Could the asound change be reverted? This is indeed an application option and people making Media Servers would expect PulseAudio to be the authority here in case it is in use.
Signature · 3 lines
Otavio Salvador O.S. Systems http://www.ossystems.com.br http://code.ossystems.com.br Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
Quoted 1 line · Jun Zhu
on i.MX6 seriese boards, some pulseaudio's defualt setting should be
series
default
Quoted 11 lines
modified to improve the user experience:
- Daemon'sexit_idle_time: set value as -1 to make pulseaudio service
never be terminated by any user-space apps.
- Resample method: switch to the build-in ffmpeg library to improve the
sound quality.
-Flat_Volumes: set value as "no" to align with the normal use case.These customized configuration would be installed to overwrite the original version.
Signed-off-by Jun Zhu <[email protected]>
I am a little unsure about this patch. Let me explain...
Here you /decide/ by user it ought to use ALSA for volume. This has a considerable risk break someone's application which uses PulseAudio to manage it and expect it to be used as the default setting.
This is not a BSP thing but a application layer/product option.
What others think?
...
Quoted 15 lines
recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend new file +9
-0@@ -0,0 +1,20 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI_append_mx6 = " file://daemon.conf \ + file://default.pa \ +" + +do_install_append_mx6 () { + # FIXME: Install the customized pulseaudio damon setting to overwrite the default one + install -m 0644 ${WORKDIR}/daemon.conf ${D}${sysconfdir}/pulse/daemon.conf
recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend line 19
Quoted 10 lines
recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend new file +10
-0+ install -m 0644 ${WORKDIR}/default.pa ${D}${sysconfdir}/pulse/default.pa + + #FIXME: Remove the kde desktop, because there are two destop in default + # (pulseaudio-kde.destop, pulseaudio.destop), then the pulseaudio server + # will be started twice, pulseaudio will have issue to switch to default input/output. + if [ -e ${D}${sysconfdir}/xdg/autostart/pulseaudio-kde.desktop ] + then + rm ${D}${sysconfdir}/xdg/autostart/pulseaudio-kde.desktop + fi +}
The .desktop fix is not a BSP one, please work on a proper fix in OE-Core.
Signature · 3 lines
Otavio Salvador O.S. Systems http://www.ossystems.com.br http://code.ossystems.com.br Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750