Allow negative delays
authorTorsten Link <tode@users.schwerkraft.elitedvb.net>
Tue, 28 Jul 2009 23:26:11 +0000 (23:26 +0000)
committerTorsten Link <tode@users.schwerkraft.elitedvb.net>
Tue, 28 Jul 2009 23:26:11 +0000 (23:26 +0000)
ac3lipsync/.project [new file with mode: 0644]
ac3lipsync/img/AC3LipSyncBar.png
ac3lipsync/img/AC3LipSyncBarBG.png
ac3lipsync/po/AC3LipSync.pot
ac3lipsync/po/de.po
ac3lipsync/src/AC3main.py
ac3lipsync/src/AC3setup.py
ac3lipsync/src/AC3utils.py
ac3lipsync/src/__init__.py
ac3lipsync/src/plugin.py

diff --git a/ac3lipsync/.project b/ac3lipsync/.project
new file mode 100644 (file)
index 0000000..9dd17c1
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>ac3lipsync</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+       </buildSpec>
+       <natures>
+       </natures>
+</projectDescription>
index e23d347..e21bffe 100644 (file)
Binary files a/ac3lipsync/img/AC3LipSyncBar.png and b/ac3lipsync/img/AC3LipSyncBar.png differ
index e16dd71..1f51835 100644 (file)
Binary files a/ac3lipsync/img/AC3LipSyncBarBG.png and b/ac3lipsync/img/AC3LipSyncBarBG.png differ
index 8ea8597..ee78d87 100644 (file)
 msgid ""
 msgstr ""
-"Project-Id-Version: enigma2 - AC3lipsync\n"
+"Project-Id-Version: AC3LipSync\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 00:27+0100\n"
+"POT-Creation-Date: 2009-07-29 01:13+0100\n"
 "PO-Revision-Date: \n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Basepath: .\n"
-"X-Poedit-SearchPath-0: L:\\Dreambox\\Eclipse\\enigma2-plugins\\ac3lipsync\\src\n"
+"X-Poedit-Basepath: L:\\Dreambox\\Eclipse\\ac3lipsync\\\n"
+"X-Poedit-SearchPath-0: src\n"
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/plugin.py:30
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/plugin.py:34
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/plugin.py:36
+#: src/plugin.py:28
+#: src/plugin.py:32
+#: src/plugin.py:34
 msgid "AC3 Lip Sync"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/plugin.py:34
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/plugin.py:36
+#: src/plugin.py:32
+#: src/plugin.py:34
 msgid "sets the AC3 audio Delay (LipSync)"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/plugin.py:35
+#: src/plugin.py:33
 msgid "AC3 Lip Sync Setup"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/plugin.py:35
+#: src/plugin.py:33
 msgid "Setup for the AC3 Lip Sync Plugin"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:72
-msgid "Switch to user key- delays"
-msgstr ""
-
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:73
-msgid "Switch to calculated key- delays"
-msgstr ""
-
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:81
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:84
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:141
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:305
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:309
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:310
+#: src/AC3main.py:82
+#: src/AC3main.py:85
+#: src/AC3main.py:88
+#: src/AC3main.py:146
+#: src/AC3main.py:152
+#: src/AC3main.py:172
+#: src/AC3main.py:296
+#: src/AC3main.py:298
+#: src/AC3main.py:302
+#: src/AC3main.py:303
 #, python-format
 msgid "%i ms"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:82
+#: src/AC3main.py:83
+#: src/AC3main.py:89
+#: src/AC3main.py:173
 #, python-format
 msgid "%s delay:"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:83
+#: src/AC3main.py:84
 #, python-format
 msgid "%s:"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:87
+#: src/AC3main.py:92
 msgid "Channel audio:"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:92
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3setup.py:58
+#: src/AC3main.py:97
+#: src/AC3setup.py:58
 msgid "Cancel"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:93
+#: src/AC3main.py:98
 msgid "OK"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:94
+#: src/AC3main.py:99
 msgid "Switch audio"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:98
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3setup.py:59
+#: src/AC3main.py:103
+#: src/AC3setup.py:59
 msgid "Save"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:215
+#: src/AC3main.py:221
 #, python-format
 msgid "Save current %(audio)s delay of %(delay)i ms to key"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:219
+#: src/AC3main.py:224
 msgid "Menu"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:228
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:288
+#: src/AC3main.py:231
+#: src/AC3main.py:285
+#: src/AC3main.py:346
 msgid "Invalid selection"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:247
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:248
+#: src/AC3main.py:244
+#: src/AC3main.py:245
 #, python-format
 msgid "Save %s delay"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:249
+#: src/AC3main.py:246
 msgid "Save both delays"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:252
+#: src/AC3main.py:249
 msgid "Which delays do you want to set"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:284
+#: src/AC3main.py:281
 #, python-format
 msgid "Saved %(audio)s value: %(delay)i ms"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:326
-msgid "Select the key you want to set"
+#: src/AC3main.py:321
+#, python-format
+msgid "Select the key you want to set to %i ms"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:332
+#: src/AC3main.py:327
 #, python-format
-msgid "Key %(key)i (current value: %(value)i ms)"
+msgid "Key %(key)s (current value: %(value)i ms)"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:337
+#: src/AC3main.py:332
 msgid "Setting key canceled"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3main.py:341
+#: src/AC3main.py:344
 #, python-format
