summaryrefslogtreecommitdiffstats
path: root/external_libs/python/dpkt-1.8.6.2/dpkt/rtp.py
diff options
context:
space:
mode:
authorDan Klein <danklei@cisco.com>2015-08-26 14:27:43 +0300
committerDan Klein <danklei@cisco.com>2015-08-26 14:27:43 +0300
commitcdcc62972d42f009f55e6aeb2ca5c60c3acd75eb (patch)
tree5c3fef81ac01407a89740f2d9b8b01b0f3a47c7f /external_libs/python/dpkt-1.8.6.2/dpkt/rtp.py
parent42053c95419042f36242b19d2416d112f7643e14 (diff)
added dpkt package, initial stateless client implementation
Diffstat (limited to 'external_libs/python/dpkt-1.8.6.2/dpkt/rtp.py')
-rw-r--r--external_libs/python/dpkt-1.8.6.2/dpkt/rtp.py127
1 files changed, 127 insertions, 0 deletions
diff --git a/external_libs/python/dpkt-1.8.6.2/dpkt/rtp.py b/external_libs/python/dpkt-1.8.6.2/dpkt/rtp.py
new file mode 100644
index 00000000..9426d8c4
--- /dev/null
+++ b/external_libs/python/dpkt-1.8.6.2/dpkt/rtp.py
@@ -0,0 +1,127 @@
+# $Id: rtp.py 23 2006-11-08 15:45:33Z dugsong $
+# -*- coding: utf-8 -*-
+"""Real-Time Transport Protocol"""
+
+from dpkt import Packet
+from decorators import deprecated
+
+# 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(Packet):
+ __hdr__ = (
+ ('_type', 'H', 0x8000),
+ ('seq', 'H', 0),
+ ('ts', 'I', 0),
+ ('ssrc', 'I', 0),
+ )
+ csrc = ''
+
+ @property
+ def version(self): return (self._type & _VERSION_MASK) >> _VERSION_SHIFT
+
+ @version.setter
+ def version(self, ver):
+ self._type = (ver << _VERSION_SHIFT) | (self._type & ~_VERSION_MASK)
+
+ @property
+ def p(self): return (self._type & _P_MASK) >> _P_SHIFT
+
+ @p.setter
+ def p(self, p): self._type = (p << _P_SHIFT) | (self._type & ~_P_MASK)
+
+ @property
+ def x(self): return (self._type & _X_MASK) >> _X_SHIFT
+
+ @x.setter
+ def x(self, x): self._type = (x << _X_SHIFT) | (self._type & ~_X_MASK)
+
+ @property
+ def cc(self): return (self._type & _CC_MASK) >> _CC_SHIFT
+
+ @cc.setter
+ def cc(self, cc): self._type = (cc << _CC_SHIFT) | (self._type & ~_CC_MASK)
+
+ @property
+ def m(self): return (self._type & _M_MASK) >> _M_SHIFT
+
+ @m.setter
+ def m(self, m): self._type = (m << _M_SHIFT) | (self._type & ~_M_MASK)
+
+ @property
+ def pt(self): return (self._type & _PT_MASK) >> _PT_SHIFT
+
+ @pt.setter
+ def pt(self, m): self._type = (m << _PT_SHIFT) | (self._type & ~_PT_MASK)
+
+ # Deprecated methods, will be removed in the future
+ # =================================================
+ @deprecated
+ def _get_version(self): return self.version
+
+ @deprecated
+ def _set_version(self, ver): self.version = ver
+
+ @deprecated
+ def _get_p(self): return self.p
+
+ @deprecated
+ def _set_p(self, p): self.p = p
+
+ @deprecated
+ def _get_x(self): return self.x
+
+ @deprecated
+ def _set_x(self, x): self.x = x
+
+ @deprecated
+ def _get_cc(self): return self.cc
+
+ @deprecated
+ def _set_cc(self, cc): self.cc = cc
+
+ @deprecated
+ def _get_m(self): return self.m
+
+ @deprecated
+ def _set_m(self, m): self.m = m
+
+ @deprecated
+ def _get_pt(self): return self.pt
+
+ @deprecated
+ def _set_pt(self, pt): self.pt = pt
+ # =================================================
+
+ def __len__(self):
+ return self.__hdr_len__ + len(self.csrc) + len(self.data)
+
+ def __str__(self):
+ return self.pack_hdr() + self.csrc + str(self.data)
+
+ def unpack(self, buf):
+ super(RTP, self).unpack(buf)
+ self.csrc = buf[self.__hdr_len__:self.__hdr_len__ + self.cc * 4]
+ self.data = buf[self.__hdr_len__ + self.cc * 4:]
+