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