X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Packets%2FMPEGDVBBundle%2FTransportPacket.hh;h=38200d523778fdd4cfd262c4fdc0de20a522060b;hb=b89e3166f7680755683dccee5e48cb3a820185c0;hp=2bf00b37ec08dad3438c13f68bcb237c20ced56e;hpb=c05c8072901783422ac21cd9cc2438cd610b46f1;p=senf.git diff --git a/Packets/MPEGDVBBundle/TransportPacket.hh b/Packets/MPEGDVBBundle/TransportPacket.hh index 2bf00b3..38200d5 100644 --- a/Packets/MPEGDVBBundle/TransportPacket.hh +++ b/Packets/MPEGDVBBundle/TransportPacket.hh @@ -23,11 +23,10 @@ /** \file \brief TransportPacket public header */ -#ifndef HH_TransportPacket_ -#define HH_TransportPacket_ 1 +#ifndef HH_SENF_Packets_MPEGDVBBundle_TransportPacket_ +#define HH_SENF_Packets_MPEGDVBBundle_TransportPacket_ 1 // Custom includes -#include #include "../../Packets/Packets.hh" //#include "TransportPacket.mpp" @@ -38,34 +37,37 @@ namespace senf { /** \brief Parse a Transport Stream packet Parser implementing the header of a MPEG Transport Stream packet. + \image html TransportPacket.png \see TransportPacketType */ struct TransportPacketParser : public PacketParserBase { -# include SENF_FIXED_PARSER() +# include SENF_PARSER() - SENF_PARSER_FIELD ( sync_byte, UInt8Parser ); + SENF_PARSER_FIELD ( sync_byte, UInt8Parser ); - 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_BITFIELD ( transport_error_indicator, 1, bool ); + SENF_PARSER_BITFIELD_RO ( 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_PRIVATE_VARIANT ( pointer_field_, pusi, + (senf::VoidPacketParser) (UInt8Parser) ); + SENF_PARSER_FINALIZE( TransportPacketParser ); + UInt8Parser pointer_field() const; void init_fields() const; + void setPUSI(bool pusi) const; + SENF_PARSER_INIT() { defaultInit(); init_fields(); } - -// UInt8Parser payload_pointer() const { -// return parse( TransportPacketParser::fixed_bytes ); -// } }; /** \brief Transport Stream packet @@ -116,14 +118,17 @@ namespace senf { : public PacketTypeBase, public PacketTypeMixin { +#ifndef DOXYGEN typedef PacketTypeMixin mixin; - typedef ConcretePacket packet; - typedef TransportPacketParser parser; +#endif + typedef ConcretePacket packet; ///< Transport packet typedef + typedef TransportPacketParser parser; ///< typedef to the parser of Transport packet using mixin::nextPacketRange; using mixin::init; using mixin::initSize; + /** \brief Dump given Transport packet in readable form to given output stream */ static void dump(packet p, std::ostream & os); static const byte SYNC_BYTE = 0x47; };