From 72c7c990622c347c5462fa37bc0da989e220eb97 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 13 Jan 2016 17:23:11 +0100 Subject: player: fetch duration from pipeline diff --git a/src/rhlibrary/player.go b/src/rhlibrary/player.go index b6a6d93..983198f 100644 --- a/src/rhlibrary/player.go +++ b/src/rhlibrary/player.go @@ -47,11 +47,18 @@ func (p *Player) onMessage(bus *gst.Bus, msg *gst.Message) { p.pipe.SetState(gst.STATE_NULL) case gst.MESSAGE_WARNING: warn, _ := msg.ParseWarning() - rhdl.Printf("GStreamer Pipeline Warning: %s\n", warn) + rhdl.Printf("GStreamer Pipeline Warning: %s", warn) case gst.MESSAGE_ERROR: p.pipe.SetState(gst.STATE_NULL) err, _ := msg.ParseError() - rhdl.Printf("GStreamer Pipeline Error: %s\n", err) + rhdl.Printf("GStreamer Pipeline Error: %s", err) + case gst.MESSAGE_ASYNC_DONE: + len, ok := p.pipe.QueryDuration(gst.FORMAT_TIME) + if ok { + rhdl.Printf("GStreamer Pipeline: loaded file has length: %d.%d s", len/1000000000, len%1000000000) + } else { + rhdl.Printf("GStreamer Pipeline Error: unable to query duration of file") + } case gst.MESSAGE_STATE_CHANGED: default: rhdl.Printf("GStreamer Message: unknown type '%s'", msg.GetTypeName()) -- cgit v0.10.2