Repository URL to install this package:
|
Version:
3.1-r0.0 ▾
|
enigma2-plugin-extensions-streamrelay
/
usr
/
lib
/
enigma2
/
python
/
Plugins
/
Extensions
/
StreamRelay
/
Streaming.py
|
|---|
from Components.Converter.Converter import Converter
from Components.Element import cached
from Plugins.Extensions.StreamRelay.plugin import writelog
# the protocol works as the following:
# lines starting with '-' are fatal errors (no recovery possible),
# lines starting with '=' are progress notices,
# lines starting with '+' are PIDs to record:
# "+d:[p:t[,p:t...]]" with d=demux nr, p: pid, t: type
class Streaming(Converter):
@cached
def getText(self):
service = self.source.service
if service is None:
return "-NO SERVICE\n"
streaming = service.stream()
s = streaming and streaming.getStreamingData()
pids = s and s.get("pids", [] )
demux = s and s.get("demux", None)
if not s or not pids or demux is None:
err = service.getError()
if err:
#writelog('{0} -SERVICE ERROR {1}'.format(self.source.ref and self.source.ref.toString(), err))
return "-SERVICE ERROR:%d\n" % err
else:
#writelog('{0} =NO STREAM {1}'.format(self.source.ref and self.source.ref.toString(), err))
return "=NO STREAM\n"
#if len(pids) < 7:
# writelog('{0} =NO STREAM pids len {1}'.format(self.source.ref and self.source.ref.toString(), len(pids)))
# return "=NO STREAM\n"
pids = ','.join(["%x:%s" % (x[0], x[1]) for x in pids])
if pids.find('pmt') == -1:
#writelog('{0} =NO PMT'.format(self.source.ref and self.source.ref.toString() or 'No source.ref'))
return "=NO STREAM\n"
#writelog('demux {0} pids {1}'.format(demux, pids))
return "+%d:%s\n" % (demux, pids)
text = property(getText)