RTP Trace System  1.0
traceencoderrepository.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 Encoder 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 TRACEENCODERREPOSITORY_H
00023 #define TRACEENCODERREPOSITORY_H
00024 
00025 
00026 #include "system.h"
00027 #include "synchronizable.h"
00028 #include "encoderrepositoryinterface.h"
00029 #include "traceencoderinterface.h"
00030 
00031 
00032 #include <multimap.h>
00033 #include <algo.h>
00034 
00035 
00036 namespace Coral {
00037 
00038 
00046 class TraceEncoderRepository : virtual public EncoderRepositoryInterface,
00047                                virtual public TraceEncoderInterface
00048 {
00049    // ====== Constructor/Destructor =========================================
00050    public:
00054    TraceEncoderRepository();
00055 
00059    ~TraceEncoderRepository();
00060 
00061 
00062    // ====== Repository functionality =======================================
00069    bool addEncoder(TraceEncoderInterface* encoder);
00070 
00076    void removeEncoder(TraceEncoderInterface* encoder);
00077 
00083    bool selectEncoderForTypeID(const card16 typeID);
00084 
00089    inline void setAutoDelete(const bool on);
00090 
00096    EncoderInterface* getCurrentEncoder() const;
00097 
00103    TraceEncoderInterface* getCurrentTraceEncoder() const;
00104 
00105 
00106    // ====== EncoderInterface implementation ================================
00112    const card16 getTypeID() const;
00113 
00119    const char* getTypeName() const;
00120 
00126    void activate();
00127 
00133    void deactivate();
00134 
00140    void reset();
00141 
00147    bool checkInterval(card64& time, bool& newRUList);
00148 
00149 
00155    bool prepareNextFrame(const cardinal headerSize,
00156                          const cardinal maxPacketSize,
00157                          const cardinal flags);
00158 
00164    cardinal getNextPacket(EncoderPacket* encoderPacket);
00165 
00166 
00172    AbstractQoSDescription* getQoSDescription(const cardinal pktHeaderSize,
00173                                              const cardinal pktMaxSize,
00174                                              const card64   position);
00175 
00181    void updateQuality(const AbstractQoSDescription* aqd);
00182 
00183 
00184    // ====== TraceEncoderInterface implementation ===========================
00190    double getWantedUtilization() const;
00191 
00197    void setWantedUtilization(const double utilization);
00198 
00204    int8 getStreamPriority() const;
00205 
00211    void setStreamPriority(const int8 priority);
00212 
00218    int8 getSessionPriority() const;
00219 
00225    void setSessionPriority(const int8 priority);
00226 
00232    double getMaxTransferDelay() const;
00233 
00239    void setMaxTransferDelay(const double delay);
00240 
00246    card32 getFlags() const;
00247 
00253    void setFlags(const card32 flags);
00254 
00260    card64 getMinWantedBandwidth() const;
00261 
00267    card64 getMaxWantedBandwidth() const;
00268 
00274    void setMinWantedBandwidth(const card64 bandwidth);
00275 
00281    void setMaxWantedBandwidth(const card64 bandwidth);
00282 
00283 
00284    // ====== Private data ===================================================
00285    private:
00286    multimap<const card16,TraceEncoderInterface*> TraceEncoderRepository;
00287    TraceEncoderInterface*                        Encoder;
00288    bool                                          AutoDelete;
00289 };
00290 
00291 
00292 }
00293 
00294 
00295 #include "traceencoderrepository.icc"
00296 
00297 
00298 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines