#!/bin/bash . /etc/systemconfig . /etc/profile echo $@ >/tmp/audio.call BASE="" MYTH_RUN_STATUS="1" . /etc/profile TESTFILE="/usr/share/sounds/alsa/Front_Center.wav" OSSinstalled="false" BLACKLIST=/etc/modprobe.d/soundconfig_blacklist.conf . /usr/MythVantage/bin/install_functions.sh home_check echo "---------------------------------------" function testaudio () { ossplay -d$AUDIODEVICE $TESTFILE } function load_alsa() { echo "Loading ALSA ..." remove_service.sh alsa-utils 1> /dev/null 2> /dev/null KER=`uname -r` cd /lib/modules/$KER/ echo " uncompressing ALSA modules" tar -xf sound-preoss.tar.bz2 #echo " installing alsa-lib" #pacman -S --force --noconfirm alsa-lib echo " uninstalling oss" pacman -R --noconfirm oss echo "triggering udev module load" depmod -a cd - > /dev/null #udevadm trigger udevadm settle udevadm trigger add_service.sh alsa-utils } function unload_alsa () { echo "unloading ALSA ..." #kill $(lsof -t /dev/dsp* /dev/audio* /dev/mixer* /dev/snd/*) && modprobe -r $(lsmod |grep ^snd |awk '{print $1}') sv stop alsa-utils remove_service.sh alsa-utils rm -rf /dev/adsp* rm -rf /dev/snd/* rm -rf /dev/audio modprobe -r $(lsmod |grep ^snd |awk '{print $1}') } function unload_oss { echo "unloading OSS ..." sv stop oss soundoff rm -rf /dev/dsp* rm -rf /dev/oss* rm -rf /dev/sndstat remove_service.sh oss rm -f $BLACKLIST } function installOSS { echo "installing OSS ..." pacman -Q oss 2>/dev/null if [ ! $? = 0 ] then pacman --noconfirm -S --force oss fi soundon add_service.sh oss echo "blacklist soundcore" > $BLACKLIST echo "install soundcore /bin/false" >> $BLACKLIST } function SYNCXINE { echo "modify xine config file" if [ -f $MYTHHOME/.xine/config ] then cp -f $MYTHHOME/.xine/config $TEMPLATES/xine.config else cp $TEMPLATES/xine.config.template $TEMPLATES/xine.config fi if [ x$Audiotype = xOSS ] then DEVICENUMBER=`echo $SoundDevice|awk -F/ ' { print $3 } '|tr -d dsp ` sed -e "s/^.*audio.driver.*$/audio.driver:oss/" \ -e "s/^.audio.device.oss_device_name.*$/audio.device.oss_device_name:\/dev\/dsp/" \ -e "s/^.audio.devic.oss_device_number.*$/audio.device.oss_device_number:$DEVICENUMER/" \ -e "s/^.*audio.output.speaker_arrangement:.*$/Audio.output.speaker_arrangement:PassThrough/" \ $TEMPLATES/xine.config > $MYTHHOME/.xine/config else cp $TEMPLATES/xine.config $MYTHHOME/.xine/config fi } function SYNCMPLAYER { echo "modify mplayer config file" if [ -f /etc/mplayer/mplayer.conf ] then backdate=`date +%b-%d-%Y-%H:%M:%S` mv /etc/mplayer/mplayer.conf /etc/mplayer/mplayer.conf-$backdate fi if [ x$AUDIOTYPE = xALSA -o x$AUDIOTYPE = xalsa ] then MPLAYERDEVICE=`echo $AUDIODEVICE | tr : = | tr , .` echo "ao=alsa:device=$MPLAYERDEVICE" > /etc/mplayer/mplayer.conf echo "ac=hwac3,hwdts," >> /etc/mplayer/mplayer.conf else echo "ao=oss:$AUDIODEVICE" > /etc/mplayer/mplayer.conf fi } function checkOSSinstalled () { echo "Checking if OSS is installed" ossinfo |grep Version |grep -q OSS >/dev/null resultcode=$? if [ $resultcode = 0 ] then OSSinstalled='true' echo " OSS is loaded" else OSSinstalled='false' echo " OSS is NOT loaded" fi } function write_asound { echo "writing asound.conf file" if [ -f /etc/asound.conf ] then backdate=`date +%b-%d-%Y-%H:%M:%S` mv /etc/asound.conf /etc/asound.conf-$backdate fi echo 'pcm.!default "'"$AUDIODEVICE"'"' > /etc/asound.conf } function sound_config_system { if [ x$AUDIOTYPE = xALSA -o x$AUDIOTYPE = xalsa ] then write_asound fi SYNCMPLAYER # if [ x$syncXine = x1 ] # then # SYNCXINE # fi } function loadsound (){ checkOSSinstalled if [ x$AUDIOTYPE = xOSS -o x$AUDIOTYPE = xoss ] then while [ $OSSinstalled = "false" ] do unload_alsa if [ -e /tmp/.alsatest ] then rm /tmp/.alsatest fi installOSS checkOSSinstalled done else touch /tmp/.alsatest unload_oss load_alsa rm /tmp/.alsatest fi } #####################MAIN PROGRAM########################## declare -r OPTSTRING="i:t:d:" if [ $# -eq 0 ] then echo "Valid options are:" echo " -i (oss|alsa) oss or alsa subsystem " echo " -t (test|real|LOAD) " echo " -d device" exit 1 fi while getopts "$OPTSTRING" SWITCH do case $SWITCH in \?) echo "unknown option" exit 11 ;; i) #echo "$SWITCH" "$OPTARG" AUDIOTYPE="$OPTARG" ;; d) #echo "$SWITCH" "$OPTARG" AUDIODEVICE=$OPTARG ;; t) #echo "$SWITCH" "$OPTARG" SOUNDOPTYPE="$OPTARG" if [ x"$OPTARG" = xtest ] then TEST=true else TEST=false fi ;; esac done case $SOUNDOPTYPE in REAL|real ) #loadsound sound_config_system ;; test|TEST) echo $@ > /tmp/audio.test #loadsound if [ x$AUDIOTYPE = xOSS -o x$AUDIOTYPE = xoss ] then echo "testing OSS $AUDIODEVICE " ossplay -d$AUDIODEVICE $TESTFILE else echo "testing ALSA $AUDIODEVICE " echo aplay --device=$AUDIODEVICE $TESTFILE aplay --device=$AUDIODEVICE $TESTFILE fi ;; LOAD|load) loadsound ;; esac exit 0