def ProcessAudio(self): def _bool(val): if val is None: return False return bool(int(val)) def _read_file(filename): firstline=[] try: with open(filename,'r') as f: line = f.readline() firstline = line.split() except: pass return firstline def _oss_alsa(): snd_type = "unknown" version = "unknown" alsasnd = "/proc/asound/version" osssnd = "/dev/sndstat" if os.path.exists(alsasnd): snd_type = "ALSA" version = _read_file(alsasnd)[-1].rstrip(".") elif os.path.exists(osssnd): version = _read_file(osssnd)[1] snd_type = "OSS" return snd_type , version def _process_search(processname): foundit = False for line in os.popen("ps xa"): fields = line.split() pid = fields[0] process = fields[4].split("/") if processname in process : foundit = True break return foundit def _jack(): if _process_search("jackd") or _process_search("jackdbus"): foundit = 1 else: foundit = 0 return foundit def _pulse(): if _process_search("pulseaudio"): foundit = 1 else: foundit = 0 return foundit data = OrdDict() data.device = _SETTINGS.AudioOutputDevice data.passthrudevice = _SETTINGS.PassThruOutputDevice data.passthruoverride = _bool(_SETTINGS.PassThruDeviceOverride) data.stereopcm = _bool(_SETTINGS.StereoPCM) data.sr_override = _bool(_SETTINGS.Audio48kOverride) data.maxchannels = _SETTINGS.MaxChannels data.defaultupmix = _bool(_SETTINGS.AudioDefaultUpmix) data.upmixtype = _SETTINGS.AudioUpmixType p = [] for k,v in (('AC3PassThru', 'ac3'), ('DTSPassThru', 'dts'), ('HBRPassthru', 'hbr'), ('EAC3PassThru', 'eac3'), ('TrueHDPassThru', 'truehd'), ('DTSHDPassThru', 'dtshd')): if _bool(_SETTINGS[k]): p.append(v) data.passthru = p data.volcontrol = _bool(_SETTINGS.MythControlsVolume) data.mixerdevice = _SETTINGS.MixerDevice data.mixercontrol = _SETTINGS.MixerControl data.jack = _jack() data.pulse = _pulse() data.audio_sys, data.audio_sys_version = _oss_alsa() return {'audio': data}