All pastes #355721 Raw Edit

Mine

public python v1 · immutable
·published 2007-02-14 17:59 UTC
rendered paste body
import gobjectgobject.threads_init()import pygstpygst.require('0.10')import gstimport sysimport timelast_time = None        # time of last inputted bufferdiff_sum = 0            # sum of time diffnbbuffers = 0           # outputted buffersml = gobject.MainLoop()def bus_cb(bus, message):    if message.type in [gst.MESSAGE_ERROR, gst.MESSAGE_EOS]:        ml.quit()def inprobe(pad, buffer):    global last_time    last_time = time.time()    return Truedef outprobe(pad, buffer):    now = time.time()    global last_time, nbbuffers, diff_sum    if last_time:        diff_sum += now - last_time        nbbuffers += 1        last_time = 0    return Truedef padadded(demuxer, pad, decoder):    if pad.get_caps().to_string().startswith("video"):        pad.link(decoder.get_pad("sink"))if len(sys.argv) < 4:    print "Usage: %s <demuxername> <decodername> <filename>" % sys.argv[0]    sys.exit()p = gst.Pipeline()src = gst.element_factory_make("filesrc")src.props.location = sys.argv[3]demuxer = gst.parse_launch(sys.argv[1])decoder = gst.parse_launch(sys.argv[2])sink = gst.element_factory_make("fakesink")p.add(src, demuxer, decoder, sink)src.link(demuxer)decoder.link(sink)demuxer.connect("pad-added", padadded, decoder)decoder.get_pad("src").add_data_probe(inprobe)decoder.get_pad("sink").add_data_probe(outprobe)bus = p.get_bus()bus.add_signal_watch()bus.connect("message", bus_cb)p.set_state(gst.STATE_PLAYING)print "running"ml.run()print "Number of buffers:", nbbuffersprint "Average time : %0.10f seconds" % (diff_sum / nbbuffers)