<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)">
<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" />
</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" />
<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>
case aAACHE:
bypass = 9;
break;
+ case aLPCM:
+ bypass = 6;
+ break;
}
eDebugNoNewLine("AUDIO_SET_BYPASS(%d) - ", bypass);
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)
}
#endif
- if (m_changed & (changeState|changeVideo|changeAudio))
+ if (changed & (changeState|changeVideo|changeAudio))
{
/* play, slowmotion, fast-forward */
int state_table[6][4] =
/* [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]);
else
m_video->freeze();
}
- if (m_changed & (changeState|changeAudio) && m_audio)
+ if (changed & (changeState|changeAudio) && m_audio)
{
if (s[0])
m_audio->unfreeze();
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);
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)
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
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;
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
(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)
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
(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)
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((
(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)
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:
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
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")
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"])
# 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)
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);