|
|
// ########################################################################## // #### #### // #### Master Thesis Implementation #### // #### Management of Layered Variable Bitrate Multimedia Streams over #### // #### DiffServ with A Priori Knowledge #### // #### #### // #### ================================================================ #### // #### #### // #### #### // #### Trace Encoder #### // #### #### // #### Version 1.00 -- October 10, 2000 #### // #### #### // #### Copyright (C) 2000 Thomas Dreibholz #### // #### University of Bonn, Department of Computer Science IV #### // #### EMail: Dreibholz@bigfoot.com #### // #### WWW: http://www.bigfoot.com/~dreibholz/diplom/index.html #### // #### #### // ########################################################################## #ifndef TRACEENCODER_H #define TRACEENCDOER_H #include "system.h" #include "traceencoderinterface.h" #include "tdtfmediareader.h" #include "abstractqosdescription.h" #include "rtppacket.h" namespace Coral { /** * This class is a trace encoder. * * @short Trace Encoder * @author Thomas Dreibholz (Dreibholz@bigfoot.com) * @version 1.0 */ class TraceEncoder : public TraceEncoderInterface { // ====== Constructor/Destructor ========================================= public: /** * Constructor for the trace encoder. * * @param traceReader TDTFReader for the trace input. */ TraceEncoder(TDTFMediaReader* audioReader); /** * Destructor. */ ~TraceEncoder(); // ====== EncoderInterface implementation ================================ /** * getTypeID() implementation of EncoderInterface. * * @see EncoderInterface#getTypeID */ const card16 getTypeID() const; /** * getTypeName implementation of EncoderInterface. * * @see EncoderInterface#getTypeName */ const char* getTypeName() const; /** * activate() implementation of EncoderInterface. * * @see EncoderInterface#activate */ void activate(); /** * deactivate() implementation of EncoderInterface. * * @see EncoderInterface#deactivate */ void deactivate(); /** * reset() implementation of EncoderInterface. * * @see EncoderInterface#reset */ void reset(); /** * checkInterval() implementation of EncoderInterface. * * @see EncoderInterface#checkInterval */ card64 checkInterval(); /** * prepareNextFrame() implementation of EncoderInterface. * * @see EncoderInterface#prepareNextFrame */ bool prepareNextFrame(const cardinal headerSize, const cardinal maxPacketSize, const cardinal flags); /** * getNextPacket() implementation of EncoderInterface. * * @see EncoderInterface#getNextPacket */ cardinal getNextPacket(EncoderPacket* encoderPacket); /** * getQoSDescription() implementation of EncoderInterface. * * @see EncoderInterface#getQoSDescription */ AbstractQoSDescription* getQoSDescription(const cardinal pktHeaderSize, const cardinal pktMaxSize, const card64 offset); /** * updateQuality() implementation of EncoderInterface. * * @see EncoderInterface#updateQuality */ void updateQuality(const AbstractQoSDescription* aqd); // ====== TraceEncoderInterface implementation =========================== /** * getFrameRate() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#getFrameRate */ double getFrameRate() const; /** * setFrameRate() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#setFrameRate */ void setFrameRate(const double frameRate); /** * getWantedUtilization() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#getWantedUtilization */ double getWantedUtilization() const; /** * setWantedUtilization() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#setWantedUtilization */ void setWantedUtilization(const double utilization); /** * getStreamPriority() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#getStreamPriority */ int8 getStreamPriority() const; /** * setStreamPriority() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#setStreamPriority */ void setStreamPriority(const int8 priority); /** * getMaxWantedDelay() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#getMaxWantedDelay */ double getMaxWantedDelay() const; /** * setMaxWantedDelay() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#setMaxWanted */ void setMaxWantedDelay(const double delay); /** * getMinWantedBandwidth() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#getMinWantedBandwidth */ cardinal getMinWantedBandwidth() const; /** * getMaxWantedBandwidth() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#getMaxWantedBandwidth */ cardinal getMaxWantedBandwidth() const; /** * setMinWantedBandwidth() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#setMinWantedBandwidth */ void setMinWantedBandwidth(const cardinal bandwidth); /** * setMaxWantedBandwidth() implementation of TraceEncoderInterface. * * @see TraceEncoderInterface#setMaxWantedBandwidth */ void setMaxWantedBandwidth(const cardinal bandwidth); // ====== Private data =================================================== private: TDTFMediaReader* Source; double ManagerFrameRate; double ManagerScaleFactor[RTPConstants::RTPMaxQualityLayers]; cardinal ManagerFrameSizeLimit[RTPConstants::RTPMaxQualityLayers]; double WantedUtilization; double MaxWantedDelay; cardinal MinWantedBandwidth; cardinal MaxWantedBandwidth; double CurrentUtilization; cardinal CurrentBandwidth; double FrameFrameRate; double FrameUtilization; card64 FramePosition; card64 FrameMaxPosition; cardinal FrameBandwidth; cardinal FrameSize[RTPConstants::RTPMaxQualityLayers]; cardinal Offset[RTPConstants::RTPMaxQualityLayers]; cardinal FrameID[RTPConstants::RTPMaxQualityLayers]; cardinal Layers; cardinal SendError; card8 ErrorCode; int8 StreamPriority; bool Scaled; }; } #endif
Generated by: viper@odin on Mon Oct 16 11:49:26 2000, using kdoc 2.0a36. |