aboutsummaryrefslogtreecommitdiff
path: root/lib/service/servicedvbrecord.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-04-28 12:23:04 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-04-28 12:23:04 +0000
commit3cddda083f4ace59e279f9f4f6ae12bad079d33b (patch)
treedebf994903caaefaa329ee708501625b56fe34f9 /lib/service/servicedvbrecord.cpp
parente933d514f93eb0690cf071c24f127017f9b80716 (diff)
downloadenigma2-3cddda083f4ace59e279f9f4f6ae12bad079d33b.tar.gz
enigma2-3cddda083f4ace59e279f9f4f6ae12bad079d33b.zip
- add dvb resource management
- scan hardcoded to dvb-s again - added untested recording support (data io thread still missing)
Diffstat (limited to 'lib/service/servicedvbrecord.cpp')
-rw-r--r--lib/service/servicedvbrecord.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/service/servicedvbrecord.cpp b/lib/service/servicedvbrecord.cpp
new file mode 100644
index 00000000..368adb70
--- /dev/null
+++ b/lib/service/servicedvbrecord.cpp
@@ -0,0 +1,84 @@
+#include <lib/service/servicedvbrecord.h>
+#include <lib/base/eerror.h>
+
+
+DEFINE_REF(eDVBServiceRecord);
+
+eDVBServiceRecord::eDVBServiceRecord(const eServiceReferenceDVB &ref): m_ref(ref)
+{
+ CONNECT(m_service_handler.serviceEvent, eDVBServiceRecord::serviceEvent);
+}
+
+void eDVBServiceRecord::serviceEvent(int event)
+{
+ eDebug("service event %d", event);
+ switch (event)
+ {
+ case eDVBServicePMTHandler::eventTuned:
+ {
+ eDebug("tuned..");
+ break;
+ }
+ case eDVBServicePMTHandler::eventNewProgramInfo:
+ {
+ int vpid = -1, apid = -1, pcrpid = -1;
+ eDVBServicePMTHandler::program program;
+ if (m_service_handler.getProgramInfo(program))
+ eDebug("getting program info failed.");
+ else
+ {
+ eDebugNoNewLine("RECORD: have %d video stream(s)", program.videoStreams.size());
+ if (!program.videoStreams.empty())
+ {
+ eDebugNoNewLine(" (");
+ for (std::vector<eDVBServicePMTHandler::videoStream>::const_iterator
+ i(program.videoStreams.begin());
+ i != program.videoStreams.end(); ++i)
+ {
+ if (vpid == -1)
+ vpid = i->pid;
+ if (i != program.videoStreams.begin())
+ eDebugNoNewLine(", ");
+ eDebugNoNewLine("%04x", i->pid);
+ }
+ eDebugNoNewLine(")");
+ }
+ eDebugNoNewLine(", and %d audio stream(s)", program.audioStreams.size());
+ if (!program.audioStreams.empty())
+ {
+ eDebugNoNewLine(" (");
+ for (std::vector<eDVBServicePMTHandler::audioStream>::const_iterator
+ i(program.audioStreams.begin());
+ i != program.audioStreams.end(); ++i)
+ {
+ if (apid == -1)
+ apid = i->pid;
+ if (i != program.audioStreams.begin())
+ eDebugNoNewLine(", ");
+ eDebugNoNewLine("%04x", i->pid);
+ }
+ eDebugNoNewLine(")");
+ }
+ eDebug(", and the pcr pid is %04x", program.pcrPid);
+ if (program.pcrPid != 0x1fff)
+ pcrpid = program.pcrPid;
+ }
+
+ // notify record thread...
+ break;
+ }
+ }
+}
+
+RESULT eDVBServiceRecord::start()
+{
+ eDebug("starting recording..");
+ return m_service_handler.tune(m_ref);
+}
+
+RESULT eDVBServiceRecord::stop()
+{
+ eDebug("stop recording!!");
+ return 0;
+}
+