Merge pull request #5683 from guillaumelecerf/feature/chrome-use-pulseaudio

chrome: use pulseaudio when available
This commit is contained in:
CvH 2021-10-28 19:48:56 +02:00 committed by GitHub
commit 46f810894d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 20 deletions

View File

@ -73,13 +73,14 @@ case $RASTER_MODE in
esac
# alsa
if [ ! -z $ALSA_DEVICE ]; then
chrome_OPTS="$chrome_OPTS --alsa-output-device=$ALSA_DEVICE"
if [ "$AUDIO_DEVICE_TYPE" == "ALSA" ]; then
# stop pulseaudio when using an Alsa device
systemctl stop pulseaudio
if [ ! -z $ALSA_DEVICE ]; then
chrome_OPTS="$chrome_OPTS --alsa-output-device=$ALSA_DEVICE"
fi
fi
# HACK!!! to get sound at Chrome stop pulseaudio
systemctl stop pulseaudio
# start chrome
LD_PRELOAD=/usr/lib/libGL.so $ADDON_DIR/chrome-bin/chrome \
$chrome_OPTS \
@ -100,6 +101,8 @@ then
chrome_OPTS="$chrome_OPTS --force-dark-mode"
fi
# HACK!!! to get sound at Kodi start pulseaudio
sleep 5
systemctl start pulseaudio
if [ "$AUDIO_DEVICE_TYPE" == "ALSA" ]; then
# restart pulseaudio when using an Alsa device
systemctl start pulseaudio
fi

View File

@ -35,13 +35,17 @@ def startchrome(args):
new_env['RASTER_MODE'] = __addon__.getSetting('RASTER_MODE')
new_env['DARK_MODE'] = __addon__.getSetting('DARK_MODE')
new_env['ALSA_DEVICE'] = ''
if __addon__.getSetting('USE_CUST_AUDIODEVICE') == 'true':
alsa_device = __addon__.getSetting('CUST_AUDIODEVICE_STR')
audio_device = __addon__.getSetting('CUST_AUDIODEVICE_STR')
else:
alsa_device = getAudioDevice()
if not alsa_device == None and not alsa_device == '':
new_env['ALSA_DEVICE'] = alsa_device
audio_device = getAudioDevice()
new_env['AUDIO_DEVICE_TYPE'] = getAudioDeviceType(audio_device)
if new_env['AUDIO_DEVICE_TYPE'] == "ALSA":
new_env['ALSA_DEVICE'] = ''
alsa_device = getAlsaAudioDevice(audio_device)
if not alsa_device == None and not alsa_device == '':
new_env['ALSA_DEVICE'] = alsa_device
chrome_params = args + ' ' + \
__addon__.getSetting('HOMEPAGE')
@ -57,7 +61,7 @@ def isRuning(pname):
return False
def getAudioDevice():
dev = json.loads(xbmc.executeJSONRPC(json.dumps({
return json.loads(xbmc.executeJSONRPC(json.dumps({
"jsonrpc": "2.0",
"method": "Settings.GetSettingValue",
"params": {
@ -65,15 +69,20 @@ def getAudioDevice():
},
"id": 1,
})))['result']['value']
def getAudioDeviceType(dev):
if dev.startswith("ALSA:"):
dev = dev.split("ALSA:")[1]
if dev == "@":
return None
if dev.startswith("@:"):
dev = dev.split("@:")[1]
else:
# not ALSA
return "ALSA"
if dev.startswith("PULSE:"):
return "PULSE"
return None
def getAlsaAudioDevice(dev):
dev = dev.split("ALSA:")[1]
if dev == "@":
return None
if dev.startswith("@:"):
dev = dev.split("@:")[1]
if dev.startswith("CARD="):
dev = "plughw:" + dev
return dev