-msgid "%(Key)s successfully set to %(delay)i ms"
+msgid "Key %(Key)s successfully set to %(delay)i ms"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3setup.py:42
-msgid "Minimum delay"
+#: src/AC3setup.py:42
+msgid "Outer Bound (+/-)"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3setup.py:43
-msgid "Maximum delay"
-msgstr ""
-
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3setup.py:44
+#: src/AC3setup.py:43
 msgid "Step in ms for arrow keys"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3setup.py:45
+#: src/AC3setup.py:44
 msgid "Wait time in ms before activation:"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3setup.py:49
+#: src/AC3setup.py:45
+#: src/AC3setup.py:46
+#: src/AC3setup.py:47
+#, python-format
+msgid "Step in ms for keys '%s'"
+msgstr ""
+
+#: src/AC3setup.py:48
+#: src/AC3setup.py:49
+#: src/AC3setup.py:50
 #, python-format
 msgid "Step in ms for key %i"
 msgstr ""
 
-#: L:\Dreambox\Eclipse\enigma2-plugins\ac3lipsync\src/AC3setup.py:60
-msgid "Recalculate..."
+#: src/AC3setup.py:60
+msgid " "
 msgstr ""
 
index a2ddf0f..f841d32 100644 (file)
@@ -2,173 +2,185 @@ msgid ""
 msgstr ""
 "Project-Id-Version: enigma2 - AC3lipsync\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-05 00:33+0100\n"
+"POT-Creation-Date: 2009-07-29 01:17+0100\n"
 "PO-Revision-Date: \n"
 "Last-Translator: \n"
 "Language-Team: Tode <sagichnet@gmx.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Basepath: L:\\Dreambox\\Eclipse\\enigma2-plugins\\ac3lipsync\\po\n"
+"X-Poedit-Basepath: L:\\Dreambox\\Eclipse\\ac3lipsync\\po\n"
 "X-Poedit-Language: German\n"
 "X-Poedit-Country: GERMANY\n"
 "X-Poedit-SourceCharset: utf-8\n"
 "X-Poedit-SearchPath-0: ..\\src\n"
 
-#: ..\src/plugin.py:30
+#: ..\src/plugin.py:28
+#: ..\src/plugin.py:32
 #: ..\src/plugin.py:34
-#: ..\src/plugin.py:36
 msgid "AC3 Lip Sync"
 msgstr "AC3 Lip Sync"
 
+#: ..\src/plugin.py:32
 #: ..\src/plugin.py:34
-#: ..\src/plugin.py:36
 msgid "sets the AC3 audio Delay (LipSync)"
 msgstr "setzt die Audio- Verzögerung (Lippensynchronität)"
 
-#: ..\src/plugin.py:35
+#: ..\src/plugin.py:33
 msgid "AC3 Lip Sync Setup"
 msgstr "AC3 Lip Sync Setup"
 
-#: ..\src/plugin.py:35
+#: ..\src/plugin.py:33
 msgid "Setup for the AC3 Lip Sync Plugin"
 msgstr "Setup für das AC3 Lip Sync Plugin"
 
-#: ..\src/AC3main.py:72
-msgid "Switch to user key- delays"
-msgstr "Verwende benutzerdefinierte Werte für Zahlentasten"
-
-#: ..\src/AC3main.py:73
-msgid "Switch to calculated key- delays"
-msgstr "Verwende berechnete Werte für Zahlentasten"
-
-#: ..\src/AC3main.py:81
-#: ..\src/AC3main.py:84
-#: ..\src/AC3main.py:141
-#: ..\src/AC3main.py:305
-#: ..\src/AC3main.py:309
-#: ..\src/AC3main.py:310
+#: ..\src/AC3main.py:82
+#: ..\src/AC3main.py:85
+#: ..\src/AC3main.py:88
+#: ..\src/AC3main.py:146
+#: ..\src/AC3main.py:152
+#: ..\src/AC3main.py:172
+#: ..\src/AC3main.py:296
+#: ..\src/AC3main.py:298
+#: ..\src/AC3main.py:302
+#: ..\src/AC3main.py:303
 #, python-format
 msgid "%i ms"
 msgstr "%i ms"
 
-#: ..\src/AC3main.py:82
+#: ..\src/AC3main.py:83
+#: ..\src/AC3main.py:89
+#: ..\src/AC3main.py:173
 #, python-format
 msgid "%s delay:"
 msgstr "%s Verzögerung:"
 
-#: ..\src/AC3main.py:83
+#: ..\src/AC3main.py:84
 #, python-format
 msgid "%s:"
 msgstr "%s:"
 
-#: ..\src/AC3main.py:87
+#: ..\src/AC3main.py:92
 msgid "Channel audio:"
 msgstr "Tonspur Sender: "
 
-#: ..\src/AC3main.py:92
+#: ..\src/AC3main.py:97
 #: ..\src/AC3setup.py:58
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: ..\src/AC3main.py:93
+#: ..\src/AC3main.py:98
 msgid "OK"
 msgstr "OK"
 
-#: ..\src/AC3main.py:94
+#: ..\src/AC3main.py:99
 msgid "Switch audio"
 msgstr "Tonspur ..."
 
-#: ..\src/AC3main.py:98
+#: ..\src/AC3main.py:103
 #: ..\src/AC3setup.py:59
 msgid "Save"
 msgstr "Speichern"
 
