RTP Audio System
2.0.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### Decoder 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: decoderinterface.h 1293 2011-12-19 14:59:28Z dreibh $ 00032 00033 00034 #ifndef DECODERINTERFACE_H 00035 #define DECODERINTERFACE_H 00036 00037 00038 #include "tdsystem.h" 00039 #include "sourcestateinfo.h" 00040 #include "mediainfo.h" 00041 00042 00050 struct DecoderPacket 00051 { 00055 void* Buffer; 00056 00060 cardinal Length; 00061 00065 card16 SequenceNumber; 00066 00070 card32 TimeStamp; 00071 00075 card8 PayloadType; 00076 00080 bool Marker; 00081 00082 00086 SourceStateInfo** SSIArray; 00087 00088 00095 cardinal Layer; 00096 00101 cardinal Layers; 00102 }; 00103 00104 00105 00113 class DecoderInterface 00114 { 00115 // ====== Decoder type =================================================== 00116 public: 00122 virtual const card16 getTypeID() const = 0; 00123 00129 virtual const char* getTypeName() const = 0; 00130 00131 00132 // ====== Initialization/Clean-up ======================================== 00137 virtual void activate() = 0; 00138 00143 virtual void deactivate() = 0; 00144 00149 virtual void reset() = 0; 00150 00151 00152 // ====== Check next packet ============================================== 00160 virtual bool checkNextPacket(DecoderPacket* packet) = 0; 00161 00162 00163 // ====== Decode next packet ============================================= 00169 virtual void handleNextPacket(const DecoderPacket* decoderPacket) = 0; 00170 00171 00172 // ====== Status functions =============================================== 00178 virtual void getMediaInfo(MediaInfo& mediaInfo) const = 0; 00179 00186 virtual card8 getErrorCode() const = 0; 00187 00193 virtual card64 getPosition() const = 0; 00194 00200 virtual card64 getMaxPosition() const = 0; 00201 }; 00202 00203 00204 #endif