Minor bugfixes

This commit is contained in:
P.M. Kuipers 2021-05-04 18:14:29 +02:00
parent 8cfa5c712e
commit 61686b53ca
3 changed files with 26 additions and 23 deletions

View File

@ -69,7 +69,7 @@ class BasicPlayer(GObject.GObject):
def do_set_property(self, property, value): def do_set_property(self, property, value):
if property.name == 'volume': if property.name == 'volume':
volume = clamp(value,0.0,1.0) volume = value if value >= 0.0 and value <= 1.0 else (0.0 if value < 0 else 1.0)
self.pipeline.set_property('volume', volume) self.pipeline.set_property('volume', volume)
#print("Set volume to {0}, got {1}".format(volume,self.pipeline.get_property('volume'))) #print("Set volume to {0}, got {1}".format(volume,self.pipeline.get_property('volume')))
self.emit('volume-changed',volume) self.emit('volume-changed',volume)
@ -158,8 +158,8 @@ class BasicPlayer(GObject.GObject):
self.pipeline.get_bus().disconnect(self.busconnection) self.pipeline.get_bus().disconnect(self.busconnection)
self.pipeline.get_bus().remove_signal_watch() self.pipeline.get_bus().remove_signal_watch()
self.pipeline.set_state(Gst.State.NULL) self.pipeline.set_state(Gst.State.NULL)
except GObject.GError as e: except GObject.GError:
self.set_sensitive(True) pass
def seek(self,seconds): def seek(self,seconds):
self.pipeline.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT, seconds* Gst.SECOND) self.pipeline.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT, seconds* Gst.SECOND)
@ -204,7 +204,8 @@ class BasicPlayer(GObject.GObject):
pass pass
elif t == Gst.MessageType.STREAM_STATUS: elif t == Gst.MessageType.STREAM_STATUS:
(status,owner) = message.parse_stream_status() (status,owner) = message.parse_stream_status()
# print("Stream status: {0} (by {1})\n".format(status,owner)) if False:
print("Stream status: {0} (by {1})\n".format(status,owner))
pass pass
elif t == Gst.MessageType.BUFFERING: elif t == Gst.MessageType.BUFFERING:
pct = message.parse_buffering() pct = message.parse_buffering()
@ -225,7 +226,8 @@ class BasicPlayer(GObject.GObject):
if message.src == self.pipeline: if message.src == self.pipeline:
(old,new,pending) = message.parse_state_changed() (old,new,pending) = message.parse_state_changed()
self.pipeline_state = new self.pipeline_state = new
# print("State changed from '{0}' to '{1}' pending '{2}'\n".format(old,new,pending)) if False:
print("State changed from '{0}' to '{1}' pending '{2}'\n".format(old,new,pending))
if old == Gst.State.READY and new == Gst.State.PAUSED and self.player_state == "LOADING": if old == Gst.State.READY and new == Gst.State.PAUSED and self.player_state == "LOADING":
self.pipeline.set_state(Gst.State.PAUSED) self.pipeline.set_state(Gst.State.PAUSED)
self.player_state = "READY" self.player_state = "READY"

View File

