X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ce6a641bebc8e3e3ef14b624aa67d1dca1e8310e..ad88a7130bd75fa1f932d4ae45a8ebee78df4fc3:/lib/dvb/demux.cpp diff --git a/lib/dvb/demux.cpp b/lib/dvb/demux.cpp index c8e71173..f277468d 100644 --- a/lib/dvb/demux.cpp +++ b/lib/dvb/demux.cpp @@ -25,7 +25,7 @@ #else #include -// #define HAVE_ADD_PID +#define HAVE_ADD_PID #ifdef HAVE_ADD_PID #define DMX_ADD_PID _IO('o', 51) @@ -379,7 +379,7 @@ RESULT eDVBTSRecorder::start() dmx_pes_filter_params flt; flt.pes_type = (dmx_pes_type_t)DMX_TAP_TS; - flt.pid = 0x1234; /* FIXME */ + flt.pid = (__u16)-1; flt.input = DMX_IN_FRONTEND; flt.output = DMX_OUT_TAP; flt.flags = 0; @@ -462,6 +462,7 @@ RESULT eDVBTSRecorder::stop() m_thread->stop(); close(m_source_fd); + m_source_fd = -1; if (m_target_filename != "") m_thread->saveTimingInformation(m_target_filename + ".ap"); @@ -510,10 +511,10 @@ RESULT eDVBTSRecorder::startPID(int pid) } m_pids[pid] = fd; #else - eDebug("add pid: %08x", pid); if (::ioctl(m_source_fd, DMX_ADD_PID, pid)) perror("DMX_ADD_PID"); - eDebug("ok"); + else + m_pids[pid] = 1; #endif return 0; } @@ -523,9 +524,12 @@ void eDVBTSRecorder::stopPID(int pid) #ifndef HAVE_ADD_PID if (m_pids[pid] != -1) ::close(m_pids[pid]); - m_pids[pid] = -1; #else - if (::ioctl(m_source_fd, DMX_REMOVE_PID, pid)) - perror("DMX_REMOVE_PID"); + if (m_pids[pid] != -1) + { + if (::ioctl(m_source_fd, DMX_REMOVE_PID, pid)) + perror("DMX_REMOVE_PID"); + } #endif + m_pids[pid] = -1; }