-#: ..\src/AC3main.py:215
+#: ..\src/AC3main.py:221
 #, python-format
 msgid "Save current %(audio)s delay of %(delay)i ms to key"
 msgstr "Aktuelle %(audio)s Verzögerung (%(delay)i ms) auf Taste legen"
 
-#: ..\src/AC3main.py:219
+#: ..\src/AC3main.py:224
 msgid "Menu"
 msgstr "Menu"
 
-#: ..\src/AC3main.py:228
-#: ..\src/AC3main.py:288
+#: ..\src/AC3main.py:231
+#: ..\src/AC3main.py:285
+#: ..\src/AC3main.py:346
 msgid "Invalid selection"
 msgstr "Ungültige Auswahl"
 
-#: ..\src/AC3main.py:247
-#: ..\src/AC3main.py:248
+#: ..\src/AC3main.py:244
+#: ..\src/AC3main.py:245
 #, python-format
 msgid "Save %s delay"
 msgstr "%s Delay speichern"
 
-#: ..\src/AC3main.py:249
+#: ..\src/AC3main.py:246
 msgid "Save both delays"
 msgstr "Beide Verzögerungen speichern"
 
-#: ..\src/AC3main.py:252
+#: ..\src/AC3main.py:249
 msgid "Which delays do you want to set"
 msgstr "Wählen Sie, was Sie speichern wollen"
 
-#: ..\src/AC3main.py:284
+#: ..\src/AC3main.py:281
 #, python-format
 msgid "Saved %(audio)s value: %(delay)i ms"
 msgstr "Gespeicherter %(audio)s Wert: %(delay)i ms"
 
-#: ..\src/AC3main.py:326
+#: ..\src/AC3main.py:321
 #, python-format
 msgid "Select the key you want to set to %i ms"
 msgstr "Wählen Sie die Taste, die Sie mit %i ms belegen wollen"
 
-#: ..\src/AC3main.py:332
+#: ..\src/AC3main.py:327
 #, python-format
-msgid "Key %(key)i (current value: %(value)i ms)"
-msgstr "Taste %(key)i (aktueller Wert: %(value)i ms)"
+msgid "Key %(key)s (current value: %(value)i ms)"
+msgstr "Taste %(key)s (aktueller Wert: %(value)i ms)"
 
-#: ..\src/AC3main.py:337
+#: ..\src/AC3main.py:332
 msgid "Setting key canceled"
 msgstr "Setzen der Taste abgebrochen"
 
-#: ..\src/AC3main.py:341
+#: ..\src/AC3main.py:344
 #, python-format
-msgid "%(Key)s successfully set to %(delay)i ms"
+msgid "Key %(Key)s successfully set to %(delay)i ms"
 msgstr "%(Key)s erfolgreich auf %(delay)i ms gesetzt"
 
 #: ..\src/AC3setup.py:42
-msgid "Minimum delay"
-msgstr "Minimale Verzögerung"
+msgid "Outer Bound (+/-)"
+msgstr "Maximale Verzögerung (+/-)"
 
 #: ..\src/AC3setup.py:43
-msgid "Maximum delay"
-msgstr "Maximale Verzögerung"
-
-#: ..\src/AC3setup.py:44
 msgid "Step in ms for arrow keys"
 msgstr "Schrittweite in ms für Pfeiltasten"
 
-#: ..\src/AC3setup.py:45
+#: ..\src/AC3setup.py:44
 msgid "Wait time in ms before activation:"
 msgstr "Wartezeit in ms vor Aktivierung"
 
+#: ..\src/AC3setup.py:45
+#: ..\src/AC3setup.py:46
+#: ..\src/AC3setup.py:47
+#, python-format
+msgid "Step in ms for keys '%s'"
+msgstr "Schrittweite in ms für Taste %s"
+
+#: ..\src/AC3setup.py:48
 #: ..\src/AC3setup.py:49
+#: ..\src/AC3setup.py:50
 #, python-format
 msgid "Step in ms for key %i"
 msgstr "Schrittweite in ms für Taste %i"
 
 #: ..\src/AC3setup.py:60
-msgid "Recalculate..."
-msgstr "Neuberechnen"
-
+msgid " "
+msgstr " "
+
+#~ msgid "Switch to user key- delays"
+#~ msgstr "Verwende benutzerdefinierte Werte für Zahlentasten"
+#~ msgid "Switch to calculated key- delays"
+#~ msgstr "Verwende berechnete Werte für Zahlentasten"
+#~ msgid "Minimum delay"
+#~ msgstr "Minimale Verzögerung"
+#~ msgid "Maximum delay"
+#~ msgstr "Maximale Verzögerung"
+#~ msgid "Recalculate..."
+#~ msgstr "Neuberechnen"
 #~ msgid "Use user delays"
 #~ msgstr "Benutzer Verz."
 #~ msgid "Use calc. delays"
 #~ msgstr "autom. Verz."
 #~ msgid "Key"
 #~ msgstr "Taste"
-#~ msgid " "
-#~ msgstr " "
 #~ msgid "ms"
 #~ msgstr "ms"
 #~ msgid "Bitstream delay:"
