Patchwork [meta-fsl-arm,v2,1/3] pulseaudio: Customize pulseaudio configuration for i.MX6 platforms

login
register
mail settings
Submitter Jun Zhu
Date Aug. 1, 2014, 6:18 a.m.
Message ID <1406873886-30571-1-git-send-email-R01007@freescale.com>
Download mbox | patch
Permalink /patch/77065/
State Changes Requested
Delegated to: Otavio Salvador
Headers show

Comments

Jun Zhu - Aug. 1, 2014, 6:18 a.m.
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.

Signed-off-by: Jun Zhu <R01007@freescale.com>
---
 .../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
Otavio Salvador - Aug. 1, 2014, 1:07 p.m.
On Fri, Aug 1, 2014 at 3:18 AM, Jun Zhu <R01007@freescale.com> wrote:
> on i.MX6 seriese boards, some pulseaudio's defualt setting should be

series

default


> 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.
>
> Signed-off-by: Jun Zhu <R01007@freescale.com>

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?

...
> diff --git a/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend b/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend
> new file mode 100644
> index 0000000..1774224
> --- /dev/null
> +++ b/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend
> @@ -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
> +}

The .desktop fix is not a BSP one, please work on a proper fix in OE-Core.

Patch

diff --git a/recipes-multimedia/pulseaudio/pulseaudio/mx6/daemon.conf b/recipes-multimedia/pulseaudio/pulseaudio/mx6/daemon.conf
new file mode 100644
index 0000000..54854eb
--- /dev/null
+++ b/recipes-multimedia/pulseaudio/pulseaudio/mx6/daemon.conf
@@ -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
diff --git a/recipes-multimedia/pulseaudio/pulseaudio/mx6/default.pa b/recipes-multimedia/pulseaudio/pulseaudio/mx6/default.pa
new file mode 100644
index 0000000..83a6ba8
--- /dev/null
+++ b/recipes-multimedia/pulseaudio/pulseaudio/mx6/default.pa
@@ -0,0 +1,170 @@ 
+#!/usr/bin/pulseaudio -nF
+#
+# 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.
+
+# This startup script is used only if PulseAudio is started per-user
+# (i.e. not in system mode)
+
+.nofail
+
+### Load something into the sample cache
+#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
+#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
+
+.fail
+
+### Automatically restore the volume of streams and devices
+load-module module-device-restore
+load-module module-stream-restore
+load-module module-card-restore
+
+### Automatically augment property information from .desktop files
+### stored in /usr/share/application
+load-module module-augment-properties
+
+### Should be after module-*-restore but before module-*-detect
+load-module module-switch-on-port-available
+
+### Load audio drivers statically
+### (it's probably better to not load these drivers manually, but instead
+### use module-udev-detect -- see below -- for doing this automatically)
+#load-module module-alsa-sink
+#load-module module-alsa-source device=hw:1,0
+#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
+#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
+#load-module module-null-sink
+#load-module module-pipe-sink
+
+### Automatically load driver modules depending on the hardware available
+.ifexists module-udev-detect.so
+load-module module-udev-detect tsched=0
+.else
+### Use the static hardware detection module (for systems that lack udev support)
+load-module module-detect
+.endif
+
+### Automatically connect sink and source if JACK server is present
+.ifexists module-jackdbus-detect.so
+.nofail
+load-module module-jackdbus-detect channels=2
+.fail
+.endif
+
+### Automatically load driver modules for Bluetooth hardware
+.ifexists module-bluetooth-policy.so
+load-module module-bluetooth-policy
+.endif
+
+.ifexists module-bluetooth-discover.so
+load-module module-bluetooth-discover
+.endif
+
+### Load several protocols
+.ifexists module-esound-protocol-unix.so
+load-module module-esound-protocol-unix
+.endif
+load-module module-native-protocol-unix
+
+### Network access (may be configured with paprefs, so leave this commented
+### here if you plan to use paprefs)
+#load-module module-esound-protocol-tcp
+#load-module module-native-protocol-tcp
+#load-module module-zeroconf-publish
+
+### Load the RTP receiver module (also configured via paprefs, see above)
+#load-module module-rtp-recv
+
+### Load the RTP sender module (also configured via paprefs, see above)
+#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
+#load-module module-rtp-send source=rtp.monitor
+
+### Load additional modules from GConf settings. This can be configured with the paprefs tool.
+### Please keep in mind that the modules configured by paprefs might conflict with manually
+### loaded modules.
+.ifexists module-gconf.so
+.nofail
+load-module module-gconf
+.fail
+.endif
+
+### Automatically restore the default sink/source when changed by the user
+### during runtime
+### NOTE: This should be loaded as early as possible so that subsequent modules
+### that look up the default sink/source get the right value
+load-module module-default-device-restore
+
+### Automatically move streams to the default sink if the sink they are
+### connected to dies, similar for sources
+load-module module-rescue-streams
+
+### Make sure we always have a sink around, even if it is a null sink.
+load-module module-always-sink
+
+### Honour intended role device property
+load-module module-intended-roles
+
+### Automatically suspend sinks/sources that become idle for too long
+load-module module-suspend-on-idle
+
+### If autoexit on idle is enabled we want to make sure we only quit
+### when no local session needs us anymore.
+.ifexists module-console-kit.so
+load-module module-console-kit
+.endif
+.ifexists module-systemd-login.so
+load-module module-systemd-login
+.endif
+
+### Enable positioned event sounds
+load-module module-position-event-sounds
+
+### Cork music/video streams when a phone stream is active
+load-module module-role-cork
+
+### Modules to allow autoloading of filters (such as echo cancellation)
+### on demand. module-filter-heuristics tries to determine what filters
+### make sense, and module-filter-apply does the heavy-lifting of
+### loading modules and rerouting streams.
+load-module module-filter-heuristics
+load-module module-filter-apply
+
+### Load DBus protocol
+.ifexists module-dbus-protocol.so
+load-module module-dbus-protocol
+.endif
+
+# X11 modules should not be started from default.pa so that one daemon
+# can be shared by multiple sessions.
+
+### Load X11 bell module
+#load-module module-x11-bell sample=bell-windowing-system
+
+### Register ourselves in the X11 session manager
+#load-module module-x11-xsmp
+
+### Publish connection data in the X11 root window
+#.ifexists module-x11-publish.so
+#.nofail
+#load-module module-x11-publish
+#.fail
+#.endif
+
+### Make some devices default
+#set-default-sink output
+#set-default-source input
diff --git a/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend b/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend
new file mode 100644
index 0000000..1774224
--- /dev/null
+++ b/recipes-multimedia/pulseaudio/pulseaudio_5.0.bbappend
@@ -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
+}
+