Utils/Console: Add short help to 'ls' output
[senf.git] / Socket / Protocols / DVB / DVBDemuxHandles.cc
index d5343e3..f71251e 100644 (file)
@@ -33,6 +33,7 @@
 #include <fcntl.h>
 #include "../../../Utils/Exception.hh"
 
+
 //#include "DVBDemuxHandles.mpp"
 #define prefix_
 ///////////////////////////////cc.p////////////////////////////////////////
@@ -43,8 +44,7 @@
 prefix_ void senf::DVBDemuxSectionSocketProtocol::init_client(unsigned short adapter, unsigned short device)
     const
 {
-    std::string devDemux = str( boost::format(
-            "/dev/dvb/adapter%d/demux%d") % adapter % device);
+    std::string devDemux = str( boost::format("/dev/dvb/adapter%d/demux%d") % adapter % device);
     int f = open(devDemux.c_str(), O_RDONLY | O_NONBLOCK);
     if (f < 0){
         SENF_THROW_SYSTEM_EXCEPTION("Could not open demux device of DVB adapter ") << devDemux << ".";
@@ -58,10 +58,18 @@ prefix_ unsigned senf::DVBDemuxSectionSocketProtocol::available()
     return 4096;
 }
 
-prefix_ void senf::DVBDemuxSectionSocketProtocol::setSectionFilter(struct dmx_sct_filter_params *filter)
+prefix_ void senf::DVBDemuxSectionSocketProtocol::setSectionFilter(unsigned short int pid, unsigned char filter, unsigned int flags, unsigned char mask, unsigned char mode, unsigned int timeout)
     const
 {
-    if (::ioctl(fd(), DMX_SET_FILTER, filter) < 0)
+    struct dmx_sct_filter_params sec_filter;
+    ::memset(&sec_filter, 0, sizeof(struct dmx_sct_filter_params));
+    sec_filter.pid = pid;
+    sec_filter.filter.filter[0] = filter;
+    sec_filter.filter.mask[0] = mask;
+    sec_filter.filter.mode[0] = mode;
+    sec_filter.flags = flags;
+       
+    if (::ioctl(fd(), DMX_SET_FILTER, &sec_filter) < 0)
         SENF_THROW_SYSTEM_EXCEPTION("Could not set section filter of DVB adapter.");
 }
 
@@ -84,10 +92,19 @@ prefix_ unsigned senf::DVBDemuxPESSocketProtocol::available()
     return 4096; //???
 }
 
-prefix_ void senf::DVBDemuxPESSocketProtocol::setPESFilter(struct dmx_pes_filter_params *filter)
+prefix_ void senf::DVBDemuxPESSocketProtocol::setPESFilter(unsigned short int pid, dmx_input_t input, dmx_output_t output, dmx_pes_type_t pesType, unsigned int flags)
     const
 {
-    if (::ioctl(fd(), DMX_SET_PES_FILTER, filter) < 0)
+   
+    struct dmx_pes_filter_params pes_filter;
+        ::memset(&pes_filter, 0, sizeof(struct dmx_pes_filter_params));
+        pes_filter.pid = pid;
+        pes_filter.input = input;
+        pes_filter.output = output;
+        pes_filter.pes_type = pesType;
+        pes_filter.flags = flags;
+        
+    if (::ioctl(fd(), DMX_SET_PES_FILTER, &pes_filter) < 0)
         SENF_THROW_SYSTEM_EXCEPTION("Could not set PES filter of DVB adapter.");
 }