index 3adf142..28f507b 100644 (file)
@@ -17,35 +17,31 @@ import os
 
 class AC3LipSync(Screen,InfoBarAudioSelection):
     skin = """
-        <screen position="60,420" size="600,100" title="AC3 Lip Sync" zPosition="1" >
-            <widget name="AC3DelayText" zPosition="2" position="5,0" size="180,21" font="Regular;21" foregroundColors="#ffffff,#ffa323" />
+        <screen position="60,472" size="600,74" title="AC3 Lip Sync" zPosition="1" >
+            <widget name="AudioDelayText" zPosition="2" position="5,0" size="180,21" font="Regular;21" foregroundColors="#ffffff,#ffa323" />
             <ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/AC3LipSyncBarBG.png" zPosition="2" position="190,0" size="370,21" alphatest="on" transparent="1" />
-            <widget name="AC3Slider" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/AC3LipSyncBar.png" zPosition="3" position="190,0" size="370,21" transparent="1" />
-            <widget name="AC3SliderText" zPosition="4" position="190,0" size="370,21" font="Regular;18" halign="center" valign="center" transparent="1" />
-            <widget name="PCMDelayText" zPosition="2" position="5,26" size="180,21" font="Regular;21" foregroundColors="#ffffff,#ffa323" />
-            <ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/AC3LipSyncBarBG.png" zPosition="2" position="190,26" size="370,21" alphatest="on" transparent="1" />
-            <widget name="PCMSlider" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/AC3LipSyncBar.png" zPosition="3" position="190,26" size="370,21" transparent="1" />
-            <widget name="PCMSliderText" zPosition="4" position="190,26" size="370,21" font="Regular;18" halign="center" valign="center" transparent="1" />
-            <widget name="ServiceInfoText" zPosition="4" position="5,52" size="180,21" font="Regular;18" foregroundColor="#ffffff" />
-            <widget name="ServiceInfo" zPosition="4" position="190,52" size="180,21" font="Regular;18" foregroundColor="#cccccc" />
-            <widget name="AC3DelayInfoText" zPosition="4" position="380,52" size="48,21" font="Regular;18" foregroundColor="#ffffff" />
-            <widget name="AC3DelayInfo" zPosition="4" position="430,52" size="50,21" font="Regular;18" foregroundColor="#cccccc" />
-            <widget name="PCMDelayInfoText" zPosition="4" position="490,52" size="48,21" font="Regular;18" foregroundColor="#ffffff" />
-            <widget name="PCMDelayInfo" zPosition="4" position="540,52" size="50,21" font="Regular;18" 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" />
-            <ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/key-blue.png" position="440,78" zPosition="5" size="20,20" transparent="1" alphatest="on" />
-            <widget name="key_red" position="30,78" zPosition="1" size="115,21"
+            <widget name="AudioSlider" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/AC3LipSyncBar.png" zPosition="3" position="190,0" size="370,21" transparent="1" />
+            <widget name="AudioSliderText" zPosition="4" position="190,0" size="370,21" font="Regular;18" halign="center" valign="center" transparent="1" />
+            <widget name="ServiceInfoText" zPosition="4" position="5,26" size="180,21" font="Regular;18" foregroundColor="#ffffff" />
+            <widget name="ServiceInfo" zPosition="4" position="190,26" size="180,21" font="Regular;18" foregroundColor="#cccccc" />
+            <widget name="AC3DelayInfoText" zPosition="4" position="380,26" size="48,21" font="Regular;18" foregroundColor="#ffffff" />
+            <widget name="AC3DelayInfo" zPosition="4" position="430,26" size="50,21" font="Regular;18" foregroundColor="#cccccc" />
+            <widget name="PCMDelayInfoText" zPosition="4" position="490,26" size="48,21" font="Regular;18" foregroundColor="#ffffff" />
+            <widget name="PCMDelayInfo" zPosition="4" position="540,26" size="50,21" font="Regular;18" foregroundColor="#cccccc" />
+            <ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/key-red.png" position="5,52" zPosition="5" size="20,20" transparent="1" alphatest="on" />
+            <ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/key-green.png" position="150,52" zPosition="5" size="20,20" transparent="1" alphatest="on" />
+            <ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/key-yellow.png" position="295,52" zPosition="5" size="20,20" transparent="1" alphatest="on" />
+            <ePixmap pixmap="/usr/lib/enigma2/python/Plugins/Extensions/AC3LipSync/img/key-blue.png" position="440,52" zPosition="5" size="20,20" transparent="1" alphatest="on" />
+            <widget name="key_red" position="30,52" zPosition="1" size="115,21"
                 font="Regular;16" valign="center" halign="left" transparent="1"
                 shadowColor="#000000" shadowOffset="-1,-1" />
-            <widget name="key_green" position="175,78" zPosition="1" size="115,21"
+            <widget name="key_green" position="175,52" zPosition="1" size="115,21"
                 font="Regular;16" valign="center" halign="left" transparent="1"
                 shadowColor="#000000" shadowOffset="-1,-1" />
-            <widget name="key_yellow" position="320,78" zPosition="1" size="115,21"
+            <widget name="key_yellow" position="320,52" zPosition="1" size="115,21"
                 font="Regular;16" valign="center" halign="left" transparent="1"
                 shadowColor="#000000" shadowOffset="-1,-1" />
-            <widget name="key_blue" position="465,78" zPosition="1" size="115,21"
+            <widget name="key_blue" position="465,52" zPosition="1" size="115,21"
                 font="Regular;16" valign="center" halign="left" transparent="1"
             shadowColor="#000000" shadowOffset="-1,-1" />
         </screen>"""
