diff options
| -rw-r--r-- | data/keymap.xml | 6 | ||||
| -rw-r--r-- | data/setup.xml | 2 | ||||
| -rw-r--r-- | lib/dvb/decoder.cpp | 11 | ||||
| -rw-r--r-- | lib/dvb/decoder.h | 2 | ||||
| -rw-r--r-- | lib/dvb/pmt.cpp | 32 | ||||
| -rw-r--r-- | lib/dvb/pmt.h | 2 | ||||
| -rw-r--r-- | lib/python/Components/EpgList.py | 29 | ||||
| -rw-r--r-- | lib/python/Components/Renderer/FrontpanelLed.py | 3 | ||||
| -rw-r--r-- | lib/python/Components/SystemInfo.py | 17 | ||||
| -rw-r--r-- | lib/python/Screens/SessionGlobals.py | 16 | ||||
| -rw-r--r-- | main/enigma.cpp | 2 |
11 files changed, 90 insertions, 32 deletions
diff --git a/data/keymap.xml b/data/keymap.xml index 8f708698..036ea467 100644 --- a/data/keymap.xml +++ b/data/keymap.xml @@ -332,7 +332,7 @@ <map context="InfobarTimeshiftActions"> <device name="dreambox remote control (native)"> - <key id="KEY_YELLOW" mapto="timeshiftStart" flags="m" /> + <key id="KEY_YELLOW" mapto="timeshiftStart" flags="b" /> <key id="KEY_TV" mapto="timeshiftStop" flags="m" /> </device> <device name="dreambox advanced remote control (native)"> @@ -351,7 +351,7 @@ <map context="InfobarTimeshiftActivateActions"> <device name="dreambox remote control (native)"> <key id="KEY_RED" mapto="timeshiftActivateEnd" flags="b" /> - <key id="KEY_YELLOW" mapto="timeshiftActivateEndAndPause" flags="m" /> + <key id="KEY_YELLOW" mapto="timeshiftActivateEndAndPause" flags="b" /> </device> <device name="dreambox advanced remote control (native)"> <key id="KEY_PREVIOUSSONG" mapto="timeshiftActivateEnd" flags="m" /> @@ -412,7 +412,7 @@ </device> <device name="dreambox advanced remote control (native)"> <key id="KEY_0" mapto="toggleMark" flags="m" /> - <key id="KEY_YELLOW" mapto="toggleMark" flags="m" /> + <key id="KEY_YELLOW" mapto="toggleMark" flags="b" /> </device> <device name="dreambox ir keyboard"> <key id="KEY_TAB" mapto="toggleMark" flags="m" /> diff --git a/data/setup.xml b/data/setup.xml index 583850da..d8d58369 100644 --- a/data/setup.xml +++ b/data/setup.xml @@ -98,7 +98,7 @@ <item text="Brightness">config.osd.bright</item> <item text="Contrast">config.osd.contrast</item> </setup> - <setup key="lcd" title="Display Setup"> + <setup key="lcd" title="Display Setup" requires="FrontpanelDisplay"> <item level="0" text="Brightness">config.lcd.bright</item> <item level="0" text="Contrast">config.lcd.contrast</item> <item level="0" text="Standby">config.lcd.standby</item> diff --git a/lib/dvb/decoder.cpp b/lib/dvb/decoder.cpp index 82ade40d..6845602d 100644 --- a/lib/dvb/decoder.cpp +++ b/lib/dvb/decoder.cpp @@ -198,6 +198,9 @@ int eDVBAudio::startPid(int pid, int type) case aAACHE: bypass = 9; break; + case aLPCM: + bypass = 6; + break; } eDebugNoNewLine("AUDIO_SET_BYPASS(%d) - ", bypass); @@ -860,7 +863,7 @@ int eTSMPEGDecoder::setState() const char *decoder_states[] = {"stop", "pause", "play", "decoderfastforward", "trickmode", "slowmotion"}; eDebug("decoder state: %s, vpid=%d, apid=%d", decoder_states[m_state], m_vpid, m_apid); - bool changed = !!m_changed; + bool changed = m_changed; #if HAVE_DVB_API_VERSION < 3 bool checkAVSync = m_changed & (changeAudio|changeVideo|changePCR); if (m_changed & changeAudio && m_audio) @@ -1002,7 +1005,7 @@ int eTSMPEGDecoder::setState() } #endif - if (m_changed & (changeState|changeVideo|changeAudio)) + if (changed & (changeState|changeVideo|changeAudio)) { /* play, slowmotion, fast-forward */ int state_table[6][4] = @@ -1015,7 +1018,7 @@ int eTSMPEGDecoder::setState() /* [stateSlowMotion] = */ {1, m_ff_sm_ratio, 0} }; int *s = state_table[m_state]; - if (m_changed & (changeState|changeVideo) && m_video) + if (changed & (changeState|changeVideo) && m_video) { m_video->setSlowMotion(s[1]); m_video->setFastForward(s[2]); @@ -1024,7 +1027,7 @@ int eTSMPEGDecoder::setState() else m_video->freeze(); } - if (m_changed & (changeState|changeAudio) && m_audio) + if (changed & (changeState|changeAudio) && m_audio) { if (s[0]) m_audio->unfreeze(); diff --git a/lib/dvb/decoder.h b/lib/dvb/decoder.h index 3bfc70cb..b53638b5 100644 --- a/lib/dvb/decoder.h +++ b/lib/dvb/decoder.h @@ -13,7 +13,7 @@ private: ePtr<eDVBDemux> m_demux; int m_fd, m_fd_demux, m_dev, m_is_freezed; public: - enum { aMPEG, aAC3, aDTS, aAAC, aAACHE }; + enum { aMPEG, aAC3, aDTS, aAAC, aAACHE, aLPCM }; eDVBAudio(eDVBDemux *demux, int dev); enum { aMonoLeft, aStereo, aMonoRight }; void setChannel(int channel); diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index da45c8eb..13ed6b98 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -258,8 +258,26 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) isaudio = 1; audio.type = audioStream::atAACHE; } + case 0x80: // user private ... but blueray LPCM + if (!isvideo && !isaudio) + { + isaudio = 1; + audio.type = audioStream::atLPCM; + } + case 0x81: // user private ... but blueray AC3 + if (!isvideo && !isaudio) + { + isaudio = 1; + audio.type = audioStream::atAC3; + } + case 0x82: // Blueray DTS (dvb user private...) + case 0xA2: // Blueray secondary DTS + if (!isvideo && !isaudio) + { + isaudio = 1; + audio.type = audioStream::atDTS; + } case 0x06: // PES Private - case 0x81: // user private case 0xEA: // TS_PSI_ST_SMPTE_VC1 for (DescriptorConstIterator desc = (*es)->getDescriptors()->begin(); desc != (*es)->getDescriptors()->end(); ++desc) @@ -363,11 +381,19 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program) int format_identifier = (descr[2] << 24) | (descr[3] << 16) | (descr[4] << 8) | (descr[5]); switch (format_identifier) { - case 0x41432d33: + case 0x44545331 ... 0x44545333: // DTS1/DTS2/DTS3 + isaudio = 1; + audio.type = audioStream::atDTS; + break; + case 0x41432d33: // == 'AC-3' isaudio = 1; audio.type = audioStream::atAC3; break; - case 0x56432d31: + case 0x42535344: // == 'BSSD' (LPCM) + isaudio = 1; + audio.type = audioStream::atLPCM; + break; + case 0x56432d31: // == 'VC-1' if (descr[6] == 0x01) // subdescriptor tag { if (descr[7] >= 0x90) // profile_level diff --git a/lib/dvb/pmt.h b/lib/dvb/pmt.h index cabc6ace..e27135e3 100644 --- a/lib/dvb/pmt.h +++ b/lib/dvb/pmt.h @@ -142,7 +142,7 @@ public: struct audioStream { int pid; - enum { atMPEG, atAC3, atDTS, atAAC, atAACHE }; + enum { atMPEG, atAC3, atDTS, atAAC, atAACHE, atLPCM }; int type; // mpeg2, ac3, dts, ... int component_tag; diff --git a/lib/python/Components/EpgList.py b/lib/python/Components/EpgList.py index fa60400f..59f92621 100644 --- a/lib/python/Components/EpgList.py +++ b/lib/python/Components/EpgList.py @@ -163,9 +163,17 @@ class EPGList(HTMLComponent, GUIComponent): return self.clock_post_pixmap else: return self.clock_prepost_pixmap + + def getPixmapForEntry(self, service, eventId, beginTime, duration): + rec=beginTime and (self.timer.isInTimer(eventId, beginTime, duration, service)) + if rec: + clock_pic = self.getClockPixmap(service, beginTime, duration, eventId) + else: + clock_pic = None + return (clock_pic, rec) def buildSingleEntry(self, service, eventId, beginTime, duration, EventName): - rec=beginTime and (self.timer.isInTimer(eventId, beginTime, duration, service)) + (clock_pic, rec) = self.getPixmapForEntry(service, eventId, beginTime, duration) r1=self.weekday_rect r2=self.datetime_rect r3=self.descr_rect @@ -176,7 +184,6 @@ class EPGList(HTMLComponent, GUIComponent): (eListboxPythonMultiContent.TYPE_TEXT, r2.left(), r2.top(), r2.width(), r1.height(), 0, RT_HALIGN_RIGHT, "%02d.%02d, %02d:%02d"%(t[2],t[1],t[3],t[4])) ] if rec: - clock_pic = self.getClockPixmap(service, beginTime, duration, eventId) res.extend(( (eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r3.left(), r3.top(), 21, 21, clock_pic), (eListboxPythonMultiContent.TYPE_TEXT, r3.left() + 25, r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, EventName) @@ -186,7 +193,7 @@ class EPGList(HTMLComponent, GUIComponent): return res def buildSimilarEntry(self, service, eventId, beginTime, service_name, duration): - rec=beginTime and (self.timer.isInTimer(eventId, beginTime, duration, service)) + (clock_pic, rec) = self.getPixmapForEntry(service, eventId, beginTime, duration) r1=self.weekday_rect r2=self.datetime_rect r3=self.service_rect @@ -197,7 +204,6 @@ class EPGList(HTMLComponent, GUIComponent): (eListboxPythonMultiContent.TYPE_TEXT, r2.left(), r2.top(), r2.width(), r1.height(), 0, RT_HALIGN_RIGHT, "%02d.%02d, %02d:%02d"%(t[2],t[1],t[3],t[4])) ] if rec: - clock_pic = self.getClockPixmap(service, beginTime, duration, eventId) res.extend(( (eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r3.left(), r3.top(), 21, 21, clock_pic), (eListboxPythonMultiContent.TYPE_TEXT, r3.left() + 25, r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, service_name) @@ -206,25 +212,24 @@ class EPGList(HTMLComponent, GUIComponent): res.append((eListboxPythonMultiContent.TYPE_TEXT, r3.left(), r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, service_name)) return res - def buildMultiEntry(self, changecount, service, eventId, begTime, duration, EventName, nowTime, service_name): - rec=begTime and (self.timer.isInTimer(eventId, begTime, duration, service)) + def buildMultiEntry(self, changecount, service, eventId, beginTime, duration, EventName, nowTime, service_name): + (clock_pic, rec) = self.getPixmapForEntry(service, eventId, beginTime, duration) r1=self.service_rect r2=self.progress_rect r3=self.descr_rect r4=self.start_end_rect res = [ None ] # no private data needed if rec: - clock_pic = self.getClockPixmap(service, begTime, duration, eventId) res.extend(( (eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width()-21, r1.height(), 0, RT_HALIGN_LEFT, service_name), (eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, r1.left()+r1.width()-16, r1.top(), 21, 21, clock_pic) )) else: res.append((eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width(), r1.height(), 0, RT_HALIGN_LEFT, service_name)) - if begTime is not None: - if nowTime < begTime: - begin = localtime(begTime) - end = localtime(begTime+duration) + if beginTime is not None: + if nowTime < beginTime: + begin = localtime(beginTime) + end = localtime(beginTime+duration) # print "begin", begin # print "end", end res.extend(( @@ -232,7 +237,7 @@ class EPGList(HTMLComponent, GUIComponent): (eListboxPythonMultiContent.TYPE_TEXT, r3.left(), r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, EventName) )) else: - percent = (nowTime - begTime) * 100 / duration + percent = (nowTime - beginTime) * 100 / duration res.extend(( (eListboxPythonMultiContent.TYPE_PROGRESS, r2.left(), r2.top(), r2.width(), r2.height(), percent), (eListboxPythonMultiContent.TYPE_TEXT, r3.left(), r3.top(), r3.width(), r3.height(), 0, RT_HALIGN_LEFT, EventName) diff --git a/lib/python/Components/Renderer/FrontpanelLed.py b/lib/python/Components/Renderer/FrontpanelLed.py index 3021a853..f896ecde 100644 --- a/lib/python/Components/Renderer/FrontpanelLed.py +++ b/lib/python/Components/Renderer/FrontpanelLed.py @@ -22,7 +22,8 @@ class FrontpanelLed(Element): pass if self.which == 0: try: - open("/proc/stb/fp/led_pattern", "w").write("%08x" % pattern_4bit) + open("/proc/stb/fp/led_set_pattern", "w").write("%08x" % pattern_4bit) + open("/proc/stb/fp/led_set_speed", "w").write("%d" % speed) except IOError: pass try: diff --git a/lib/python/Components/SystemInfo.py b/lib/python/Components/SystemInfo.py index d074c414..d2b405a2 100644 --- a/lib/python/Components/SystemInfo.py +++ b/lib/python/Components/SystemInfo.py @@ -1,10 +1,10 @@ from enigma import eDVBResourceManager +from Tools.Directories import fileExists SystemInfo = { } #FIXMEE... def getNumVideoDecoders(): - from Tools.Directories import fileExists idx = 0 while fileExists("/dev/dvb/adapter0/video%d"%(idx), 'f'): idx += 1 @@ -12,3 +12,18 @@ def getNumVideoDecoders(): SystemInfo["NumVideoDecoders"] = getNumVideoDecoders() SystemInfo["CanMeasureFrontendInputPower"] = eDVBResourceManager.getInstance().canMeasureFrontendInputPower() + + +def countFrontpanelLEDs(): + leds = 0 + if fileExists("/proc/stb/fp/led_set_pattern"): + leds += 1 + + while fileExists("/proc/stb/fp/led%d_pattern" % leds): + leds += 1 + + return leds + +SystemInfo["NumFrontpanelLEDs"] = countFrontpanelLEDs() +SystemInfo["FrontpanelDisplay"] = fileExists("/dev/dbox/oled0") or fileExists("/dev/dbox/lcd0") +SystemInfo["FrontpanelDisplayGrayscale"] = fileExists("/dev/dbox/oled0") diff --git a/lib/python/Screens/SessionGlobals.py b/lib/python/Screens/SessionGlobals.py index f2d56154..18d71d39 100644 --- a/lib/python/Screens/SessionGlobals.py +++ b/lib/python/Screens/SessionGlobals.py @@ -22,6 +22,9 @@ class SessionGlobals(Screen): self["TunerInfo"] = TunerInfo() self["RecordState"] = RecordState(session) self["Standby"] = Boolean(fixed = False) + + from Components.SystemInfo import SystemInfo + combine = Combine(func = lambda s: {(False, False): 0, (False, True): 1, (True, False): 2, (True, True): 3}[(s[0].boolean, s[1].boolean)]) combine.connect(self["Standby"]) combine.connect(self["RecordState"]) @@ -33,9 +36,14 @@ class SessionGlobals(Screen): # false true on off off # true true blnk off blnk - PATTERN_ON = (20, 0xffffffff, 0) - PATTERN_OFF = (20, 0, 0xffffffff) + PATTERN_ON = (20, 0xffffffff, 0xffffffff) + PATTERN_OFF = (20, 0, 0) PATTERN_BLINK = (20, 0x55555555, 0x84fc8c04) - FrontpanelLed(which = 0, boolean = False, patterns = [PATTERN_OFF, PATTERN_BLINK, PATTERN_ON, PATTERN_BLINK]).connect(combine) - FrontpanelLed(which = 1, boolean = False, patterns = [PATTERN_ON, PATTERN_ON, PATTERN_OFF, PATTERN_OFF]).connect(combine) + nr_leds = SystemInfo.get("NumFrontpanelLEDs", 0) + + if nr_leds == 1: + FrontpanelLed(which = 0, boolean = False, patterns = [PATTERN_OFF, PATTERN_BLINK, PATTERN_OFF, PATTERN_BLINK]).connect(combine) + elif nr_leds == 2: + FrontpanelLed(which = 0, boolean = False, patterns = [PATTERN_OFF, PATTERN_BLINK, PATTERN_ON, PATTERN_BLINK]).connect(combine) + FrontpanelLed(which = 1, boolean = False, patterns = [PATTERN_ON, PATTERN_ON, PATTERN_OFF, PATTERN_OFF]).connect(combine) diff --git a/main/enigma.cpp b/main/enigma.cpp index 98175c49..7f3ba44b 100644 --- a/main/enigma.cpp +++ b/main/enigma.cpp @@ -213,7 +213,7 @@ int main(int argc, char **argv) ePtr<gPixmap> wait[MAX_SPINNER]; for (i=0; i<MAX_SPINNER; ++i) { - char filename[strlen(DATADIR) + 20]; + char filename[strlen(DATADIR) + 41]; sprintf(filename, DATADIR "/enigma2/skin_default/spinner/wait%d.png", i + 1); loadPNG(wait[i], filename); |
