X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FMPEGDVBBundle%2FTransportPacket.hh;h=83406f5fdd2d0afafb43e3b8a6bd1a9fef26ac46;hb=bbff2057f39e475b00e598cae018c68db0e16a82;hp=86dba04bfcfb458decde7420a7295d99204451a3;hpb=dfdc2f4338b1f366548033dd494db573a1032276;p=senf.git diff --git a/Packets/MPEGDVBBundle/TransportPacket.hh b/Packets/MPEGDVBBundle/TransportPacket.hh index 86dba04..83406f5 100644 --- a/Packets/MPEGDVBBundle/TransportPacket.hh +++ b/Packets/MPEGDVBBundle/TransportPacket.hh @@ -1,9 +1,9 @@ -// $Id:DatagramSection.hh 327 2007-07-20 10:03:44Z tho $ +// $Id$ // // Copyright (C) 2007 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Thorsten Horstmann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -20,51 +20,92 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +/** \file + \brief TransportPacket public header */ + #ifndef HH_TransportPacket_ #define HH_TransportPacket_ 1 // Custom includes #include -#include "Packets/PacketType.hh" -#include "Packets/ParseInt.hh" -#include "Packets/PacketRegistry.hh" -#include "Packets/PacketParser.hh" +#include "../../Packets/Packets.hh" //#include "TransportPacket.mpp" ///////////////////////////////hh.p//////////////////////////////////////// namespace senf { - - ///\addtogroup protocolbundle_mpegdvb - ///@{ - + + /** \brief Parse a Transport Stream packet + + Parser implementing the header of a MPEG Transport Stream packet. + + \see TransportPacketType + */ struct Parse_TransportPacket : public PacketParserBase { - SENF_PACKET_PARSER_INIT(Parse_TransportPacket); +# include SENF_FIXED_PARSER() + + SENF_PARSER_FIELD ( sync_byte , Parse_UInt8 ); - typedef Parse_Flag < 0 > Parse_tei; // transport_error_indicator - typedef Parse_Flag < 1 > Parse_pusi; // payload_unit_start_indicator - typedef Parse_Flag < 2 > Parse_transportPrio; // transport_priority - typedef Parse_UIntField < 2, 16 > Parse_pid; - typedef Parse_UIntField < 0, 2 > Parse_tsc; // transport_scrambling_control - typedef Parse_UIntField < 2, 4 > Parse_adaptCtrl; // adaptation_field_control - typedef Parse_UIntField < 4, 8 > Parse_contCounter; // continuity_counter + SENF_PARSER_BITFIELD ( transport_error_indicator , 1 , bool ); + SENF_PARSER_BITFIELD ( pusi , 1 , bool ); + SENF_PARSER_BITFIELD ( transport_priority , 1 , bool ); + SENF_PARSER_BITFIELD ( pid , 13 , unsigned ); + SENF_PARSER_BITFIELD ( transport_scrmbl_ctrl , 2 , unsigned ); + SENF_PARSER_BITFIELD ( adaptation_field_ctrl , 2 , unsigned ); + SENF_PARSER_BITFIELD ( continuity_counter , 4 , unsigned ); + + SENF_PARSER_FINALIZE( Parse_TransportPacket ); - /////////////////////////////////////////////////////////////////////////// - - SENF_PACKET_PARSER_DEFINE_FIXED_FIELDS( - ((Field ) ( syncByte, Parse_UInt8 )) - ((OverlayField) ( transport_error_indicator, Parse_tei )) - ((OverlayField) ( pusi, Parse_pusi )) - ((OverlayField) ( transport_priority, Parse_transportPrio )) - ((Field ) ( pid, Parse_pid )) - ((OverlayField) ( transport_scrmbl_ctrl, Parse_tsc )) - ((OverlayField) ( adaptation_field_ctrl, Parse_adaptCtrl )) - ((Field ) ( continuity_counter, Parse_contCounter )) - ); - +// Parse_UInt8 payload_pointer() const { +// return parse( Parse_TransportPacket::fixed_bytes ); +// } }; + /** \brief Transport Stream packet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SyntaxNo. of bits
transport_packet() {
\ref Parse_TransportPacket::sync_byte() "sync_byte"8
\ref Parse_TransportPacket::transport_error_indicator() "transport_error_indicator"1
\ref Parse_TransportPacket::pusi() "payload_uni_start_indicator"1
\ref Parse_TransportPacket::transport_priority() "transport_priority"1
\ref Parse_TransportPacket::pid() "PID"13
\ref Parse_TransportPacket::transport_scrmbl_ctrl() "transport_scrambling_control"2
\ref Parse_TransportPacket::adaptation_field_ctrl() "adaptation_field_control"2
\ref Parse_TransportPacket::continuity_counter() "continuity_counter"4
}
+ + \par Packet type (typedef): + \ref TransportPacket + + \par Fields: + \ref Parse_TransportPacket + + \ingroup protocolbundle_mpegdvb + */ struct TransportPacketType : public PacketTypeBase, public PacketTypeMixin @@ -74,16 +115,16 @@ namespace senf { typedef Parse_TransportPacket parser; using mixin::nextPacketRange; - // using mixin::nextPacketType; using mixin::init; using mixin::initSize; static void dump(packet p, std::ostream & os); }; - + + /** \brief Transport packet typedef */ typedef TransportPacketType::packet TransportPacket; - ///@} + #define TRANSPORT_PACKET_SYNC_BYTE 0x47 }