@@ -58,20 +54,25 @@ class AC3LipSync(Screen,InfoBarAudioSelection):
         InfoBarAudioSelection.__init__(self)
 
         # Configuration values
-        self.lowerBound = int(config.plugins.AC3LipSync.lowerBound.getValue())
-        self.upperBound = int(config.plugins.AC3LipSync.upperBound.getValue())
+        self.upperBound = int(config.plugins.AC3LipSync.outerBounds.getValue())
+        self.lowerBound = -1 * self.upperBound
         self.arrowStepSize = int(config.plugins.AC3LipSync.arrowStepSize.getValue())
-        self.stepSize = int(config.plugins.AC3LipSync.stepSize.getValue())
+        self.stepSize = {}
+        self.stepSize["3"] = int(config.plugins.AC3LipSync.stepSize13.getValue())
+        self.stepSize["1"] = -1 * self.stepSize["3"]
+        self.stepSize["6"] = int(config.plugins.AC3LipSync.stepSize46.getValue())
+        self.stepSize["4"] = -1 * self.stepSize["6"]
+        self.stepSize["9"] = int(config.plugins.AC3LipSync.stepSize79.getValue())
+        self.stepSize["7"] = -1 * self.stepSize["9"]
+        self.keyStep = {}
+        self.keyStep["0"] = 0
+        self.keyStep["2"] = int(config.plugins.AC3LipSync.absoluteStep2.getValue()) 
+        self.keyStep["5"] = int(config.plugins.AC3LipSync.absoluteStep5.getValue()) 
+        self.keyStep["8"] = int(config.plugins.AC3LipSync.absoluteStep8.getValue()) 
 
         # AC3delay instance
         self.AC3delay = AC3delay(self.session)
 
-        #Which Values do the number keys use
-        self.whichKeys = "Computed" # Computed = computed Values of keys, User = User set values of keys
-        self.whichKeyText = {}
-        self.whichKeyText["Computed"] = _("Switch to user key- delays")
-        self.whichKeyText["User"] = _("Switch to calculated key- delays")
-
         #Screen elements
 
         #Slider
@@ -83,6 +84,10 @@ class AC3LipSync(Screen,InfoBarAudioSelection):
             self[sAudio+"DelayInfoText"] = Label( _("%s:")%sAudio)
             self[sAudio+"DelayInfo"] = Label(_("%i ms")%0)
 
+        self["AudioSlider"] = ProgressBar()
+        self["AudioSliderText"] = Label(_("%i ms")%0)
+        self["AudioDelayText"] = MultiColorLabel( _("%s delay:")%self.AC3delay.whichAudio)
+        
         #Service Information
         self["ServiceInfoText"] = Label(_("Channel audio:"))
         self["ServiceInfo"] = Label()
@@ -121,16 +126,16 @@ class AC3LipSync(Screen,InfoBarAudioSelection):
             "green": self.keyOk,
             "yellow": self.keyAudioSelection,
             "blue": self.keySaveToLamedb,
-            "1": self.keyNumberGlobal,
-            "2": self.keyNumberGlobal,
-            "3": self.keyNumberGlobal,
-            "4": self.keyNumberGlobal,
-            "5": self.keyNumberGlobal,
-            "6": self.keyNumberGlobal,
-            "7": self.keyNumberGlobal,
-            "8": self.keyNumberGlobal,
-            "9": self.keyNumberGlobal,
-            "0": self.keyNumberGlobal
+            "1": self.keyNumberRelative,
+            "3": self.keyNumberRelative,
+            "4": self.keyNumberRelative,
+            "6": self.keyNumberRelative,
+            "7": self.keyNumberRelative,
+            "9": self.keyNumberRelative,
+            "0": self.keyNumberAbsolute,
+            "2": self.keyNumberAbsolute,
+            "5": self.keyNumberAbsolute,
+            "8": self.keyNumberAbsolute
         }, -1)
 
     def __onShow(self):
@@ -141,58 +146,59 @@ class AC3LipSync(Screen,InfoBarAudioSelection):
             self[sAudio + "SliderText"].setText(_("%i ms") %iDelay)
             self.savedValue[sAudio] = iDelay
             self.currentValue[sAudio] = iDelay
-            if self.AC3delay.whichAudio == AC3:
-                self["AC3DelayText"].setForegroundColorNum(1)
-                self["PCMDelayText"].setForegroundColorNum(0)
-            else:
-                self["AC3DelayText"].setForegroundColorNum(0)
-                self["PCMDelayText"].setForegroundColorNum(1)
+            if sAudio == self.AC3delay.whichAudio: 
+                self["AudioSlider"].setRange([(self.lowerBound), (self.upperBound)])
+                self["AudioSlider"].setValue(iDelay-self.lowerBound)
+                self["AudioSliderText"].setText(_("%i ms")%iDelay)
 
     def keyUp(self):
         self.AC3delay.whichAudio = AC3
-        self["AC3DelayText"].setForegroundColorNum(1)
-        self["PCMDelayText"].setForegroundColorNum(0)
+        self.setActiveSlider(AC3)
 
     def keyDown(self):
         self.AC3delay.whichAudio = PCM
-        self["AC3DelayText"].setForegroundColorNum(0)
-        self["PCMDelayText"].setForegroundColorNum(1)
+        self.setActiveSlider(PCM)
 
