rtcpapppacket.h

Go to the documentation of this file.
00001 /*
00002 
00003   This file is a part of JRTPLIB
00004   Copyright (c) 1999-2007 Jori Liesenborgs
00005 
00006   Contact: jori.liesenborgs@gmail.com
00007 
00008   This library was developed at the "Expertisecentrum Digitale Media"
00009   (http://www.edm.uhasselt.be), a research center of the Hasselt University
00010   (http://www.uhasselt.be). The library is based upon work done for 
00011   my thesis at the School for Knowledge Technology (Belgium/The Netherlands).
00012 
00013   Permission is hereby granted, free of charge, to any person obtaining a
00014   copy of this software and associated documentation files (the "Software"),
00015   to deal in the Software without restriction, including without limitation
00016   the rights to use, copy, modify, merge, publish, distribute, sublicense,
00017   and/or sell copies of the Software, and to permit persons to whom the
00018   Software is furnished to do so, subject to the following conditions:
00019 
00020   The above copyright notice and this permission notice shall be included
00021   in all copies or substantial portions of the Software.
00022 
00023   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00024   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00025   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
00026   THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00027   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00028   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
00029   IN THE SOFTWARE.
00030 
00031 */
00032 
00037 #ifndef RTCPAPPPACKET_H
00038 
00039 #define RTCPAPPPACKET_H
00040 
00041 #include "rtpconfig.h"
00042 #include "rtcppacket.h"
00043 #include "rtpstructs.h"
00044 #if ! (defined(WIN32) || defined(_WIN32_WCE))
00045         #include <netinet/in.h>
00046 #endif // WIN32 
00047 
00048 class RTCPCompoundPacket;
00049 
00051 class RTCPAPPPacket : public RTCPPacket
00052 {
00053 public:
00059         RTCPAPPPacket(uint8_t *data,size_t datalen);
00060         ~RTCPAPPPacket()                                                        { }
00061 
00063         uint8_t GetSubType() const;
00064 
00066         uint32_t GetSSRC() const;
00067 
00071         uint8_t *GetName(); 
00072 
00074         uint8_t *GetAPPData();
00075 
00077         size_t GetAPPDataLength() const;
00078 #ifdef RTPDEBUG
00079         void Dump();
00080 #endif // RTPDEBUG      
00081 private:
00082         size_t appdatalen;
00083 };
00084 
00085 inline uint8_t RTCPAPPPacket::GetSubType() const
00086 {
00087         if (!knownformat)
00088                 return 0;
00089         RTCPCommonHeader *hdr = (RTCPCommonHeader *)data;
00090         return hdr->count;
00091 }
00092 
00093 inline uint32_t RTCPAPPPacket::GetSSRC() const
00094 {
00095         if (!knownformat)
00096                 return 0;
00097 
00098         uint32_t *ssrc = (uint32_t *)(data+sizeof(RTCPCommonHeader));
00099         return ntohl(*ssrc);    
00100 }
00101 
00102 inline uint8_t *RTCPAPPPacket::GetName()
00103 {
00104         if (!knownformat)
00105                 return 0;
00106 
00107         return (data+sizeof(RTCPCommonHeader)+sizeof(uint32_t));        
00108 }
00109 
00110 inline uint8_t *RTCPAPPPacket::GetAPPData()
00111 {
00112         if (!knownformat)
00113                 return 0;
00114         if (appdatalen == 0)
00115                 return 0;
00116         return (data+sizeof(RTCPCommonHeader)+sizeof(uint32_t)*2);
00117 }
00118 
00119 inline size_t RTCPAPPPacket::GetAPPDataLength() const
00120 {
00121         if (!knownformat)
00122                 return 0;
00123         return appdatalen;
00124 }
00125 
00126 #endif // RTCPAPPPACKET_H
00127 

Generated on Thu Feb 8 16:22:05 2007 for jrtplib by  doxygen 1.5.1