def __init__(self, header = None, cself = None): self.a_headers = [] if header: name, v = header if name in self.all_headers: setattr(self, name + '_header', v) elif 'a' == name and v not in self.a_headers: self.a_headers = [v] return elif cself: for header_name in [x + '_header' for x in self.all_headers]: try: setattr(self, header_name, getattr(cself, header_name).getCopy()) except AttributeError: pass self.a_headers = [x for x in cself.a_headers] return self.m_header = SdpMedia() fmts = self.m_header.get_formats() self.a_headers = ['rtpmap:' + str(pt) + ' ' + n for pt,n in rtpmap if pt in fmts] self.a_headers.append('sendrecv')
class SdpMediaDescription(object): m_header = None i_header = None c_header = None b_header = None k_header = None a_headers = [] all_headers = ('m', 'i', 'c', 'b', 'k') needs_update = True def __init__(self, header = None, cself = None): self.a_headers = [] if header: name, v = header if name in self.all_headers: setattr(self, name + '_header', v) elif 'a' == name and v not in self.a_headers: self.a_headers = [v] return elif cself: for header_name in [x + '_header' for x in self.all_headers]: try: setattr(self, header_name, getattr(cself, header_name).getCopy()) except AttributeError: pass self.a_headers = [x for x in cself.a_headers] return self.m_header = SdpMedia() fmts = self.m_header.get_formats() self.a_headers = ['rtpmap:' + str(pt) + ' ' + n for pt,n in rtpmap if pt in fmts] self.a_headers.append('sendrecv') def __str__(self): s = '' for name in self.all_headers: header = getattr(self, name + '_header') if header: s += '%s=%s\r\n' % (name, str(header)) for header in self.a_headers: s += 'a=%s\r\n' % str(header) return s def noCStr(self): s = '' for name in self.all_headers: if name == 'c': continue header = getattr(self, name + '_header') if header != None: s += '%s=%s\r\n' % (name, str(header)) for header in self.a_headers: s += 'a=%s\r\n' % str(header) return s def __iadd__(self, other): self.addHeader(*other.strip().split('=', 1)) return self def getCopy(self): return SdpMediaDescription(cself = self) def addHeader(self, name, header): if name == 'a': self.a_headers.append(header) else: setattr(self, name + '_header', f_types[name](header))