DVBProtocolWrapper.hh

Go to the documentation of this file.
00001 // $Id: DVBProtocolWrapper.hh 1742 2010-11-04 14:51:56Z g0dil $
00002 //
00003 // Copyright (C) 2007
00004 // Fraunhofer (FOKUS)
00005 // Competence Center NETwork research (NET), St. Augustin, GERMANY
00006 //     Anton Gillert <atx@berlios.de>
00007 //
00008 // This program is free software; you can redistribute it and/or modify
00009 // it under the terms of the GNU General Public License as published by
00010 // the Free Software Foundation; either version 2 of the License, or
00011 // (at your option) any later version.
00012 //
00013 // This program is distributed in the hope that it will be useful,
00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 // GNU General Public License for more details.
00017 //
00018 // You should have received a copy of the GNU General Public License
00019 // along with this program; if not, write to the
00020 // Free Software Foundation, Inc.,
00021 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00022 
00023 
00024 #ifndef HH_SENF_Socket_Protocols_DVB_DVBProtocolWrapper_
00025 #define HH_SENF_Socket_Protocols_DVB_DVBProtocolWrapper_ 1
00026 
00027 // Custom includes
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 //#include "DVBProtocolWrapper.ct"
00107 //#include "DVBProtocolWrapper.cti"
00108 #endif
00109