-    def keyLeft(self):
-        sAudio = self.AC3delay.whichAudio
-        iSliderValue = int(self[sAudio+"Slider"].getValue())
-        iSliderValue -= self.arrowStepSize
-        if iSliderValue < 0:
-            iSliderValue = 0
-        self.setSliderInfo(iSliderValue)
-        self.AC3delay.setFileDelay(sAudio, self.currentValue[sAudio], True)
+    def setActiveSlider(self,sAudio):
+        if self.AC3delay.whichAudio == AC3:
+            self["AC3DelayText"].setForegroundColorNum(1)
+            self["PCMDelayText"].setForegroundColorNum(0)
+        else:
+            self["AC3DelayText"].setForegroundColorNum(0)
+            self["PCMDelayText"].setForegroundColorNum(1)                        
+        iDelay = self[sAudio+"Slider"].getValue()
+        iCurDelay = iDelay + self.lowerBound
+        self["AudioSlider"].setValue(iDelay)
+        self["AudioSliderText"].setText(_("%i ms")%iCurDelay)
+        self["AudioDelayText"].setText(_("%s delay:")%sAudio)
 
+    def keyLeft(self):
+        self.changeSliderValue(-1 * self.arrowStepSize)
+        
     def keyRight(self):
+        self.changeSliderValue(self.arrowStepSize)
+
+    def keyNumberAbsolute(self, number):
         sAudio = self.AC3delay.whichAudio
-        iSliderValue = int(self[sAudio+"Slider"].getValue())
-        if self.currentValue[sAudio] == 0:
-            iSliderValue = 0
-        iSliderValue += self.arrowStepSize
-        if iSliderValue > self.upperBound:
-            iSliderValue = self.upperBound
+        sNumber = str(number)
+        iSliderValue = self.keyStep[sNumber]-self.lowerBound
         self.setSliderInfo(iSliderValue)
         self.AC3delay.setFileDelay(sAudio, self.currentValue[sAudio], True)
 
-    def keyNumberGlobal(self, number):
+    def keyNumberRelative(self, number):
+        sNumber = str(number)
+        self.changeSliderValue(self.stepSize[sNumber])
+
+    def changeSliderValue(self,iValue):
         sAudio = self.AC3delay.whichAudio
-        iNumber = int(number)
-        if iNumber == 0:
+        iSliderValue = int(self[sAudio+"Slider"].getValue())
+        iSliderValue += iValue
+        if iSliderValue < 0:
             iSliderValue = 0
-            self.currentValue[sAudio] = 0
-        else:
-            if self.whichKeys == "Computed":
-                iSliderValue = self.stepSize*iNumber
-            else:
-                iSliderValue = int(config.plugins.AC3LipSync.keySteps[iNumber].stepSize.getValue())-self.lowerBound
-                if iSliderValue < 0:
-                    iSliderValue = 0
+        elif iSliderValue > (self.upperBound - self.lowerBound):
+            iSliderValue = (self.upperBound - self.lowerBound)
         self.setSliderInfo(iSliderValue)
-        self.AC3delay.setFileDelay(sAudio, self.currentValue[sAudio], True)
+        self.AC3delay.setFileDelay(sAudio, self.currentValue[sAudio], True)        
 
     def keyAudioSelection(self):
         self.audioSelection()
@@ -212,35 +218,26 @@ class AC3LipSync(Screen,InfoBarAudioSelection):
         sAudio = self.AC3delay.whichAudio
         iDelay = self[sAudio+"Slider"].getValue()+self.lowerBound
         keyList = [
-            (_("Save current %(audio)s delay of %(delay)i ms to key") %dict(audio=sAudio , delay=iDelay),"1"),
-            (self.whichKeyText[self.whichKeys],"2")
+            (_("Save current %(audio)s delay of %(delay)i ms to key") %dict(audio=sAudio , delay=iDelay),"1")
         ]
 
         self.session.openWithCallback(self.DoShowMenu,ChoiceBox,_("Menu"),keyList)
-
+    
     def DoShowMenu(self, answer):
         if answer is not None:
             if answer[1] == "1":
                 self.menuSaveDelayToKey()
-            elif answer[1] == "2":
-                self.menuSwitchKeyValues()
             else:
                 sResponse = _("Invalid selection")
                 iType = MessageBox.TYPE_ERROR
                 self.session.open(MessageBox, sResponse , iType)
                 
-    def menuSwitchKeyValues(self):
-        if self.whichKeys == "Computed":
-            self.whichKeys = "User"
-        else:
-            self.whichKeys = "Computed"
-        self["key_blue"].setText(self.whichKeyText[self.whichKeys])
-
     def menuSaveDelayToKey(self):
         sAudio = self.AC3delay.whichAudio
         iDelay = self[sAudio+"Slider"].getValue()+self.lowerBound
-        AC3SetCustomValue(self.session,iDelay)
 
