diff --git a/ChangeLog b/ChangeLog index d0579d8..12e010e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-05-24 Thomas Vander Stichele + + * morituri/common/checksum.py: + * morituri/common/gstreamer.py: + Remove audioparsers plugin if it has the known bug. + Fixes #64. + 2011-05-24 Thomas Vander Stichele * morituri/common/task.py: diff --git a/morituri/common/checksum.py b/morituri/common/checksum.py index ac34030..550e224 100644 --- a/morituri/common/checksum.py +++ b/morituri/common/checksum.py @@ -72,12 +72,14 @@ class ChecksumTask(gstreamer.GstPipelineTask): self.checksum = None # result + gstreamer.removeAudioParsers() + ### gstreamer.GstPipelineTask implementations def getPipelineDesc(self): return ''' filesrc location="%s" ! - decodebin ! audio/x-raw-int ! + decodebin name=decode ! audio/x-raw-int ! appsink name=sink sync=False emit-signals=True ''' % common.quoteParse(self._path).encode('utf-8') diff --git a/morituri/common/gstreamer.py b/morituri/common/gstreamer.py index 2051c04..8d46787 100644 --- a/morituri/common/gstreamer.py +++ b/morituri/common/gstreamer.py @@ -171,3 +171,11 @@ class GstPipelineTask(task.Task): self.setAndRaiseException(exc) self.debug('error, scheduling stop') self.schedule(0, self.stop) + +# workaround for issue #64 +def removeAudioParsers(): + import gst + registry = gst.registry_get_default() + plugin = registry.find_plugin("audioparsers") + if plugin and plugin.get_version() <= '0.10.29': + registry.remove_plugin(plugin)