RTP Trace System  1.0
decoderinterface.h
Go to the documentation of this file.
00001 // ##########################################################################
00002 // ####                                                                  ####
00003 // ####                      RTP Audio Server Project                    ####
00004 // ####                    ============================                  ####
00005 // ####                                                                  ####
00006 // #### Decoder 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 DECODERINTERFACE_H
00019 #define DECODERINTERFACE_H
00020 
00021 
00022 #include "system.h"
00023 #ifdef USE_TRANSPORTINFO
00024 #include "transportinfo.h"
00025 #endif
00026 #include "sourcestateinfo.h"
00027 #include "mediainfo.h"
00028 
00029 
00030 namespace Coral {
00031 
00032 
00040 struct DecoderPacket
00041 {
00045    void* Buffer;
00046 
00050    cardinal Length;
00051 
00055    card16 SequenceNumber;
00056 
00060    card32 TimeStamp;
00061 
00065    card8 PayloadType;
00066 
00070    bool Marker;
00071 
00072 
00076    SourceStateInfo** SSIArray;
00077 
00078 
00085    cardinal Layer;
00086 
00091    cardinal Layers;
00092 };
00093 
00094 
00095 
00103 class DecoderInterface
00104 {
00105    // ====== Destructor =====================================================
00106    public:
00110    virtual ~DecoderInterface();
00111 
00112 
00113    // ====== Decoder type ===================================================
00119    virtual const card16 getTypeID() const = 0;
00120    
00126    virtual const char* getTypeName() const = 0;
00127 
00128 
00129    // ====== Initialization/Clean-up ========================================
00134    virtual void activate() = 0;
00135    
00140    virtual void deactivate() = 0;
00141    
00146    virtual void reset() = 0;
00147 
00148 
00149 #ifdef USE_TRANSPORTINFO
00150    // ====== Get TransportInfo ==============================================
00163    virtual void getTransportInfo(TransportInfo& transportInfo,
00164                                  const cardinal headerSize,
00165                                  const cardinal maxPacketSize,
00166                                  const bool     calculateLevels = true) const = 0;
00167 #endif
00168 
00169 
00170    // ====== Check next packet ==============================================
00178    virtual bool checkNextPacket(DecoderPacket* packet) = 0;
00179 
00180 
00181    // ====== Decode next packet =============================================
00187    virtual void handleNextPacket(const DecoderPacket* decoderPacket) = 0;
00188 
00189 
00190    // ====== Status functions ===============================================
00196    virtual void getMediaInfo(MediaInfo& mediaInfo) const = 0;
00197 
00204    virtual card8 getErrorCode() const = 0;
00205    
00211    virtual card64 getPosition() const = 0;
00212    
00218    virtual card64 getMaxPosition() const = 0;
00219 };
00220 
00221 
00222 }
00223 
00224 
00225 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines