Package: gstreamer0.10-plugins-ugly
Version: 0.10.15-1
Severity: normal
Tags: upstream

Hello.

After upgrading libgstreamer-plugins-base0.10-0 to the latest version, I
noticed that my media player, which uses GStreamer via PyGST, would hang
at the end of each song. It would not hang indefinitely, but still, for
a long long while.

Attached is a minimal python program that exhibits the problem: with
libgstreamer-plugins-base0.10-0 0.10.14-4 it starts a new track after
the previous one finishes, but with 0.10.15 it hangs. You should be able
to check the difference with the files at [1], which are 1 second long
each: the stops will be short, but noticeable. Use longer tracks for the
effect to become more evident.

  [1] http://chistera.yi.org/~adeodato/tmp/2007-11-20/gstbug/

I hope you can reproduce the problem.

Also, I'm not sure this bug would not belong to gstreamer0.10-plugins-ugly 
instead.

Thanks in advance,

-- 
Adeodato Simó                                     dato at net.com.org.es
Debian Developer                                  adeodato at debian.org
 
Puede ser que yo llegue tarde
pero qué mas da si tu no me esperas
                -- Miguel Bosé, A millones de km de aquí
#! /usr/bin/env python
# Pass files to play as arguments.

import os
import sys

import gst
import gobject
gobject.threads_init()

class Player:
    def __init__(self, files):
        self.files = files

        self.bin = gst.element_factory_make('playbin')
        self.bin.set_property('video-sink', None)
        try:
            device = gst.parse_launch('alsasink')
        except gobject.GError:
            pass
        else:
            self.bin.set_property('audio-sink', device)

        bus = self.bin.get_bus()
        bus.add_signal_watch()
        bus.connect('message::eos', lambda bus, msg: self.play_next())

    def play_next(self):
        try:
            uri = 'file://' + os.path.abspath(self.files.pop(0))
        except IndexError:
            sys.exit(0)
        else:
            self.bin.set_property('uri', uri)
            self.bin.set_state(gst.STATE_NULL)
            self.bin.set_state(gst.STATE_PLAYING)

player = Player(sys.argv[1:])
player.play_next()
gobject.MainLoop().run()

Reply via email to