@ -69,6 +69,7 @@ class MediaService(dbus.service.Object):
self.quickplayduration = 0 self.quickplayduration = 0
self.quickplayloop = False self.quickplayloop = False
def Start(self):
self.window.show() self.window.show()
self.tick() self.tick()
@ -167,35 +168,35 @@ class MediaService(dbus.service.Object):
# self.quickplayer.playfor(file,duration) # self.quickplayer.playfor(file,duration)
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='')
def QuickPlayUrl(self, url,): def QuickPlayUrl(self, url):
""" Directly play back a url """ Directly play back a url
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print("Quickplaying file {0}".format(file)) print("Quickplaying url {0}".format(url))
self.quickplay = True self.quickplay = True
self.quickplayduration = 0 self.quickplayduration = 0
self.quickplayloop = False self.quickplayloop = False
self.player.load_uri(file) self.player.load_uri(url)
self.loadcount += 1 self.loadcount += 1
else: else:
print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax)) print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(url,self.loadmax))
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='sd', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='sd', out_signature='')
def QuickPlayUrlFor(self, url, duration): def QuickPlayUrlFor(self, url, duration):
""" Directly play back a url """ Directly play back a url
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print("Quickplaying file {0} for {1} seconds".format(file,duration)) print("Quickplaying url {0} for {1} seconds".format(url,duration))
self.quickplay = True self.quickplay = True
self.quickplayduration = duration self.quickplayduration = duration
self.quickplayloop = False self.quickplayloop = False
self.player.load_uri(file) self.player.load_uri(url)
self.loadcount += 1 self.loadcount += 1
else: else:
print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax)) print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(url,self.loadmax))
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='')
def QuickLoop(self, file,): def QuickLoop(self, file):
""" Directly play back a url """ Directly play back a url
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
@ -209,18 +210,18 @@ class MediaService(dbus.service.Object):
print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax)) print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax))
@dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='') @dbus.service.method(dbus_interface='nl.miqra.MediaCore.Media', in_signature='s', out_signature='')
def QuickLoopUrl(self, url,): def QuickLoopUrl(self, url):
""" Directly play back a url """ Directly play back a url
""" """
if self.loadcount < self.loadmax: if self.loadcount < self.loadmax:
print("Quickplaying url {0}".format(uri)) print("Quickplaying url {0}".format(url))
self.quickplay = True self.quickplay = True
self.quickplayduration = 0 self.quickplayduration = 0
self.quickplayloop = True self.quickplayloop = True
self.player.load_uri(url) self.player.load_uri(url)
self.loadcount += 1 self.loadcount += 1
else: else:
print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(file,self.loadmax)) print("Skipping load of file {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(url,self.loadmax))
@ -246,7 +247,7 @@ class MediaService(dbus.service.Object):
print("Loading url {0}".format(uri)) print("Loading url {0}".format(uri))
self.quickplay = False self.quickplay = False
self.player.load_uri(uri) self.player.load_uri(uri)
self.loadcount += 1; self.loadcount += 1
self.OnLoading(uri) self.OnLoading(uri)
else: else:
print("Skipping load of url {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(uri,self.loadmax)) print("Skipping load of url {0} because maximum simultaneous loads ({1}) was reached. Wait until ready....".format(uri,self.loadmax))
@ -444,9 +445,9 @@ def Run():
os.environ['XDG_RUNTIME_DIR'] = "/run/user/{0}".format(os.getuid()) os.environ['XDG_RUNTIME_DIR'] = "/run/user/{0}".format(os.getuid())
mediaservice = MediaService() mediaservice = MediaService()
mediaservice.Start()
loop = GObject.MainLoop() loop = GObject.MainLoop()
loopcontext = loop.get_context()
def onsigint(signal,frame): def onsigint(signal,frame):
print("Quitting") print("Quitting")

View File

@ -2,7 +2,7 @@
import gi import gi
gi.require_version('Gst','1.0') gi.require_version('Gst','1.0')
from gi.repository import GObject from gi.repository import GObject, Gst
from threading import Thread from threading import Thread
import time import time
@ -65,7 +65,7 @@ class MonitoredPlayer(BasicPlayer):
self.looping = True self.looping = True
if self.player_state != "PAUSED": if self.player_state != "PAUSED":
self.startpos = 0 self.startpos = 0
self.playtime = -1; self.playtime = -1
BasicPlayer.play(self) BasicPlayer.play(self)
@ -73,11 +73,11 @@ class MonitoredPlayer(BasicPlayer):
self.looping = False self.looping = False
if self.player_state != "PAUSED": if self.player_state != "PAUSED":
self.startpos = 0 self.startpos = 0
self.playtime = -1; self.playtime = -1
BasicPlayer.play(self) BasicPlayer.play(self)
def stop(self): def stop(self):
self.playtime = -1; self.playtime = -1
BasicPlayer.stop(self) BasicPlayer.stop(self)
#self.monitor.stop() #self.monitor.stop()