add eDVBServicePMTHandler::program::createPythonObject
authorFelix Domke <tmbinc@elitedvb.net>
Fri, 5 Jan 2007 15:00:59 +0000 (15:00 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Fri, 5 Jan 2007 15:00:59 +0000 (15:00 +0000)
lib/dvb/pmt.cpp
lib/dvb/pmt.h

index 8db4ba9f9a8d313783d29bc7deaaf00d3618df48..1b1455e4f58c01dc78efee438a82156db10659ec 100644 (file)
@@ -856,3 +856,46 @@ void eDVBCAService::sendCAPMT()
                ++m_sendstate;
        }
 }
+
+static PyObject *createTuple(int pid, const char *type)
+{
+       PyObject *r = PyTuple_New(2);
+       PyTuple_SetItem(r, 0, PyInt_FromLong(pid));
+       PyTuple_SetItem(r, 1, PyString_FromString(type));
+       return r;
+}
+
+PyObject *eDVBServicePMTHandler::program::createPythonObject()
+{
+       PyObject *r = PyDict_New();
+
+       PyObject *l = PyList_New(0);
+       
+       PyList_Append(l, createTuple(0, "pat"));
+
+       if (pmtPid != -1)
+               PyList_Append(l, createTuple(pmtPid, "pmt"));
+       
+       for (std::vector<eDVBServicePMTHandler::videoStream>::const_iterator
+                       i(videoStreams.begin()); 
+                       i != videoStreams.end(); ++i)
+               PyList_Append(l, createTuple(i->pid, "video"));
+
+       for (std::vector<eDVBServicePMTHandler::audioStream>::const_iterator
+                       i(audioStreams.begin()); 
+                       i != audioStreams.end(); ++i)
+               PyList_Append(l, createTuple(i->pid, "audio"));
+
+       for (std::vector<eDVBServicePMTHandler::subtitleStream>::const_iterator
+                       i(subtitleStreams.begin());
+                       i != subtitleStreams.end(); ++i)
+               PyList_Append(l, createTuple(i->pid, "subtitle"));
+
+       PyList_Append(l, createTuple(pcrPid, "pcr"));
+
+       if (textPid != -1)
+               PyList_Append(l, createTuple(textPid, "text"));
+               
+       PyDict_SetItemString(r, "pids", l);
+       return r;
+}
index 086619d370eade0819ec8d77a0836173b2714b37..a0820c58df408a7522537810dfde27bd5de1af79 100644 (file)
@@ -163,6 +163,8 @@ public:
                int pmtPid;
                int textPid;
                bool isCrypted() { return !caids.empty(); }
+               
+               PyObject *createPythonObject();
        };
 
        int getProgramInfo(struct program &program);