X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FMPEGDVBBundle%2FMPESection.hh;h=7b7879db38471fd6339632de3ac1be30fabe4a07;hb=fb2fe88ee9a9d2a777ecaf3327d04b60479fcc8d;hp=89a344b83c6f9f4909c2bc2085f392e38de949a8;hpb=f73fa16ed5abdce272ac77f8b8b9ef2b9922c266;p=senf.git diff --git a/Packets/MPEGDVBBundle/MPESection.hh b/Packets/MPEGDVBBundle/MPESection.hh index 89a344b..7b7879d 100644 --- a/Packets/MPEGDVBBundle/MPESection.hh +++ b/Packets/MPEGDVBBundle/MPESection.hh @@ -1,8 +1,8 @@ // $Id:MPESection.hh 560 2007-12-13 14:39:37Z tho $ // // Copyright (C) 2007 -// Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Thorsten Horstmann // // This program is free software; you can redistribute it and/or modify @@ -23,8 +23,8 @@ /** \file \brief MPESection public header */ -#ifndef HH_MPESection_ -#define HH_MPESection_ 1 +#ifndef HH_SENF_Packets_MPEGDVBBundle_MPESection_ +#define HH_SENF_Packets_MPEGDVBBundle_MPESection_ 1 // Custom includes #include @@ -44,31 +44,32 @@ namespace senf { SENF_PARSER_BITFIELD ( table_boundary, 1, bool ); SENF_PARSER_BITFIELD ( frame_boundary, 1, bool ); SENF_PARSER_BITFIELD ( address, 18, unsigned ); - + SENF_PARSER_FINALIZE( MPERealTimeParametersParser ); }; - + /** \brief Parse a MPE Section - + Parser implementing the header of a MPE Section - + \see MPESectionType */ - struct MPESectionParser : public PacketParserBase + class MPESectionParser : public PacketParserBase { + public: # include SENF_FIXED_PARSER() SENF_PARSER_FIELD( table_id, UInt8Parser ); - + SENF_PARSER_BITFIELD ( section_syntax_indicator, 1, bool ); SENF_PARSER_BITFIELD ( private_indicator, 1, bool ); SENF_PARSER_PRIVATE_BITFIELD( reserved_1, 2, unsigned ); SENF_PARSER_BITFIELD ( section_length, 12, unsigned ); - + SENF_PARSER_FIELD( mac_addr_6, UInt8Parser ); SENF_PARSER_FIELD( mac_addr_5, UInt8Parser ); - + SENF_PARSER_PRIVATE_BITFIELD( reserved_2, 2, unsigned ); SENF_PARSER_BITFIELD ( payload_scrmbl_ctrl, 2, unsigned ); SENF_PARSER_BITFIELD ( addr_scrmbl_ctrl, 2, unsigned ); @@ -79,11 +80,11 @@ namespace senf { SENF_PARSER_FIELD( last_section_num, UInt8Parser ); SENF_PARSER_FIELD( real_time_parameters, MPERealTimeParametersParser ); - + SENF_PARSER_FINALIZE( MPESectionParser ); - + SENF_PARSER_PRIVATE_BITFIELD( ip_datagram_version, 4, unsigned ); - + SENF_PARSER_INIT() { table_id() = 0x3e; section_syntax_indicator() = 1; @@ -94,18 +95,19 @@ namespace senf { addr_scrmbl_ctrl() = 0; curr_next_indicator() = 1; } - + UInt32Parser crc() const { return parse( data().size()-4 ); } - -// typedef boost::crc_optimal<32, 0x04C11DB7, 0xFFFFFFFF, 0, false, false> crc32_t; -// boost::uint32_t calcCrc() const; - + boost::uint32_t calcCrc() const; + friend class MPESectionType; + + private: + typedef boost::crc_optimal<32, 0x04C11DB7, 0xFFFFFFFF, 0, false, false> crc32_t; }; - - + + /** \brief MPE Section - + \par Packet type (typedef): \ref MPESection @@ -124,14 +126,14 @@ namespace senf { using mixin::nextPacketRange; using mixin::init; - + static void dump(packet p, std::ostream & os); static void finalize(packet p); static factory_t nextPacketType(packet p); static PacketParserBase::size_type initSize(); static PacketParserBase::size_type initHeadSize(); }; - + typedef ConcretePacket MPESection; } @@ -142,7 +144,7 @@ namespace senf { //#include "MPESection.cti" #endif - + // Local Variables: // mode: c++ // fill-column: 100