def queue_overrun(self, *args): ltime = int(self.queue.get_property("current-level-time")/MS_TO_NS) self.queue_state = "overrun" #no overruns for the first 2 seconds: elapsed = time.time()-self.start_time if elapsed<2.0 or ltime<(QUEUE_TIME/MS_TO_NS/2*75/100): debug("sound sink queue overrun ignored: level=%s, elapsed time=%.1f", ltime, elapsed) return debug("sound sink queue overrun: level=%s", ltime) self.overruns += 1 self.emit("overrun", ltime)
def add_data(self, data, metadata=None): debug("sound sink: adding %s bytes, %s", len(data), metadata) if self.src: buf = gst.Buffer(data) #buf.size = size #buf.timestamp = timestamp #buf.duration = duration #buf.offset = offset #buf.offset_end = offset_end #buf.set_caps(gst.caps_from_string(caps)) r = self.src.emit("push-buffer", buf) if r != gst.FLOW_OK: log.error("push-buffer error: %s", r)
def add_data(self, data, metadata=None): debug("sound sink: adding %s bytes, %s", len(data), metadata) if self.src: buf = gst.Buffer(data) #buf.size = size #buf.timestamp = timestamp #buf.duration = duration #buf.offset = offset #buf.offset_end = offset_end #buf.set_caps(gst.caps_from_string(caps)) r = self.src.emit("push-buffer", buf) if r!=gst.FLOW_OK: log.error("push-buffer error: %s", r)
def add_data(self, data, metadata=None): #debug("sound sink: adding %s bytes to %s, metadata: %s, level=%s", len(data), self.src, metadata, int(self.queue.get_property("current-level-time")/MS_TO_NS)) if not self.src: return buf = gst.Buffer(data) d = 10*MS_TO_NS if metadata and False: ts = metadata.get("timestamp") if ts is not None: buf.timestamp = ts d = metadata.get("duration") if d is not None: buf.duration = d debug("add_data(..) queue_state=%s", self.queue_state) self.push_buffer(buf)
def push_buffer(self, buf): #buf.size = size #buf.timestamp = timestamp #buf.duration = duration #buf.offset = offset #buf.offset_end = offset_end #buf.set_caps(gst.caps_from_string(caps)) r = self.src.emit("push-buffer", buf) if r!=gst.FLOW_OK: log.error("push-buffer error: %s", r) self.emit('error', "push-buffer error: %s" % r) return False self.buffer_count += 1 self.byte_count += len(buf.data) ltime = int(self.queue.get_property("current-level-time")/MS_TO_NS) debug("sound sink: pushed %s bytes, new buffer level: %sms", len(buf.data), ltime) return True
def eos(self): debug("eos()") if self.src: self.src.emit('end-of-stream') self.cleanup()
def queue_underrun(self, *args): ltime = int(self.queue.get_property("current-level-time")/MS_TO_NS) debug("sound sink queue underrun: level=%s", ltime) self.queue_state = "underrun"
def on_new_preroll(self, appsink): buf = appsink.emit('pull-preroll') debug('new preroll: %s bytes', len(buf)) self.emit_buffer(buf)
def overrun(*args): debug("sound sink queue overrun")
def on_enough_data(self, *args): debug("on_enough_data(%s)", args)
def need_data(self, src_arg, needed): debug("need_data: %s bytes in %s", needed, src_arg)
def underrun(*args): debug("sound sink queue underrun")
def queue_pushing(self, *args): ltime = int(self.queue.get_property("current-level-time")/MS_TO_NS) debug("sound sink queue pushing: level=%s", ltime) self.queue_state = "pushing"