self.add_pad(self.srcpad) self.add_pad(self.metadatasinkpad) self.add_pad(self.sinkpad) self.sinkpad.set_chain_function(self.data_chain) self.metadatasinkpad.set_chain_function(self.metadata_chain) def data_chain(self, pad, buffer): self.condition.acquire()) if not self.data is None: return gst.FLOW_ERROR self.data = buffer if self.metadata is None: self.condition.wait() status = gst.FLOW_OK else: status = self.send_pair() self.condition.notifyAll() self.condition.release() return status def metadata_chain(self, pad, buffer): self.condition.acquire()) if not self.metadata is None: return gst.FLOW_ERROR self.metadata = buffer if self.data is None: self.condition.wait() status = gst.FLOW_OK else: status = self.send_pair() self.condition.notifyAll() self.condition.release() return status def send_pair (self):" if self.metadata is None or self.data is None: status = gst.FLOW_ERROR else: status = self.srcpad.push(self.metadata) if status == gst.FLOW_OK: status = self.srcpad.push(self.data) self.metadata = None self.data = None return status