예제 #1
0
파일: player.go 프로젝트: sergey789/gst
func (p *Player) onSyncMessage(bus *gst.Bus, msg *gst.Message) {
	name, _ := msg.GetStructure()
	if name != "prepare-xwindow-id" {
		return
	}
	img_sink := msg.GetSrc()
	xov := gst.XOverlayCast(img_sink)
	if p.xid != 0 && xov != nil {
		img_sink.SetProperty("force-aspect-ratio", true)
		xov.SetXwindowId(p.xid)
	} else {
		fmt.Println("Error: xid =", p.xid, "xov =", xov)
	}
}
예제 #2
0
func (db *DoubanFM) onMessage(bus *gst.Bus, msg *gst.Message) {
	switch msg.GetType() {
	case gst.MESSAGE_EOS:
		if db.Loop {
			db.gst.NewSource(db.Song.Url)
		} else {
			db.GetSongs(doubanfm.End)
			if db.Empty() {
				db.GetSongs(doubanfm.Last)
			}
			db.gst.NewSource(db.Next().Url)
		}
	case gst.MESSAGE_ERROR:
		s, param := msg.GetStructure()
		log.Println("gst error", msg.GetType(), s, param)
		db.gst.Stop()
	}
}