aboutsummaryrefslogtreecommitdiff
path: root/lib/python
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2007-01-09 01:14:13 +0000
committerFelix Domke <tmbinc@elitedvb.net>2007-01-09 01:14:13 +0000
commit1e14cd894335a4f97c588f4b0522627337cdec6e (patch)
tree043eef02dd384dda4a8986abb8f8dcbbf76df6b4 /lib/python
parent8d3ee12aa8f54f1eb40e633e7d2b7f5ec8d91c5f (diff)
downloadenigma2-1e14cd894335a4f97c588f4b0522627337cdec6e.tar.gz
enigma2-1e14cd894335a4f97c588f4b0522627337cdec6e.zip
Add source and converter for streaming. Source/StreamService will start the streaming service 'record', Converter/Streaming will output current demux+pids.
Diffstat (limited to 'lib/python')
-rw-r--r--lib/python/Components/Converter/Makefile.am3
-rw-r--r--lib/python/Components/Converter/Streaming.py30
-rw-r--r--lib/python/Components/Sources/Makefile.am3
-rw-r--r--lib/python/Components/Sources/StreamService.py44
4 files changed, 78 insertions, 2 deletions
diff --git a/lib/python/Components/Converter/Makefile.am b/lib/python/Components/Converter/Makefile.am
index e754a683..b25a32d8 100644
--- a/lib/python/Components/Converter/Makefile.am
+++ b/lib/python/Components/Converter/Makefile.am
@@ -3,4 +3,5 @@ installdir = $(LIBDIR)/enigma2/python/Components/Converter
install_PYTHON = \
__init__.py ClockToText.py Converter.py EventName.py StaticText.py EventTime.py \
Poll.py RemainingToText.py StringList.py ServiceName.py FrontendInfo.py ServiceInfo.py \
- ConditionalShowHide.py ServicePosition.py ValueRange.py RadioText.py
+ ConditionalShowHide.py ServicePosition.py ValueRange.py RadioText.py Streaming.py
+
diff --git a/lib/python/Components/Converter/Streaming.py b/lib/python/Components/Converter/Streaming.py
new file mode 100644
index 00000000..ece17490
--- /dev/null
+++ b/lib/python/Components/Converter/Streaming.py
@@ -0,0 +1,30 @@
+from Converter import Converter
+from Components.Element import cached
+
+class Streaming(Converter):
+ def __init__(self, type):
+ Converter.__init__(self, type)
+
+ @cached
+ def getText(self):
+ service = self.source.service
+ if service is None:
+ return "-NO SERVICE"
+
+ streaming = service.stream()
+ s = streaming and streaming.getStreamingData()
+
+ if streaming is None:
+ err = service.getError()
+ return "-1SERVICE ERROR:%d" % err
+
+ r = streaming.getStreamingData()
+ if r is None:
+ return "-NO STREAM"
+
+ demux = r["demux"]
+ pids = ','.join(["%x:%s" % (x[0], x[1]) for x in r["pids"]])
+
+ return "+%d:%s\n" % (demux, pids)
+
+ text = property(getText)
diff --git a/lib/python/Components/Sources/Makefile.am b/lib/python/Components/Sources/Makefile.am
index 16513e82..c03d89eb 100644
--- a/lib/python/Components/Sources/Makefile.am
+++ b/lib/python/Components/Sources/Makefile.am
@@ -2,4 +2,5 @@ installdir = $(LIBDIR)/enigma2/python/Components/Sources
install_PYTHON = \
__init__.py Clock.py EventInfo.py Source.py MenuList.py CurrentService.py \
- FrontendStatus.py Boolean.py Config.py ServiceList.py RadioText.py
+ FrontendStatus.py Boolean.py Config.py ServiceList.py RadioText.py StreamService.py
+
diff --git a/lib/python/Components/Sources/StreamService.py b/lib/python/Components/Sources/StreamService.py
new file mode 100644
index 00000000..ac8db34d
--- /dev/null
+++ b/lib/python/Components/Sources/StreamService.py
@@ -0,0 +1,44 @@
+from Source import Source
+from Components.Element import cached
+from enigma import eServiceReference
+
+class StreamService(Source):
+ def __init__(self, navcore):
+ Source.__init__(self)
+ self.ref = None
+ self.__service = None
+ self.navcore = navcore
+
+ def serviceEvent(self, event):
+ pass
+
+ @cached
+ def getService(self):
+ return self.__service
+
+ service = property(getService)
+
+ def handleCommand(self, cmd):
+ print "StreamService handle command", cmd
+ self.ref = eServiceReference(cmd)
+
+ def recordEvent(self, service, event):
+ if service is self.__service:
+ return
+ print "RECORD event for us:", service
+ self.changed((self.CHANGED_ALL, ))
+
+ def execBegin(self):
+ print "StreamService execBegin", self.ref.toString()
+ self.__service = self.navcore.recordService(self.ref)
+ self.navcore.record_event.append(self.recordEvent)
+ if self.__service is not None:
+ self.__service.prepareStreaming()
+ self.__service.start()
+
+ def execEnd(self):
+ print "StreamService execEnd", self.ref.toString()
+ self.navcore.record_event.remove(self.recordEvent)
+ if self.__service is not None:
+ self.navcore.stopRecordService(self.__service)
+ self.__service = None