# On maemo use software decoding to workaround some bugs their gst:
# 1. Weird volume bugs in playbin when playing ogg or wma files
# 2. When seeking the DSPs sometimes lie about the real position info
- if util.platform == 'maemo':
+ if True:
+ self._maemo_setup_playbin_player(uri)
+ elif util.platform == 'maemo':
if not self._maemo_setup_hardware_player(filetype):
self._maemo_setup_software_player()
log.debug( 'Using software decoding (maemo)' )
self.player.set_state(gst.STATE_NULL)
self.player = None
+ def _maemo_setup_playbin_player(self, url):
+ self.player = gst.parse_launch("playbin2 uri=%s" % (url,))
+ self.filesrc = self.player
+ self.filesrc_property = 'uri'
+ self.volume_control = self.player
+ self.volume_multiplier = 1.
+ self.volume_property = 'volume'
+
def _maemo_setup_hardware_player( self, filetype ):
""" Setup a hardware player for mp3 or aac audio using
dspaacsink or dspmp3sink """
states = ("playing", "paused", "stopped")
self.__state = state if state in states else 'none'
- PlayerBackend = OssoPlayer
-else:
- PlayerBackend = GStreamer
+# PlayerBackend = OssoPlayer
+#else:
+PlayerBackend = GStreamer
class Playlist(object):
class Entry(object):
if isinstance(data, dict):
self.id = data['id']
self.name = data['name']
+ self.image = data['image']
self.numalbum = int(data['numalbum'])
self.url = data['mp3']
self.type = 'mp3'
elif isinstance(data, basestring): # assume URI
self.id = 0
self.name = ''
+ self.image = None
self.numalbum = 0
self.url = data
self.type = 'mp3'
if items is None:
items = []
self.items = [Playlist.Entry(item) for item in items]
- self.current = -1
+ self._current = -1
def add(self, item):
self.items.append(Playlist.Entry(item))
def next(self):
if self.has_next():
- self.current = self.current + 1
- return self.items[self.current]
+ self._current = self._current + 1
+ return self.items[self._current]
return None
def has_next(self):
- return self.current < (len(self.items)-1)
+ return self._current < (len(self.items)-1)
+
+ def current(self):
+ if self._current >= 0:
+ return self.items[self._current]
+ return None
+
+ def current_index(self):
+ return self._current
+
+ def __len__(self):
+ return len(self.items)
class Player(Playlist):
def __init__(self):