X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FDVB%2FDVBDemuxHandles.hh;h=9b4b73a3852fa0b3763c196d85c18f2adf2e28f9;hb=9428e2877c15dac640efdb075d40cafea554cc88;hp=fe4ce3674f6b9b51c200728db806f2c1b28c862d;hpb=a1a6c76a214ad1935032826713cabaf9ac57bf07;p=senf.git diff --git a/Socket/Protocols/DVB/DVBDemuxHandles.hh b/Socket/Protocols/DVB/DVBDemuxHandles.hh index fe4ce36..9b4b73a 100644 --- a/Socket/Protocols/DVB/DVBDemuxHandles.hh +++ b/Socket/Protocols/DVB/DVBDemuxHandles.hh @@ -23,17 +23,20 @@ /** \file \brief DVBDemuxHandles public header */ -#ifndef HH_DVBDemuxHandles_ -#define HH_DVBDemuxHandles_ 1 +#ifndef HH_SENF_Socket_Protocols_DVB_DVBDemuxHandles_ +#define HH_SENF_Socket_Protocols_DVB_DVBDemuxHandles_ 1 // Custom includes #include "../../../Socket/FramingPolicy.hh" #include "../../../Socket/CommunicationPolicy.hh" #include "../../../Socket/ReadWritePolicy.hh" #include "../../../Socket/ProtocolClientSocketHandle.hh" -#include "DVBDemuxProtocol.hh" +#include "DVBDemuxSocketProtocol.hh" //#include "DVBDemuxHandles.mpp" +#include +#include +#include ///////////////////////////////hh.p//////////////////////////////////////// namespace senf { @@ -49,12 +52,41 @@ namespace senf { NotWriteablePolicy >::policy DVBDemux_Policy; ///< Socket Policy for xxxx - /** \brief xxx + /** \brief Baseclass of various DVBProtocolWrappers which are defined in DVBProtocolWrapper.hh */ - class DVBDemuxSectionProtocol - : public ConcreteSocketProtocol, - public DVBDemuxProtocol + class DVBProtocolWrapper :public boost::enable_shared_from_this { + public: + DVBProtocolWrapper(){} + virtual ~DVBProtocolWrapper(){} + }; + /** \brief Baseclass for DVBSocketProtocols which want use Wrappers for console. + */ + class DVBSocketProtocol : public virtual SocketProtocol { +private: + boost::shared_ptr wrap_; +public: + DVBSocketProtocol() {} + ~DVBSocketProtocol() {} + + void addWrapper(boost::shared_ptr wrap)/**< Binds a wrapper to a DVBProtocol, + so if it is closed the functionality of the wrapper is automatically removed from console.*/ + { + wrap_ = wrap; + } + virtual void close(){ + wrap_.reset(); + SocketProtocol::close(); + + } + }; + + + class DVBDemuxSectionSocketProtocol + : public ConcreteSocketProtocol, + public DVBDemuxSocketProtocol, + public DVBSocketProtocol { + public: /////////////////////////////////////////////////////////////////////////// // internal interface @@ -75,18 +107,25 @@ namespace senf { ///@} - void setSectionFilter(struct dmx_sct_filter_params *filter) const; + void setSectionFilter(unsigned short int pid, + unsigned char filter= 0x3e, + unsigned int flags= DMX_IMMEDIATE_START | DMX_CHECK_CRC, + unsigned char mask = 0xff, + unsigned char mode =0x00, + unsigned int timeout =0x00) const; + }; - typedef ProtocolClientSocketHandle DVBDemuxSectionHandle; + typedef ProtocolClientSocketHandle DVBDemuxSectionHandle; // ---------------------------------------------------------------- /** \brief xxx */ - class DVBDemuxPESProtocol - : public ConcreteSocketProtocol, - public DVBDemuxProtocol + class DVBDemuxPESSocketProtocol + : public ConcreteSocketProtocol, + public DVBDemuxSocketProtocol, + public DVBSocketProtocol { public: /////////////////////////////////////////////////////////////////////////// @@ -108,10 +147,10 @@ namespace senf { ///@} - void setPESFilter(struct dmx_pes_filter_params *filter) const; + void setPESFilter(unsigned short int pid, dmx_input_t input, dmx_output_t output, dmx_pes_type_t pesType, unsigned int flags)const; }; - typedef ProtocolClientSocketHandle DVBDemuxPESHandle; + typedef ProtocolClientSocketHandle DVBDemuxPESHandle; // ---------------------------------------------------------------- @@ -119,9 +158,9 @@ namespace senf { /** \brief xxx */ - class DVBDvrProtocol - : public ConcreteSocketProtocol, - public DVBDemuxProtocol + class DVBDvrSocketProtocol + : public ConcreteSocketProtocol, + public DVBDemuxSocketProtocol { public: /////////////////////////////////////////////////////////////////////////// @@ -144,7 +183,7 @@ namespace senf { ///@} }; - typedef ProtocolClientSocketHandle DVBDvrHandle; + typedef ProtocolClientSocketHandle DVBDvrHandle; ///@}