diff options
author | Andrey Gusakov <andrey.gusakov@cogentembedded.com> | 2017-07-25 19:09:39 +0300 |
---|---|---|
committer | Andrey Gusakov <andrey.gusakov@cogentembedded.com> | 2017-07-25 19:11:23 +0300 |
commit | 0590448ffb8ee56ec12d96eee6b5e0f185df958c (patch) | |
tree | 1f49fb7452cd441bc5702a06d0e9fde3b4b73e05 | |
parent | 181c02f95f7cbb4d27d2bd9208afc7b5e523a2fe (diff) |
Kingfisher: add pulseaudio
Set kingfisher in DISTRO_FEATURES to enable multichannel audio
10 files changed, 560 insertions, 0 deletions
diff --git a/meta-rcar-gen3-adas/conf/layer.conf b/meta-rcar-gen3-adas/conf/layer.conf index dbee049..3194c25 100644 --- a/meta-rcar-gen3-adas/conf/layer.conf +++ b/meta-rcar-gen3-adas/conf/layer.conf @@ -39,6 +39,11 @@ IMAGE_INSTALL_append_rcar-gen3 = " \ rsync \ mm-init \ iio-utils \ + pulseaudio-server \ + pulseaudio-misc \ + pulseaudio-module-cli \ + pulseaudio-module-remap-sink \ + pulseaudio-module-remap-source \ " # Radio packages diff --git a/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/client.conf b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/client.conf new file mode 100644 index 0000000..a17325b --- /dev/null +++ b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/client.conf @@ -0,0 +1,36 @@ +# 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, see <http://www.gnu.org/licenses/>. + +## Configuration file for PulseAudio clients. See pulse-client.conf(5) for +## more information. Default values are commented out. Use either ; or # for +## commenting. + +; default-sink = +; default-source = +; default-server = +; default-dbus-server = + +; autospawn = yes +; allow-autospawn-for-root = no +; daemon-binary = /usr/bin/pulseaudio +; extra-arguments = --log-target=syslog + +; cookie-file = + +; enable-shm = yes +; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB + +; auto-connect-localhost = no +; auto-connect-display = no diff --git a/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/daemon.conf b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/daemon.conf new file mode 100644 index 0000000..5d42a9e --- /dev/null +++ b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/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 = 20 +; scache-idle-time = 20 + +; dl-search-path = (depends on architecture) + +; load-default-script-file = yes +; default-script-file = /etc/pulse/default.pa + +log-target = null +; log-level = notice +; log-meta = no +; log-time = no +; log-backtrace = 0 + +; resample-method = speex-float-1 +; enable-remixing = yes +; enable-lfe-remixing = no + +; flat-volumes = yes + +; 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 = 48000 +; 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/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/default.pa b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/default.pa new file mode 100644 index 0000000..8f1570f --- /dev/null +++ b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/default.pa @@ -0,0 +1,149 @@ +#!/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, see <http://www.gnu.org/licenses/>. + +# 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/freedesktop/stereo/bell.oga +#load-sample-lazy pulse-hotplug /usr/share/sounds/freedesktop/stereo/device-added.oga +#load-sample-lazy pulse-coldplug /usr/share/sounds/freedesktop/stereo/device-added.oga +#load-sample-lazy pulse-access /usr/share/sounds/freedesktop/stereo/message.oga + +.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:0,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 +.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 + + +### Make some devices default +#set-default-sink output +#set-default-source input diff --git a/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/hifi b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/hifi new file mode 100644 index 0000000..b249767 --- /dev/null +++ b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/hifi @@ -0,0 +1,50 @@ +# Use case Configuration for Renesas H3 board + +SectionVerb { + EnableSequence [ + exec "echo Setting defaults for ak4613" + cdev "hw:0" + cset "name='DVC Out Playback Volume' 30%" + cset "name='DVC In Capture Volume' 10%" + ] + DisableSequence [ + ] +} + + +SectionDevice."Headphone".0 { + Value { + JackName "Headphone Jack" + PlaybackChannels 2 + PlaybackPCM "hw:0" + } + + EnableSequence [ + cdev "hw:0" + cset "name='DVC Out Playback Volume' 30%" + ] + DisableSequence [ + cdev "hw:0" + cset "name='DVC Out Playback Volume' 0%" + ] +} + +SectionDevice."Mic".0 { + Value { + JackName "Mic Jack" + CaptureChannels 2 + CapturePCM "hw:0" + } + + EnableSequence [ + cdev "hw:0" + cset "name='DVC In Capture Volume' 10%" + ] + + DisableSequence [ + cdev "hw:0" + cset "name='DVC In Capture Volume' 0%" + ] +} + + diff --git a/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/pulseaudio.init b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/pulseaudio.init new file mode 100755 index 0000000..4f0a03f --- /dev/null +++ b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/pulseaudio.init @@ -0,0 +1,48 @@ +#!/bin/sh +# +### BEGIN INIT INFO +# Provides: pulseaudio-server +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO + +killproc() { + pid=`/bin/pidof $1` + [ "$pid" != "" ] && kill $pid +} + +read CMDLINE < /proc/cmdline +for x in $CMDLINE; do + case $x in + pulseaudio=false) + echo "pulseaudio disabled" + exit 0; + ;; + esac +done + +case "$1" in + start) + echo "Starting pulseaudio" + start-stop-daemon -S -x pulseaudio -- -D --system --disallow-exit + ;; + + stop) + echo "Stopping pulseaudio" + start-stop-daemon -K -x pulseaudio + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + *) + echo "usage: $0 { start | stop | restart }" + ;; +esac + +exit 0 diff --git a/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/rsnddai0ak4613h.conf b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/rsnddai0ak4613h.conf new file mode 100644 index 0000000..1c084de --- /dev/null +++ b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/rsnddai0ak4613h.conf @@ -0,0 +1,9 @@ +# Use case Configuration for Renesas H3 board + +Comment "Renesas H3 board ak4613 audio card" + +SectionUseCase."HiFi" { + File "hifi" + Comment "Default" +} + diff --git a/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/system-mch.pa b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/system-mch.pa new file mode 100644 index 0000000..52648d2 --- /dev/null +++ b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/system-mch.pa @@ -0,0 +1,77 @@ +#!/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 in system +# mode. + +## use static load order to prevent pulseaudio to auto probe MOST devices +## MOST drivers does not like how pulse probing it and crashes system +## PCM3168A card +load-module module-alsa-sink sink_name=pcm3168a_output device=hw:pcm3168a format=s24-32le channels=8 rate=48000 channel_map=surround-71 +load-module module-alsa-source source_name=pcm3168a_input device=hw:pcm3168a format=s24-32le channels=8 rate=48000 channel_map=surround-71 +## Onboard sound +## use ALSA card plugin to run UCM and initial controls setup +load-module module-alsa-card device_id=1 rate=48000 use_ucm=1 tsched=yes +## Radio input +load-module module-alsa-source source_name=radio device=hw:radio channels=2 rate=48000 + +### Load several protocols +.ifexists module-esound-protocol-unix.so +load-module module-esound-protocol-unix +.endif +load-module module-native-protocol-unix auth-anonymous=1 + +### Automatically restore the volume of streams and devices +load-module module-stream-restore +load-module module-device-restore + +### 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 + +### Automatically suspend sinks/sources that become idle for too long +# load-module module-suspend-on-idle + +### Enable positioned event sounds +# load-module module-position-event-sounds + +### Split multichannel card output to Bluetooth PCM and 5.1 +# load-module module-remap-sink sink_name=Surround51 remix=no master=pcm3168a_output channels=6 master_channel_map=front-left,front-right,rear-left,rear-right,front-center,lfe channel_map=front-left,front-right,rear-left,rear-right,front-center,lfe +# load-module module-remap-sink sink_name=BluetoothPCM_output remix=no master=pcm3168a_output channels=2 master_channel_map=side-left,side-right channel_map=front-left,front-right + +### Split multichannel card input to 3 x microphone/line-ins and Bluetooth PCM input +# load-module module-remap-source source_name=mic0 remix=no master=pcm3168a_input channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right +# load-module module-remap-source source_name=mic1 remix=no master=pcm3168a_input channels=2 master_channel_map=rear-left,rear-right channel_map=front-left,front-right +# load-module module-remap-source source_name=mic2 remix=no master=pcm3168a_input channels=2 master_channel_map=front-center,lfe channel_map=front-left,front-right +# load-module module-remap-source source_name=BluetoothPCM_inout remix=no master=pcm3168a_input channels=2 master_channel_map=side-left,side-right channel_map=front-left,front-right + +### Set default source and sink to multichannel soundcard +# set-default-sink Surround51 +# set-default-source mic0 + +set-default-sink pcm3168a_output +set-default-source pcm3168a_input
\ No newline at end of file diff --git a/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/system.pa b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/system.pa new file mode 100644 index 0000000..f88fc8e --- /dev/null +++ b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/files/system.pa @@ -0,0 +1,57 @@ +#!/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 in system +# mode. + +### Automatically load driver modules depending on the hardware available +.ifexists module-udev-detect.so +load-module module-udev-detect +.else +### Use the static hardware detection module (for systems that lack udev/hal support) +load-module module-detect +.endif + +### Load several protocols +.ifexists module-esound-protocol-unix.so +load-module module-esound-protocol-unix +.endif +load-module module-native-protocol-unix auth-anonymous=1 + +### Automatically restore the volume of streams and devices +load-module module-stream-restore +load-module module-device-restore + +### 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 + +### Automatically suspend sinks/sources that become idle for too long +# load-module module-suspend-on-idle + +### Enable positioned event sounds +# load-module module-position-event-sounds diff --git a/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/pulseaudio_8.0.bbappend b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/pulseaudio_8.0.bbappend new file mode 100644 index 0000000..51977db --- /dev/null +++ b/meta-rcar-gen3-adas/recipes-multimedia/pulseaudio/pulseaudio_8.0.bbappend @@ -0,0 +1,42 @@ +FILESEXTRAPATHS_append := "${THISDIR}/files:" + +PR="r2" + +SRC_URI_append_rcar-gen3 = " \ + file://pulseaudio.init \ + file://rsnddai0ak4613h.conf \ + file://hifi \ + file://system.pa \ + file://system-mch.pa \ + file://daemon.conf \ +" + +inherit update-rc.d + +INITSCRIPT_NAME = "pulseaudio" +INITSCRIPT_PARAMS = "defaults 30" + +PA_SYSTEM_PA = \ + '${@ "system-mch.pa" \ + if 'kingfisher' in '${DISTRO_FEATURES}' \ + else "system.pa"}' + +do_install_append_rcar-gen3() { + install -d ${D}/etc/init.d + install -d ${D}/etc/pulse + install -d ${D}/usr/share/alsa/ucm/rsnddai0ak4613h/ + + install -m 0755 ${WORKDIR}/pulseaudio.init ${D}/etc/init.d/pulseaudio + + install -m 0644 ${WORKDIR}/${PA_SYSTEM_PA} ${D}/etc/pulse/system.pa + install -m 0644 ${WORKDIR}/daemon.conf ${D}/etc/pulse/daemon.conf + + install -m 0644 ${WORKDIR}/rsnddai0ak4613h.conf ${D}${datadir}/alsa/ucm/rsnddai0ak4613h/rsnddai0ak4613h.conf + install -m 0644 ${WORKDIR}/hifi ${D}${datadir}/alsa/ucm/rsnddai0ak4613h/hifi + +} + +FILES_${PN} += " \ + ${datadir}/alsa/ucm \ +" + |