RTP Audio System  2.0.0
encoderinterface.h
Go to the documentation of this file.
00001 // ##########################################################################
00002 // ####                                                                  ####
00003 // ####                      RTP Audio Server Project                    ####
00004 // ####                    ============================                  ####
00005 // ####                                                                  ####
00006 // #### Encoder Interface                                                ####
00007 // ####                                                                  ####
00008 // ####           Copyright (C) 1999-2012 by Thomas Dreibholz            ####
00009 // ####                                                                  ####
00010 // #### Contact:                                                         ####
00011 // ####    EMail: dreibh@iem.uni-due.de                                  ####
00012 // ####    WWW:   https://www.nntb.no/~dreibh/rtpaudio                ####
00013 // ####                                                                  ####
00014 // #### ---------------------------------------------------------------- ####
00015 // ####                                                                  ####
00016 // #### This program is free software: you can redistribute it and/or    ####
00017 // #### modify it under the terms of the GNU General Public License as   ####
00018 // #### published by the Free Software Foundation, either version 3 of   ####
00019 // #### the License, or (at your option) any later version.              ####
00020 // ####                                                                  ####
00021 // #### This program is distributed in the hope that it will be useful,  ####
00022 // #### but WITHOUT ANY WARRANTY; without even the implied warranty of   ####
00023 // #### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    ####
00024 // #### GNU General Public License for more details.                     ####
00025 // ####                                                                  ####
00026 // #### You should have received a copy of the GNU General Public        ####
00027 // #### License along with this program.  If not, see                    ####
00028 // #### <http://www.gnu.org/licenses/>.                                  ####
00029 // ####                                                                  ####
00030 // ##########################################################################
00031 // $Id: encoderinterface.h 1293 2011-12-19 14:59:28Z dreibh $
00032 
00033 
00034 #ifndef ENCODERINTERFACE_H
00035 #define ENCODERINTERFACE_H
00036 
00037 
00038 #include "tdsystem.h"
00039 #include "abstractqosdescription.h"
00040 
00041 
00049 struct EncoderPacket
00050 {
00054    void* Buffer;
00055 
00059    cardinal MaxLength;
00060 
00064    cardinal Layer;
00065 
00069    card8 PayloadType;
00070 
00074    bool Marker;
00075 
00080    card8 ErrorCode;
00081 };
00082 
00083 
00084 
00092 class EncoderInterface
00093 {
00094    // ====== Encoder type ===================================================
00095    public:
00101    virtual const card16 getTypeID() const = 0;
00102 
00108    virtual const char* getTypeName() const = 0;
00109 
00110 
00111    // ====== Initialization/Clean-up ========================================
00116    virtual void activate() = 0;
00117 
00122    virtual void deactivate() = 0;
00123 
00128    virtual void reset() = 0;
00129 
00130 
00131    // ====== Encode frame ===================================================
00139    virtual bool checkInterval(card64& time, bool& newRUList) = 0;
00140 
00151    virtual bool prepareNextFrame(const cardinal headerSize,
00152                                  const cardinal maxPacketSize,
00153                                  const cardinal flags = 0) = 0;
00154 
00164    virtual cardinal getNextPacket(EncoderPacket* packet) = 0;
00165 
00166 
00167    // ====== Settings =======================================================
00173    virtual double getFrameRate() const = 0;
00174 
00184    virtual AbstractQoSDescription* getQoSDescription(
00185                                       const cardinal pktHeaderSize,
00186                                       const cardinal pktMaxSize,
00187                                       const card64   offset) = 0;
00188 
00195    virtual void updateQuality(const AbstractQoSDescription* aqd) = 0;
00196 };
00197 
00198 
00199 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines