12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- """Real-Time Transport Protocol"""
- from pypacker import pypacker
- # version 1100 0000 0000 0000 ! 0xC000 14
- # p 0010 0000 0000 0000 ! 0x2000 13
- # x 0001 0000 0000 0000 ! 0x1000 12
- # cc 0000 1111 0000 0000 ! 0x0F00 8
- # m 0000 0000 1000 0000 ! 0x0080 7
- # pt 0000 0000 0111 1111 ! 0x007F 0
- #
- _VERSION_MASK = 0xC000
- _P_MASK = 0x2000
- _X_MASK = 0x1000
- _CC_MASK = 0x0F00
- _M_MASK = 0x0080
- _PT_MASK = 0x007F
- _VERSION_SHIFT = 14
- _P_SHIFT = 13
- _X_SHIFT = 12
- _CC_SHIFT = 8
- _M_SHIFT = 7
- _PT_SHIFT = 0
- VERSION = 2
- class RTP(pypacker.Packet):
- __hdr__ = (
- ("type", "H", 0x8000),
- ("seq", "H", 0),
- ("ts", "I", 0),
- ("ssrc", "I", 0)
- )
- def getversion(self):
- return (type & _VERSION_MASK) >> _VERSION_SHIFT
- def setversion(self, value):
- self.type = (value << _VERSION_SHIFT) | (self.type & ~_VERSION_MASK)
- version = property(getversion, setversion)
- def getp(self):
- return (self.type & _P_MASK) >> _P_SHIFT
- def setp(self, value):
- self.type = (value << _P_SHIFT) | (self.type & ~_P_MASK)
- p = property(getp, setp)
- def getx(self):
- return (self.type & _X_MASK) >> _X_SHIFT
- def setx(self, value):
- self.type = (value << _X_SHIFT) | (self.type & ~_X_MASK)
- x = property(getx, setx)
- def getcc(self):
- return (self.type & _CC_MASK) >> _CC_SHIFT
- def setcc(self, value):
- self.type = (value << _CC_SHIFT) | (self.type & ~_CC_MASK)
- cc = property(getcc, setcc)
- def getm(self):
- return (self.type & _M_MASK) >> _M_SHIFT
- def setm(self, value):
- self.type = (value << _M_SHIFT) | (self.type & ~_M_MASK)
- m = property(getm, setm)
- def getpt(self):
- return (self.type & _PT_MASK) >> _PT_SHIFT
- def setpt(self, value):
- self.type = (value << _PT_SHIFT) | (self.type & ~_PT_MASK)
- pt = property(getpt, setpt)
- """
- __m_switch_set = {"version":lambda type,version: (version << _VERSION_SHIFT) | (type & ~_VERSION_MASK),
- "p":lambda type,p: (p << _P_SHIFT) | (type & ~_P_MASK),
- "x":lambda type,x: (x << _X_SHIFT) | (type & ~_X_MASK),
- "cc":lambda type,cc: (cc << _CC_SHIFT) | (type & ~_CC_MASK),
- "m":lambda type,m: (m << _M_SHIFT) | (type & ~_M_MASK),
- "pt":lambda type,pt: (m << _PT_SHIFT) | (type & ~_PT_MASK)
- }
- _m_switch_get = {"version":lambda type: (type & _VERSION_MASK) >> _VERSION_SHIFT,
- "p":lambda type: (type & _P_MASK) >> _P_SHIFT,
- "x":lambda type: (type & _X_MASK) >> _X_SHIFT,
- "cc":lambda type: (type & _CC_MASK) >> _CC_SHIFT,
- "m":lambda type: (type & _M_MASK) >> _M_SHIFT,
- "pt":lambda type: (type & _PT_MASK) >> _PT_SHIFT
- }
- """
|