DVBProtocolWrapper.hh
Go to the documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef HH_SENF_Socket_Protocols_DVB_DVBProtocolWrapper_
00025 #define HH_SENF_Socket_Protocols_DVB_DVBProtocolWrapper_ 1
00026
00027
00028 #include <senf/Utils/Console/ScopedDirectory.hh>
00029 #include <senf/Utils/Console/Traits.hh>
00030 #include "DVBDemuxHandles.hh"
00031
00032
00033
00034 SENF_CONSOLE_REGISTER_ENUM( dmx_input_t, (DMX_IN_FRONTEND)(DMX_IN_DVR) );
00035 SENF_CONSOLE_REGISTER_ENUM( dmx_output_t, (DMX_OUT_DECODER)(DMX_OUT_TAP)(DMX_OUT_TS_TAP) );
00036 SENF_CONSOLE_REGISTER_ENUM( dmx_pes_type_t, (DMX_PES_AUDIO0)(DMX_PES_VIDEO0)(DMX_PES_TELETEXT0)(DMX_PES_SUBTITLE0)(DMX_PES_PCR0)
00037 (DMX_PES_AUDIO1)(DMX_PES_VIDEO1)(DMX_PES_TELETEXT1)(DMX_PES_SUBTITLE1)(DMX_PES_PCR1)
00038 (DMX_PES_AUDIO2)(DMX_PES_VIDEO2)(DMX_PES_TELETEXT2)(DMX_PES_SUBTITLE2)(DMX_PES_PCR2)
00039 (DMX_PES_AUDIO3)(DMX_PES_VIDEO3)(DMX_PES_TELETEXT3)(DMX_PES_SUBTITLE3)(DMX_PES_PCR3)
00040 (DMX_PES_OTHER));
00041
00042 namespace senf {
00043
00047 class DVBSectionProtocolWrapper : public DVBProtocolWrapper
00048 {
00049 private:
00050 const DVBDemuxSectionSocketProtocol& protocol;
00051
00052 public:
00053 enum Flags {CHECK_CRC = DMX_CHECK_CRC,
00054 ONESHOT = DMX_ONESHOT,
00055 IMMEDIATE_START = DMX_IMMEDIATE_START,
00056 KERNEL_CLIENT = DMX_KERNEL_CLIENT};
00057 senf::console::ScopedDirectory<DVBSectionProtocolWrapper> dir;
00058
00059 DVBSectionProtocolWrapper(senf::DVBDemuxSectionHandle sh);
00060 ~DVBSectionProtocolWrapper() { }
00061
00062 void setSectionFilter(unsigned short int pid, u_int8_t filter,
00063 unsigned int flags, u_int8_t mask, u_int8_t mode, unsigned int timeout);
00064
00065 void setBufferSize(unsigned long size);
00067
00071 void startFiltering();
00072 void stopFiltering();
00073 };
00074
00075 SENF_CONSOLE_REGISTER_ENUM_MEMBER(DVBSectionProtocolWrapper, Flags,
00076 (CHECK_CRC)(ONESHOT)(IMMEDIATE_START)(KERNEL_CLIENT));
00077
00078
00079 class DVBPESProtocolWrapper : public senf::DVBProtocolWrapper
00080 {
00081 private:
00082 const senf::DVBDemuxPESSocketProtocol& protocol;
00083
00084 public:
00085 enum Flags {CHECK_CRC = DMX_CHECK_CRC,
00086 ONESHOT = DMX_ONESHOT,
00087 IMMEDIATE_START = DMX_IMMEDIATE_START,
00088 KERNEL_CLIENT = DMX_KERNEL_CLIENT};
00089 senf::console::ScopedDirectory<DVBPESProtocolWrapper> dir;
00090
00091 DVBPESProtocolWrapper(senf::DVBDemuxPESHandle sh);
00092 ~DVBPESProtocolWrapper() { };
00093
00094 void setPESFilter(unsigned short int pid, dmx_input_t input,
00095 dmx_output_t output, dmx_pes_type_t pesType, unsigned int flags);
00096 void startFiltering();
00097 void stopFiltering();
00098 };
00099
00100 SENF_CONSOLE_REGISTER_ENUM_MEMBER(DVBPESProtocolWrapper, Flags,
00101 (CHECK_CRC)(ONESHOT)(IMMEDIATE_START)(KERNEL_CLIENT));
00102 }
00103
00104
00105 #include "DVBProtocolWrapper.cci"
00106
00107
00108 #endif
00109