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 esac
# alsa # alsa
if [ ! -z $ALSA_DEVICE ]; then if [ "$AUDIO_DEVICE_TYPE" == "ALSA" ]; then
chrome_OPTS="$chrome_OPTS --alsa-output-device=$ALSA_DEVICE" # 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 fi
# HACK!!! to get sound at Chrome stop pulseaudio
systemctl stop pulseaudio
# start chrome # start chrome
LD_PRELOAD=/usr/lib/libGL.so $ADDON_DIR/chrome-bin/chrome \ LD_PRELOAD=/usr/lib/libGL.so $ADDON_DIR/chrome-bin/chrome \
$chrome_OPTS \ $chrome_OPTS \
@ -100,6 +101,8 @@ then
chrome_OPTS="$chrome_OPTS --force-dark-mode" chrome_OPTS="$chrome_OPTS --force-dark-mode"
fi fi
# HACK!!! to get sound at Kodi start pulseaudio
sleep 5 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['RASTER_MODE'] = __addon__.getSetting('RASTER_MODE')
new_env['DARK_MODE'] = __addon__.getSetting('DARK_MODE') new_env['DARK_MODE'] = __addon__.getSetting('DARK_MODE')
new_env['ALSA_DEVICE'] = ''
if __addon__.getSetting('USE_CUST_AUDIODEVICE') == 'true': if __addon__.getSetting('USE_CUST_AUDIODEVICE') == 'true':
alsa_device = __addon__.getSetting('CUST_AUDIODEVICE_STR') audio_device = __addon__.getSetting('CUST_AUDIODEVICE_STR')
else: else:
alsa_device = getAudioDevice() audio_device = getAudioDevice()
if not alsa_device == None and not alsa_device == '':
new_env['ALSA_DEVICE'] = alsa_device 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 + ' ' + \ chrome_params = args + ' ' + \
__addon__.getSetting('HOMEPAGE') __addon__.getSetting('HOMEPAGE')
@ -57,7 +61,7 @@ def isRuning(pname):
return False return False
def getAudioDevice(): def getAudioDevice():
dev = json.loads(xbmc.executeJSONRPC(json.dumps({ return json.loads(xbmc.executeJSONRPC(json.dumps({
"jsonrpc": "2.0", "jsonrpc": "2.0",
"method": "Settings.GetSettingValue", "method": "Settings.GetSettingValue",
"params": { "params": {
@ -65,15 +69,20 @@ def getAudioDevice():
}, },
"id": 1, "id": 1,
})))['result']['value'] })))['result']['value']
def getAudioDeviceType(dev):
if dev.startswith("ALSA:"): if dev.startswith("ALSA:"):
dev = dev.split("ALSA:")[1] return "ALSA"
if dev == "@": if dev.startswith("PULSE:"):
return None return "PULSE"
if dev.startswith("@:"): return None
dev = dev.split("@:")[1]
else: def getAlsaAudioDevice(dev):
# not ALSA dev = dev.split("ALSA:")[1]
if dev == "@":
return None return None
if dev.startswith("@:"):
dev = dev.split("@:")[1]
if dev.startswith("CARD="): if dev.startswith("CARD="):
dev = "plughw:" + dev dev = "plughw:" + dev
return dev return dev