00001 #include "config.h" 00002 #undef PACKAGE 00003 #undef VERSION 00004 #include "rtp.h" 00005 00006 #pragma pack(1) 00007 00008 typedef struct 00009 { 00010 #if __BYTE_ORDER == __BIG_ENDIAN 00011 unsigned char version:2; 00012 unsigned char padding:1; 00013 unsigned char extension:1; 00014 unsigned char cc:4; 00015 unsigned char marker:1; 00016 unsigned char payload:7; 00017 #else 00018 unsigned char cc:4; 00019 unsigned char extension:1; 00020 unsigned char padding:1; 00021 unsigned char version:2; 00022 unsigned char payload:7; 00023 unsigned char marker:1; 00024 #endif 00025 unsigned short sequence; 00026 unsigned long timestamp; 00027 unsigned long sources[1]; 00028 } RTPHeader; 00029 00030 #pragma pack() 00031 00032 class RTPPacket 00033 { 00034 private: 00035 friend class RTPQueue; 00036 00037 RTPPacket *next, *prev; 00038 unsigned char *buffer; 00039 unsigned size; 00040 00041 inline RTPHeader *getHeader(void) 00042 {return (RTPHeader *)buffer;}; 00043 00044 unsigned getHeaderSize(void); 00045 unsigned getPayloadSize(void); 00046 00047 unsigned char *getPayload(void); 00048 00049 RTPPacket(RTPHeader *header, unsigned char *data, unsigned len); 00050 ~RTPPacket(); 00051 }; 00052