+        AC3SetCustomValue(self.session,iDelay,self.keyStep)
+        
     def keySaveToLamedb(self):
         if self.AC3delay.bIsRecording == False:
             keyList = [
@@ -293,16 +290,12 @@ class AC3LipSync(Screen,InfoBarAudioSelection):
 
     def setSliderInfo(self, iDelay):
         sAudio = self.AC3delay.whichAudio
-        if iDelay == 0:
-            if self.currentValue[sAudio] >= self.lowerBound:
-                self.currentValue[sAudio] = self.lowerBound
-            else:
-                self.currentValue = 0
-        else:
-            self.currentValue[sAudio] = iDelay + self.lowerBound
-        self[sAudio+"Slider"].setValue(iDelay)
+        self.currentValue[sAudio] = iDelay + self.lowerBound
         iCurDelay = self.currentValue[sAudio]
+        self[sAudio+"Slider"].setValue(iDelay)
         self[sAudio+"SliderText"].setText(_("%i ms")%iCurDelay)
+        self["AudioSlider"].setValue(iDelay)
+        self["AudioSliderText"].setText(_("%i ms")%iCurDelay)
 
     def setChannelInfoText(self):
         sActiveAudio = str(self.AC3delay.selectedAudioInfo[0])
@@ -318,25 +311,36 @@ class AC3LipSync(Screen,InfoBarAudioSelection):
         if audio is not None:
             self.AC3delay.getAudioInformation()
             self.setChannelInfoText()
-
+            self.setActiveSlider(self.AC3delay.whichAudio)
+            
 class AC3SetCustomValue:
-    def __init__(self, session, iDelay):
+    def __init__(self, session, iDelay, keyStep):
+        self.keyStep = keyStep
         self.session = session
         self.iDelay = iDelay
         self.session.openWithCallback(self.DoSetCustomValue,ChoiceBox,_("Select the key you want to set to %i ms") %(iDelay),self.getKeyList())
 
     def getKeyList(self):
         keyList = []
-        for i in range(1, 10):
-            iValue = int(config.plugins.AC3LipSync.keySteps[i].stepSize.getValue())
-            keyList.append((_("Key %(key)i (current value: %(value)i ms)") %dict(key=i, value=iValue),str(i)))
+        for i,iValue in self.keyStep.iteritems():
+            if i != "0":
+                keyList.append((_("Key %(key)s (current value: %(value)i ms)") %dict(key=i, value=iValue),i))
         return keyList
 
     def DoSetCustomValue(self,answer):
         if answer is None:
             self.session.open(MessageBox,_("Setting key canceled"), MessageBox.TYPE_INFO)
+        elif answer[1] in ("2" , "5" , "8"):
+            if answer[1] == "2":
+                config.plugins.AC3LipSync.absoluteStep2.setValue(self.iDelay)
+                config.plugins.AC3LipSync.absoluteStep2.save()
+            elif  answer[1] == "5":
+                config.plugins.AC3LipSync.absoluteStep5.setValue(self.iDelay)
+                config.plugins.AC3LipSync.absoluteStep5.save()
+            elif  answer[1] == "8":
+                config.plugins.AC3LipSync.absoluteStep8.setValue(self.iDelay)
+                config.plugins.AC3LipSync.absoluteStep8.save()
+            self.keyStep[answer[1]] = self.iDelay
+            self.session.open(MessageBox,_("Key %(Key)s successfully set to %(delay)i ms") %dict(Key=answer[1],delay=self.iDelay), MessageBox.TYPE_INFO, 5)
         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)
-
+            self.session.open(MessageBox,_("Invalid selection"), MessageBox.TYPE_ERROR, 5)
index a9ac009..30d421e 100644 (file)
@@ -39,17 +39,17 @@ class AC3LipSyncSetup(ConfigListScreen, Screen):
 
         # nun erzeugen wir eine liste von elementen fuer die menu liste.
         self.list = [
-            getConfigListEntry(_("Minimum delay"), config.plugins.AC3LipSync.lowerBound),
-            getConfigListEntry(_("Maximum delay"), config.plugins.AC3LipSync.upperBound),
+            getConfigListEntry(_("Outer Bound (+/-)"), config.plugins.AC3LipSync.outerBounds),
             getConfigListEntry(_("Step in ms for arrow keys"), config.plugins.AC3LipSync.arrowStepSize),
-            getConfigListEntry(_("Wait time in ms before activation:"), config.plugins.AC3LipSync.activationDelay)
+            getConfigListEntry(_("Wait time in ms before activation:"), config.plugins.AC3LipSync.activationDelay),
+            getConfigListEntry(_("Step in ms for keys '%s'") % ("1/3"), config.plugins.AC3LipSync.stepSize13),
+            getConfigListEntry(_("Step in ms for keys '%s'") % ("4/6"), config.plugins.AC3LipSync.stepSize46),
+            getConfigListEntry(_("Step in ms for keys '%s'") % ("7/9"), config.plugins.AC3LipSync.stepSize79),
+            getConfigListEntry(_("Step in ms for key %i") % (2), config.plugins.AC3LipSync.absoluteStep2),
+            getConfigListEntry(_("Step in ms for key %i") % (5), config.plugins.AC3LipSync.absoluteStep5),
+            getConfigListEntry(_("Step in ms for key %i") % (8), config.plugins.AC3LipSync.absoluteStep8)
         ]
         
-        self.list.extend([
-            getConfigListEntry(_("Step in ms for key %i") % (i), config.plugins.AC3LipSync.keySteps[i].stepSize)
-                for i in range(1 , 10)
-        ])
-
         ConfigListScreen.__init__(self, self.list)
 
         self["config"].list = self.list
@@ -57,7 +57,7 @@ class AC3LipSyncSetup(ConfigListScreen, Screen):
         # DO NOT ASK.
         self["key_red"] = Button(_("Cancel"))
         self["key_green"] = Button(_("Save"))
