Merge commit 'adamcik/gstreamer'

This commit is contained in:
Stein Magnus Jodal 2010-04-15 20:58:04 +02:00
commit 3375f806f0
3 changed files with 28 additions and 9 deletions

View File

@ -377,7 +377,7 @@ class BasePlaybackController(object):
"""
The previous :class:`mopidy.models.Track` in the playlist.
For normal playback this is the next track in the playlist. If random
For normal playback this is the previous track in the playlist. If random
and/or consume is enabled it should return the current track instead.
"""
if self.repeat or self.consume or self.random:
@ -386,11 +386,8 @@ class BasePlaybackController(object):
if self.current_track is None or self.playlist_position == 0:
return None
try:
return self.backend.current_playlist.playlist.tracks[
self.playlist_position - 1]
except IndexError:
return None
return self.backend.current_playlist.playlist.tracks[
self.playlist_position - 1]
@property
def state(self):

View File

@ -3,11 +3,13 @@ gobject.threads_init()
# FIXME make sure we don't get hit by
# http://jameswestby.net/weblog/tech/14-caution-python-multiprocessing-and-glib-dont-mix.html
import pygst
pygst.require('0.10')
import gst
import logging
import threading
from mopidy.models import Track, Playlist
from mopidy.backends import (BaseBackend,
BasePlaybackController,
BaseCurrentPlaylistController)
@ -91,7 +93,7 @@ class GStreamerPlaybackController(BasePlaybackController):
try:
return self._bin.query_position(gst.FORMAT_TIME)[0] // gst.MSECOND
except gst.QueryError, e:
logger.error('time_position failed: %s',e )
logger.error('time_position failed: %s', e)
return 0
def destroy(self):

View File

@ -10,7 +10,7 @@ from tests.backends.base import (BasePlaybackControllerTest,
folder = os.path.dirname(__file__)
folder = os.path.join(folder, '..', 'data')
folder = os.path.abspath(folder)
song = os.path.join(folder, 'song%s.mp3')
song = os.path.join(folder, 'song%s.wav')
song = 'file://' + song
# FIXME can be switched to generic test
@ -24,3 +24,23 @@ class GStreamerPlaybackControllerTest(BasePlaybackControllerTest,
unittest.TestCase):
tracks = [Track(uri=song % i, id=i, length=4464) for i in range(1, 4)]
backend_class = GStreamerBackend
def add_track(self, file):
uri = 'file://' + os.path.join(folder, file)
track = Track(uri=uri, id=1, length=4464)
self.backend.current_playlist.add(track)
def test_play_mp3(self):
self.add_track('blank.mp3')
self.playback.play()
self.assertEqual(self.playback.state, self.playback.PLAYING)
def test_play_ogg(self):
self.add_track('blank.ogg')
self.playback.play()
self.assertEqual(self.playback.state, self.playback.PLAYING)
def test_play_flac(self):
self.add_track('blank.flac')
self.playback.play()
self.assertEqual(self.playback.state, self.playback.PLAYING)