diff --git a/libtriple/record_td.cpp b/libtriple/record_td.cpp index b5261b9..ef2229b 100644 --- a/libtriple/record_td.cpp +++ b/libtriple/record_td.cpp @@ -158,6 +158,22 @@ bool cRecord::ChangePids(unsigned short /*vpid*/, unsigned short *apids, int num return true; } +bool cRecord::AddPid(unsigned short pid) +{ + std::vector pids; + INFO("\n"); + if (!dmx) { + INFO("DMX = NULL\n"); + return false; + } + pids = dmx->getPesPids(); + for (std::vector::const_iterator i = pids.begin(); i != pids.end(); ++i) { + if ((*i).pid == pid) + return true; /* or is it an error to try to add the same PID twice? */ + } + return dmx->addPid(pid); +} + void cRecord::RecordThread() { INFO("begin\n"); diff --git a/libtriple/record_td.h b/libtriple/record_td.h index 0de722d..75099f7 100644 --- a/libtriple/record_td.h +++ b/libtriple/record_td.h @@ -28,6 +28,7 @@ class cRecord bool Open(); bool Start(int fd, unsigned short vpid, unsigned short *apids, int numapids); bool Stop(void); + bool AddPid(unsigned short pid); bool ChangePids(unsigned short vpid, unsigned short *apids, int numapids); void RecordThread();