from enigma import eAVSwitch, getDesktop
from SystemInfo import SystemInfo
from os import path as os_path
+from os import access, W_OK
class AVSwitch:
def setInput(self, input):
SystemInfo["ScartSwitch"] = eAVSwitch.getInstance().haveScartSwitch()
try:
+ can_pcm_multichannel = access("/proc/stb/audio/multichannel_pcm", W_OK)
+ except:
+ can_pcm_multichannel = False
+
+ SystemInfo["supportPcmMultichannel"] = can_pcm_multichannel
+
+ if can_pcm_multichannel:
+ def setPCMMultichannel(configElement):
+ open("/proc/stb/audio/multichannel_pcm", "w").write(configElement.value and "enable" or "disable")
+ config.av.pcm_multichannel = ConfigYesNo(default = False)
+ config.av.pcm_multichannel.addNotifier(setPCMMultichannel)
+
+ try:
can_downmix = open("/proc/stb/audio/ac3_choices", "r").read()[:-1].find("downmix") != -1
except:
can_downmix = False
if can_downmix:
def setAC3Downmix(configElement):
open("/proc/stb/audio/ac3", "w").write(configElement.value and "downmix" or "passthrough")
+ if SystemInfo.get("supportPcmMultichannel", False) and (not configElement.value) :
+ SystemInfo["CanPcmMultichannel"] = True
+ else:
+ SystemInfo["CanPcmMultichannel"] = False
+
config.av.downmix_ac3 = ConfigYesNo(default = True)
config.av.downmix_ac3.addNotifier(setAC3Downmix)
class avSetupScreen(ConfigListScreen, Screen):
avSetupItems = [
- {"idx":1, "level":0, "text":"Video Output", "item":config.av.videoport},
- {"idx":2, "level":0, "text":"Mode", "item":config.av.videomode[config.av.videoport.value]},
- {"idx":3, "level":0, "text":"Refresh Rate", "item":config.av.videorate[config.av.videomode[config.av.videoport.value].value]},
- {"idx":4, "level":0, "text":"Aspect Ratio", "item":config.av.aspect},
- {"idx":5, "level":0, "text":"Display 4:3 content as", "item":config.av.policy_43},
- {"idx":6, "level":0, "text":"Display > 16:9 content as", "item":config.av.policy_169},
- {"idx":7, "level":0, "text":"Color Format", "item":config.av.colorformat},
- {"idx":8, "level":1, "text":"WSS on 4:3", "item":config.av.wss},
- {"idx":9, "level":1, "text":"Auto scart switching", "requires":"ScartSwitch", "item":config.av.vcrswitch},
- {"idx":0, "level":1, "text":"Dolby Digital default", "item":config.av.defaultac3},
- {"idx":0, "level":1, "text":"Dolby Digital / DTS downmix", "requires":"CanDownmixAC3", "item":config.av.downmix_ac3},
- {"idx":0, "level":1, "text":"AAC downmix", "requires":"CanDownmixAAC", "item":config.av.downmix_aac},
- {"idx":0, "level":1, "text":"General Dolby Digital delay(ms)", "item":config.av.generalAC3delay},
- {"idx":0, "level":1, "text":"General PCM delay(ms)", "item":config.av.generalPCMdelay},
- {"idx":0, "level":0, "text":"OSD visibility", "requires":"CanChangeOsdAlpha", "item":config.av.osd_alpha},
- {"idx":0, "level":0, "text":"Scaler sharpness", "item":config.av.scaler_sharpness},
+ {"idx":1, "level":0, "text":"Video Output", "item":"config.av.videoport"},
+ {"idx":2, "level":0, "text":"Mode", "item":"config.av.videomode[config.av.videoport.value]"},
+ {"idx":3, "level":0, "text":"Refresh Rate", "item":"config.av.videorate[config.av.videomode[config.av.videoport.value].value]"},
+ {"idx":4, "level":0, "text":"Aspect Ratio", "item":"config.av.aspect"},
+ {"idx":5, "level":0, "text":"Display 4:3 content as", "item":"config.av.policy_43"},
+ {"idx":6, "level":0, "text":"Display > 16:9 content as", "item":"config.av.policy_169"},
+ {"idx":7, "level":0, "text":"Color Format", "item":"config.av.colorformat"},
+ {"idx":8, "level":1, "text":"WSS on 4:3", "item":"config.av.wss"},
+ {"idx":9, "level":1, "text":"Auto scart switching", "requires":"ScartSwitch", "item":"config.av.vcrswitch"},
+ {"idx":0, "level":1, "text":"Dolby Digital default", "item":"config.av.defaultac3"},
+ {"idx":0, "level":1, "text":"Dolby Digital / DTS downmix", "requires":"CanDownmixAC3", "item":"config.av.downmix_ac3"},
+ {"idx":0, "level":1, "text":"PCM Multichannel", "requires":"CanPcmMultichannel", "item":"config.av.pcm_multichannel"},
+ {"idx":0, "level":1, "text":"AAC downmix", "requires":"CanDownmixAAC", "item":"config.av.downmix_aac"},
+ {"idx":0, "level":1, "text":"General Dolby Digital delay(ms)", "item":"config.av.generalAC3delay"},
+ {"idx":0, "level":1, "text":"General PCM delay(ms)", "item":"config.av.generalPCMdelay"},
+ {"idx":0, "level":0, "text":"OSD visibility", "requires":"CanChangeOsdAlpha", "item":"config.av.osd_alpha"},
+ {"idx":0, "level":0, "text":"Scaler sharpness", "item":"config.av.scaler_sharpness"},
]
def __init__(self, session):
item_text = _(x.get("text", "??").encode("UTF-8"))
- item = x.get("item", None)
- if item is None:
+ item_str = x.get("item", None)
+ if item_str is None:
continue
+ item = eval(item_str)
idx = x.get("idx", 0)
if idx > 0:
self.refill(list)
self["config"].setList(list)
+ def removeEntryNotifier(self):
+ if self.needEntryChange:
+ for item in self.needEntryChange:
+ if self.entryChanged in item.notifiers:
+ item.notifiers.remove(self.entryChanged)
+
+ def entryChanged(self, configElement):
+ list = []
+ self.refill(list)
+ self["config"].setList(list)
+
def refill(self, list):
xmldata = setupdom.getroot()
for x in xmldata.findall("setup"):
self.onChangedEntry = [ ]
+ self.needEntryChange = [ ]
+
self.setup = setup
list = []
self.refill(list)
return SetupSummary
def addItems(self, list, parentNode):
+ self.needEntryChange = [ ]
for x in parentNode:
if x.tag == 'item':
item_level = int(x.get("level", 0))
if not isinstance(item, ConfigNothing):
list.append( (item_text, item) )
+ needentrychange = x.get("entrychange")
+ if needentrychange == "yes":
+ self.needEntryChange.append(item)
+ if not self.entryChanged in item.notifiers:
+ item.notifiers.append(self.entryChanged)
+ if not self.removeEntryNotifier in self.onClose:
+ self.onClose.append(self.removeEntryNotifier)
+
def getSetupTitle(id):
xmldata = setupdom.getroot()
for x in xmldata.findall("setup"):