-        self["key_yellow"] = Button(_("Recalculate..."))
+        self["key_yellow"] = Button(_(" "))
         self["key_blue"] = Button(" ")
 
         self["setupActions"] = NumberActionMap(["SetupActions", "ColorActions"],
@@ -66,26 +66,10 @@ class AC3LipSyncSetup(ConfigListScreen, Screen):
             "cancel": self.cancel,
             "green": self.save,
             "red": self.cancel,
-            "yellow": self.recalculateKeys,
             "ok": self.save,
         }, -2)
 
-    def recalculateKeys(self):
-        iLowerBound = int(config.plugins.AC3LipSync.lowerBound.getValue())
-        iUpperBound = int(config.plugins.AC3LipSync.upperBound.getValue())
-        iStepSize = (iUpperBound - iLowerBound)/9
-        for i in range(1 , 10):
-            config.plugins.AC3LipSync.keySteps[i].stepSize.setValue(i*iStepSize+iLowerBound)
-        self["config"].setList(self.list)
-
     def save(self):
-        iLowerBound = int(config.plugins.AC3LipSync.lowerBound.getValue())
-        iUpperBound = int(config.plugins.AC3LipSync.upperBound.getValue())
-        iStepSize = (iUpperBound - iLowerBound)/9
-        config.plugins.AC3LipSync.stepSize.setValue(iStepSize)
-        config.plugins.AC3LipSync.stepSize.save()
-        iUpperBound = iLowerBound + (iStepSize*9)
-        config.plugins.AC3LipSync.upperBound.setValue(iUpperBound)
         for x in self.list:
             x[1].save()
         self.close()
@@ -94,4 +78,3 @@ class AC3LipSyncSetup(ConfigListScreen, Screen):
         for x in self["config"].list:
             x[1].cancel()
         self.close()
-
index 514a571..bf64aa9 100644 (file)
@@ -7,10 +7,21 @@ lFileDelay[AC3] = "/proc/stb/audio/audio_delay_bitstream"
 lFileDelay[PCM] = "/proc/stb/audio/audio_delay_pcm"
 
 def dec2hex(n):
-    """return the hexadecimal string representation of integer n"""
-    return "%X" % n
+    """return the signed hexadecimal string representation of integer n"""
+    if n >= 0:
+        s = "%X" % n
+    else:
+        n2 = 2**32 + n + 1
+        s = "%X" % n2
+    return s
 
 def hex2dec(s):
-    """return the integer value of a hexadecimal string s"""
-    return int(s, 16)
-
+    """return the signed integer value of a hexadecimal string s"""
+    print "[AC3LipSync] hex2dec String: ",s
+    if s[:2] == "0x":
+        s = s[2:]
+    if s[:1] < '8':
+        i = int(s,16)
+    else:
+        i = int(long(s,16)-2**32)
+    return i
index 92df526..64bde72 100644 (file)
@@ -14,7 +14,7 @@ def localeInit():
 def _(txt):
     t = gettext.dgettext(PluginLanguageDomain, txt)
     if t == txt:
-        print "[AC3LipSync] fallback to default translation for", txt
+        print "[AC3LipSync] fallback to default translation for ", txt
         t = gettext.gettext(txt)
     return t
 
index da9bd99..00d50e2 100644 (file)
@@ -5,17 +5,15 @@ import AC3main
 import AC3setup
 
 config.plugins.AC3LipSync = ConfigSubsection()
-config.plugins.AC3LipSync.lowerBound = ConfigInteger(default = 0, limits = (0,10000))
-config.plugins.AC3LipSync.upperBound = ConfigInteger(default = 405, limits = (0,10000))
-config.plugins.AC3LipSync.arrowStepSize = ConfigInteger(default = 5, limits = (0,10000))
-config.plugins.AC3LipSync.stepSize = ConfigInteger(default = 45, limits = (0,10000))
-config.plugins.AC3LipSync.activationDelay = ConfigInteger(default = 800, limits = (0,10000))
-config.plugins.AC3LipSync.keySteps = ConfigSubList()
-for i in range(0, 10):
-    s = ConfigSubsection()
-    s.stepSize = ConfigInteger(default = i*45, limits = (0,10000))
-    config.plugins.AC3LipSync.keySteps.append(s)
-    del s
+config.plugins.AC3LipSync.outerBounds = ConfigInteger(default = 1000, limits = (-10000,10000))
+config.plugins.AC3LipSync.arrowStepSize = ConfigInteger(default = 5, limits = (-10000,10000))
+config.plugins.AC3LipSync.activationDelay = ConfigInteger(default = 800, limits = (-10000,10000))
+config.plugins.AC3LipSync.stepSize13 = ConfigInteger(default = 50, limits = (-10000,10000))
+config.plugins.AC3LipSync.stepSize46 = ConfigInteger(default = 200, limits = (-10000,10000))
+config.plugins.AC3LipSync.stepSize79 = ConfigInteger(default = 500, limits = (-10000,10000))
+config.plugins.AC3LipSync.absoluteStep2 = ConfigInteger(default = 0, limits = (-10000,10000))
+config.plugins.AC3LipSync.absoluteStep5 = ConfigInteger(default = 0, limits = (-10000,10000))
+config.plugins.AC3LipSync.absoluteStep8 = ConfigInteger(default = 0, limits = (-10000,10000))
 
 def main(session, **kwargs):
 #    reload(AC3main)