RTP Trace System  1.0
encoderinterface.h
Go to the documentation of this file.
00001 // ##########################################################################
00002 // ####                                                                  ####
00003 // ####                      RTP Audio Server Project                    ####
00004 // ####                    ============================                  ####
00005 // ####                                                                  ####
00006 // #### Encoder Interface                                                ####
00007 // ####                                                                  ####
00008 // #### Version 1.00  --  February 16, 2001                              ####
00009 // ####                                                                  ####
00010 // #### Copyright (C) 1999  Thomas Dreibholz                             ####
00011 // ####               2000  Universität Bonn, Abt. IV                    ####
00012 // ####               2001  EMail: dreibh@iem.uni-due.de                 ####
00013 // ####                     WWW:   https://www.uni-due.de/~be0001        ####
00014 // ####                                                                  ####
00015 // ##########################################################################
00016 
00017 
00018 #ifndef ENCODERINTERFACE_H
00019 #define ENCODERINTERFACE_H
00020 
00021 
00022 #include "system.h"
00023 #include "range.h"
00024 #ifdef USE_TRANSPORTINFO
00025 #include "transportinfo.h"
00026 #else
00027 #include "abstractqosdescription.h"
00028 #endif
00029 
00030 
00031 namespace Coral {
00032 
00033 
00041 struct EncoderPacket
00042 {
00046    void* Buffer;
00047 
00051    cardinal MaxLength;
00052 
00056    cardinal Layer;
00057 
00061    card8 PayloadType;
00062 
00066    bool Marker;
00067 
00072    card8 ErrorCode;
00073 };
00074 
00075 
00076 
00084 class EncoderInterface
00085 {
00086    // ====== Destructor =====================================================
00087    public:
00091    virtual ~EncoderInterface();
00092 
00093 
00094    // ====== Encoder type ===================================================
00100    virtual const card16 getTypeID() const = 0;
00101    
00107    virtual const char* getTypeName() const = 0;
00108 
00109 
00110    // ====== Initialization/Clean-up ========================================
00115    virtual void activate() = 0;
00116    
00121    virtual void deactivate() = 0;
00122    
00127    virtual void reset() = 0;
00128 
00129 
00130    // ====== Encode frame ===================================================
00131 #ifndef USE_TRANSPORTINFO
00132 
00139    virtual bool checkInterval(card64& time, bool& newRUList) = 0;
00140 #endif
00141 
00142 
00153    virtual bool prepareNextFrame(const cardinal headerSize,
00154                                  const cardinal maxPacketSize,
00155                                  const cardinal flags = 0) = 0;
00156 
00166    virtual cardinal getNextPacket(EncoderPacket* packet) = 0;
00167 
00168 
00169    // ====== Settings =======================================================
00170 #ifdef USE_TRANSPORTINFO
00171 
00183    virtual void getTransportInfo(TransportInfo& transportInfo,
00184                                  const cardinal headerSize,
00185                                  const cardinal maxPacketSize,
00186                                  const bool     calculateLevels = true) const = 0;
00187 
00203    virtual void setTransportInfo(TransportInfo& transportInfo,
00204                                  const cardinal headerSize,
00205                                  const cardinal maxPacketSize,
00206                                  const bool     calculateLevels = true) = 0;
00207 
00215    virtual void adaptQuality(const double   fractionLost,
00216                              const cardinal layer) = 0;
00217 
00218 #else
00219 
00229    virtual AbstractQoSDescription* getQoSDescription(
00230                                       const cardinal pktHeaderSize,
00231                                       const cardinal pktMaxSize,
00232                                       const card64   offset) = 0;
00233 
00240    virtual void updateQuality(const AbstractQoSDescription* aqd) = 0;
00241 
00242 #endif
00243 };
00244 
00245 
00246 }
00247 
00248 
00249 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines