RTP Trace System  1.0
tracedecoderrepository.h
Go to the documentation of this file.
00001 // ##########################################################################
00002 // ####                                                                  ####
00003 // ####                    Master Thesis Implementation                  ####
00004 // ####  Management of Layered Variable Bitrate Multimedia Streams over  ####
00005 // ####                  DiffServ with A Priori Knowledge                ####
00006 // ####                                                                  ####
00007 // #### ================================================================ ####
00008 // ####                                                                  ####
00009 // ####                                                                  ####
00010 // #### Trace Decoder Repository                                         ####
00011 // ####                                                                  ####
00012 // #### Version 1.00  --  February 19, 2001                              ####
00013 // ####                                                                  ####
00014 // #### Copyright (C) 2000/2001 Thomas Dreibholz                         ####
00015 // #### University of Bonn, Department of Computer Science IV            ####
00016 // #### EMail: dreibh@iem.uni-due.de                                     ####
00017 // #### WWW:   https://www.uni-due.de/~be0001/diplom/index.html          ####
00018 // ####                                                                  ####
00019 // ##########################################################################
00020 
00021 
00022 #ifndef TRACEDECODERREPOSITORY_H
00023 #define TRACEDECODERREPOSITORY_H
00024 
00025 
00026 #include "system.h"
00027 #include "tracedecoderinterface.h"
00028 #include "decoderrepositoryinterface.h"
00029 
00030 
00031 #include <multimap.h>
00032 #include <algo.h>
00033 
00034 
00035 namespace Coral {
00036 
00037 
00045 class TraceDecoderRepository : virtual public DecoderRepositoryInterface,
00046                                virtual public TraceDecoderInterface
00047 {
00048    public:
00049    // ====== Constructor/Destructor =========================================
00053    TraceDecoderRepository();
00054 
00058    ~TraceDecoderRepository();
00059 
00060 
00061    // ====== Repository functionality =======================================
00068    bool addDecoder(TraceDecoderInterface* decoder);
00069 
00075    void removeDecoder(TraceDecoderInterface* decoder);
00076 
00082    bool selectDecoderForTypeID(const card16 typeID);
00083 
00088    inline void setAutoDelete(const bool on);
00089 
00095    DecoderInterface* getCurrentDecoder() const;
00096 
00102    TraceDecoderInterface* getCurrentTraceDecoder() const;
00103 
00104 
00105    // ====== DecoderInterface implementation ================================
00111    const card16 getTypeID() const;
00112 
00118    const char* getTypeName() const;
00119 
00125    void activate();
00126 
00132    void deactivate();
00133 
00139    void reset();
00140 
00146    void getMediaInfo(MediaInfo& mediaInfo) const;
00147 
00153    card8 getErrorCode() const;
00154 
00160    card64 getPosition() const;
00161 
00167    card64 getMaxPosition() const;
00168 
00174    bool checkNextPacket(DecoderPacket* decoderPacket);
00175 
00181    void handleNextPacket(const DecoderPacket* decoderPacket);
00182 
00183 
00184    // ====== TraceDecoderInterface implementation ===========================
00190    double getFrameRate() const;
00191 
00197    double getUtilization() const;
00198 
00204    card32 getFlags() const;
00205 
00211    Range<card64> getBandwidth() const;
00212 
00218    int8 getStreamPriority() const;
00219 
00225    int8 getSessionPriority() const;
00226 
00227 
00228    // ====== Private data ===================================================
00229    private:
00230    multimap<const card16,TraceDecoderInterface*> TraceDecoderRepository;
00231    TraceDecoderInterface*                        Decoder;
00232    bool                                          AutoDelete;
00233 };
00234 
00235 
00236 }
00237 
00238 
00239 #include "tracedecoderrepository.icc"
00240 
00241 
00242 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines