import os
import NavigationInstance
-class AC3delay():
-
+class AC3delay:
def __init__(self, session):
self.iService = None
self.iServiceReference = None
self.lamedbDelay = {}
self.getAudioInformation()
-
+
# Current value for movie start behaviour
self.movieStart = config.usage.on_movie_start.getValue()
-
-
+
def initAudio(self):
self.iService = NavigationInstance.instance.getCurrentService()
self.iServiceReference = NavigationInstance.instance.getCurrentlyPlayingServiceReference()
self.iAudioDelay = self.iService and self.iService.audioDelay()
self.iSeek = self.iService and self.iService.seek()
-
+
def deleteAudio(self):
self.iService = None
self.iAudioDelay = None
self.iSeek = None
-
+
def setChannelAudio(self, sAudio):
self.channelAudio = sAudio
self.timer.start(400, False)
else:
self.deleteAudio()
-
+
def seekAfterWait(self):
self.timer.stop()
self.initAudio()
if self.iSeek is not None:
self.iSeek.seekTo(self.lCurPosition)
self.deleteAudio()
-
+
def cueGetCurrentPosition(self):
if self.iSeek is None:
return None
if bInitialized == True:
self.deleteAudio()
return iDelay
-
+
def getFileDelay(self, sAudio):
sFileName = lFileDelay[sAudio]
if os.path.exists(sFileName) == True:
else:
self.iAudioDelay.setPCMDelay(iDelay)
self.activateDelay()
-
+
def setFileDelay(self, sAudio, iDelay):
hDelay = dec2hex(iDelay*90)
sFileName = lFileDelay[sAudio]
delayfile.write("%s\0" % hDelay)
delayfile.close()
self.activateDelay()
-
+
def getAudioInformation(self):
bInitialized = False
if self.iService == None:
del oAudioTracks
if bInitialized == True:
self.deleteAudio()
+
from ServiceReference import ServiceReference
from __init__ import _
import os
-
+
class AC3LipSync(Screen,InfoBarAudioSelection):
skin = """
<screen position="60,420" size="600,100" title="AC3 Lip Sync" zPosition="1" >
<widget name="ServiceInfoText" zPosition="4" position="5,52" size="180,21" font="Regular;21" foregroundColor="#ffffff" />
<widget name="ServiceInfo" zPosition="4" position="190,52" size="180,21" font="Regular;21" foregroundColor="#cccccc" />
<widget name="AC3DelayInfoText" zPosition="4" position="380,52" size="40,21" font="Regular;21" foregroundColor="#ffffff" />
- <widget name="AC3DelayInfo" zPosition="4" position="430,52" size="50,21" font="Regular;21" foregroundColor="#cccccc" />
+ <widget name="AC3DelayInfo" zPosition="4" position="430,52" size="50,21" font="Regular;21" foregroundColor="#cccccc" />
<widget name="PCMDelayInfoText" zPosition="4" position="490,52" size="40,21" font="Regular;21" foregroundColor="#ffffff" />
- <widget name="PCMDelayInfo" zPosition="4" position="540,52" size="50,21" font="Regular;21" foregroundColor="#cccccc" />
+ <widget name="PCMDelayInfo" zPosition="4" position="540,52" size="50,21" font="Regular;21" foregroundColor="#cccccc" />
<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/key-red.png" position="5,78" zPosition="5" size="20,20" transparent="1" alphatest="on" />
<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/key-green.png" position="150,78" zPosition="5" size="20,20" transparent="1" alphatest="on" />
<ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/key-yellow.png" position="295,78" zPosition="5" size="20,20" transparent="1" alphatest="on" />
font="Regular;16" valign="center" halign="left" transparent="1"
shadowColor="#000000" shadowOffset="-1,-1" />
</screen>"""
-
+
def __init__(self, session, args = None):
Screen.__init__(self, session)
self.onShow.append(self.__onShow)
- self.session = session
-
#Initialisiere Infobargenerics
InfoBarAudioSelection.__init__(self)
# AC3delay instance
self.AC3delay = AC3delay(self.session)
-
+
#Which Values do the number keys use (not implemented yet)
self.whichKeys = "Computed" # Computed = computed Values of keys, User = User set values of keys
self.whichKeyText = {}
self.whichKeyText["Computed"] = _("Use user delays")
self.whichKeyText["User"] = _("Use calc. delays")
-
+
#Screen elements
-
+
#Slider
-
+
for sAudio in AC3PCM:
self[sAudio+"Slider"] = ProgressBar()
self[sAudio+"SliderText"] = Label(_("%i ms")%0)
#Service Information
self["ServiceInfoText"] = Label(_("Channel audio:"))
- self["ServiceInfo"] = Label()
+ self["ServiceInfo"] = Label()
self.setChannelInfoText()
-
+
# Buttons
if self.AC3delay.bIsRecording == True:
self["key_red"] = Label(_(" "))
else:
- self["key_red"] = Label(_("Save"))
+ self["key_red"] = Label(_("Save"))
self["key_green"] = Label(_("Switch audio"))
self["key_yellow"] = Label(_("Set user delay"))
self["key_blue"] = Label(self.whichKeyText[self.whichKeys])
self.savedValue = {}
self.savedValue[AC3] = 0
self.savedValue[PCM] = 0
-
+
# Current Values
self.currentValue = {}
self.currentValue[AC3] = 0
self.currentValue[PCM] = 0
-
+
# Actions
- self["actions"] = NumberActionMap(["WizardActions", "NumberActions", "ColorActions"] ,
+ self["actions"] = NumberActionMap(["WizardActions", "NumberActions", "ColorActions"],
{
"ok": self.keyOk,
"back": self.keyCancel,
else:
self["AC3DelayText"].setForegroundColorNum(0)
self["PCMDelayText"].setForegroundColorNum(1)
-
+
def keyUp(self):
self.AC3delay.whichAudio = AC3
self["AC3DelayText"].setForegroundColorNum(1)
self.AC3delay.whichAudio = PCM
self["AC3DelayText"].setForegroundColorNum(0)
self["PCMDelayText"].setForegroundColorNum(1)
-
+
def keyLeft(self):
sAudio = self.AC3delay.whichAudio
iSliderValue = int(self[sAudio+"Slider"].getValue())
iSliderValue = 0
self.setSliderInfo(iSliderValue)
self.AC3delay.setFileDelay(sAudio, self.currentValue[sAudio])
-
+
def keyRight(self):
sAudio = self.AC3delay.whichAudio
iSliderValue = int(self[sAudio+"Slider"].getValue())
def keyAudioSelection(self):
self.audioSelection()
-
+
def keyOk(self):
self.close()
-
+
def keyCancel(self):
for sAudio in lFileDelay.keys():
iSliderValue = self.currentValue[sAudio]
self.whichAudio = sAudio
self.AC3delay.setFileDelay(sAudio, self.savedValue[sAudio])
self.close()
-
+
def keySaveToLamedb(self):
if self.AC3delay.bIsRecording == False:
- keyList = []
- keyList.append((_("Save %s delay")%AC3,"1"))
- keyList.append((_("Save %s delay")%PCM,"2"))
- keyList.append((_("Save both delays"),"3"))
-
+ keyList = [
+ (_("Save %s delay")%AC3,"1"),
+ (_("Save %s delay")%PCM,"2"),
+ (_("Save both delays"),"3")
+ ]
+
self.session.openWithCallback(self.DoSaveLamedb,ChoiceBox,_("Which delays do you want to set"),keyList)
-
+
def DoSaveLamedb(self, answer):
sNewLine = ""
sResponse = ""
sActiveAudio = str(self.AC3delay.selectedAudioInfo[0])
sBitstreamDelay = _("%i ms") %self.AC3delay.lamedbDelay[AC3]
sPCMDelay = ("%i ms") %self.AC3delay.lamedbDelay[PCM]
-
+
self["ServiceInfo"].setText(sActiveAudio)
self["AC3DelayInfo"].setText(sBitstreamDelay)
self["PCMDelayInfo"].setText(sPCMDelay)
-
+
def keySwitchKeyValues(self):
if self.whichKeys == "Computed":
self.whichKeys = "User"
else:
self.whichKeys = "Computed"
self["key_blue"].setText(self.whichKeyText[self.whichKeys])
-
+
def keySaveDelayToKey(self):
sAudio = self.AC3delay.whichAudio
iDelay = self[sAudio+"Slider"].getValue()+self.lowerBound
AC3SetCustomValue(self.session,iDelay)
-
+
def audioSelected(self, audio):
InfoBarAudioSelection.audioSelected(self, audio)
if audio is not None:
self.AC3delay.getAudioInformation()
self.setChannelInfoText()
-
-class AC3SetCustomValue(Screen):
+class AC3SetCustomValue:
def __init__(self, session, iDelay):
self.session = session
self.iDelay = iDelay
def DoSetCustomValue(self,answer):
if answer is None:
- self.session.open(MessageBox,_("Setting key canceled"), MessageBox.TYPE_INFO)
+ self.session.open(MessageBox,_("Setting key canceled"), MessageBox.TYPE_INFO)
else:
config.plugins.AC3LipSync.keySteps[int(answer[1])].stepSize.setValue(self.iDelay)
config.plugins.AC3LipSync.keySteps.save()
- self.session.open(MessageBox,_("%(Key)s successfully set to %(delay)i ms") %dict(Key=answer[0],delay=self.iDelay), MessageBox.TYPE_INFO, 5)
\ No newline at end of file
+ self.session.open(MessageBox,_("%(Key)s successfully set to %(delay)i ms") %dict(Key=answer[0],delay=self.iDelay), MessageBox.TYPE_INFO, 5)
+
def __init__(self, session, args = None):
Screen.__init__(self, session)
-
+
# nun erzeugen wir eine liste von elementen fuer die menu liste.
- self.list = [ ]
- self.list.append(getConfigListEntry(_("Minimum delay"), config.plugins.AC3LipSync.lowerBound))
- self.list.append(getConfigListEntry(_("Maximum delay"), config.plugins.AC3LipSync.upperBound))
- self.list.append(getConfigListEntry(_("Step in ms for arrow keys"), config.plugins.AC3LipSync.arrowStepSize))
+ self.list = [
+ getConfigListEntry(_("Minimum delay"), config.plugins.AC3LipSync.lowerBound),
+ getConfigListEntry(_("Maximum delay"), config.plugins.AC3LipSync.upperBound),
+ getConfigListEntry(_("Step in ms for arrow keys"), config.plugins.AC3LipSync.arrowStepSize)
+ ]
for i in range(1 , 10):
self.list.append(getConfigListEntry(_("Step in ms for key %i" %i), config.plugins.AC3LipSync.keySteps[i].stepSize))
-
+
ConfigListScreen.__init__(self, self.list)
self["config"].list = self.list
self["key_red"] = Button(_("Cancel"))
self["key_green"] = Button(_("Save"))
self["key_yellow"] = Button(_("Recalculate..."))
- self["key_blue"] = Button(_(" "))
+ self["key_blue"] = Button(" ")
self["setupActions"] = NumberActionMap(["SetupActions", "ColorActions"],
{
for i in range(1 , 10):
config.plugins.AC3LipSync.keySteps[i].stepSize.setValue(i*iStepSize)
self["config"].setList(self.list)
-
+
def save(self):
iLowerBound = int(config.plugins.AC3LipSync.lowerBound.getValue())
iUpperBound = int(config.plugins.AC3LipSync.upperBound.getValue())
x[1].cancel()
self.close()
- def startPlugin(self):
- self.save
- AC3LipSync(self.session)
- self.close()
\ No newline at end of file
config.plugins.AC3LipSync.stepSize = ConfigInteger(default = 45, limits = (0,10000))
config.plugins.AC3LipSync.keySteps = ConfigSubList()
for i in range(0, 10):
- s = ConfigSubsection()
+ s = ConfigSubsection()
s.stepSize = ConfigInteger(default = i*45, limits = (0,10000))
config.plugins.AC3LipSync.keySteps.append(s)
del s
-
+
def main(session, **kwargs):
# reload(AC3main)
session.open(AC3main.AC3LipSync)
-
+
def setup(session, **kwargs):
# reload(AC3setup)
session.open(AC3setup.AC3LipSyncSetup)
def mainSetup(menuid, **kwargs):
- if menuid == "setup":
+ if menuid == "setup":
return [(_("AC3 Lip Sync"), main, "ac3_lipsync", 99)]
return [ ]
def Plugins(**kwargs):
- return [ PluginDescriptor(name=_("AC3 Lip Sync"), description=_("sets the AC3 audio Delay (LipSync)"), where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main),
+ return [ PluginDescriptor(name=_("AC3 Lip Sync"), description=_("sets the AC3 audio Delay (LipSync)"), where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main),
PluginDescriptor(name=_("AC3 Lip Sync Setup"), description=_("Setup for the AC3 Lip Sync Plugin"), icon = "AC3LipSync.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=setup),
- PluginDescriptor(name=_("AC3 Lip Sync"), description=_("sets the AC3 audio Delay (LipSync)"), where = PluginDescriptor.WHERE_MENU, fnc=mainSetup)]
\ No newline at end of file
+ PluginDescriptor(name=_("AC3 Lip Sync"), description=_("sets the AC3 audio Delay (LipSync)"), where = PluginDescriptor.WHERE_MENU, fnc=mainSetup)]
+