#!/bin/bash . /etc/systemconfig . /etc/profile echo $@ >/tmp/audio.call #set -x BASE="" . /etc/profile #TEMPLATES="/usr/share/templates" TESTFILE="$TEMPLATES/audio/space_battle_A.wav" #TESTFILE="/usr/share/sounds/alsa/Front_Center.wav" OSSinstalled="false" function testaudio () { ossplay -d$AUDIODEVICE $TESTFILE } function load_alsa() { remove_service.sh alsa-utils # cd /lib/modules/2.6.21-STB KER=`uname -r` cd /lib/modules/$KER/kernel/ tar -xvf /lib/modules/alsa-$KER.tar pacman -Sf --noconfirm alsa-lib depmod -a cd - udevadm trigger udevadm settle udevadm trigger add_service.sh alsa-utils sleep 4 sv start alsa-utils } function unload_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 { sv stop oss soundoff rm -rf /dev/dsp* rm -rf /dev/oss* rm -rf /dev/sndstat remove_service.sh oss } function installOSS { echo "installing oss" pacman -Q oss 2>/dev/null if [ ! $? = 0 ] then pacman --noconfirm -Sf oss fi add_service.sh oss sleep 4 sv start oss } function SYNCXINE { echo "modify xine config file" if [ -f /data/home/mythtv/.xine/config ] then cp -f /data/home/mythtv/.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 > /data/home/mythtv/.xine/config else cp $TEMPLATES/xine.config /data/home/mythtv/.xine/config fi } function SYNCMPLAYER { echo "modify mplayer not implmented yet" } function SYNCMYTHMUSIC { echo "sync mythmusic" $MV_ROOT/bin/restore_default_settings.sh -c MUSICMYTH } function SYNCMYTHFRONTEND { echo "sync mythfrontend" $MV_ROOT/bin/restore_default_settings.sh -c MUSICFRONT } function checkOSSinstalled () { ossinfo |grep Version |grep -q OSS >/dev/null resultcode=$? echo $resultcode if [ $resultcode = 0 ] then OSSinstalled='true' else OSSinstalled='false' fi } function sound_config_system { if [ x$syncXine = x1 ] then SYNCXINE fi if [ x$syncMplayer = x1 ] then SYNCMPLAYER fi if [ x$syncMythMusic = x1 ] then SYNCMYTHMUSIC fi if [ x$syncMythFrontend = x1 ] then SYNCMYTHFRONTEND fi } function loadsound (){ checkOSSinstalled if [ x$AUDIOTYPE = xOSS -o x$AUDIOTYPE = xoss ] #then # if [ $OSSinstalled = "false" ] then while [ $OSSinstalled = "false" ] do unload_alsa rm /tmp/.alsatest installOSS installOSS sleep 2 checkOSSinstalled done # fi else touch /tmp/.alsatest unload_oss load_alsa 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 "unkown 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 " aplay --device=$AUDIODEVICE $TESTFILE fi ;; LOAD|load) loadsound ;; esac exit 0