[pitivi: 2/11] Split Discoverer._analyze in smaller methods.
- From: Edward Hervey <edwardrv src gnome org>
- To: svn-commits-list gnome org
- Subject: [pitivi: 2/11] Split Discoverer._analyze in smaller methods.
- Date: Thu, 7 May 2009 11:05:49 -0400 (EDT)
commit 9e02790d55887039032c2ca098c741f69c4ca081
Author: Alessandro Decina <alessandro d gmail com>
Date: Wed May 6 12:40:06 2009 +0200
Split Discoverer._analyze in smaller methods.
---
pitivi/discoverer.py | 51 ++++++++++++++++++++++++++++++++-----------------
1 files changed, 33 insertions(+), 18 deletions(-)
diff --git a/pitivi/discoverer.py b/pitivi/discoverer.py
index 2b9f8c0..a73e501 100644
--- a/pitivi/discoverer.py
+++ b/pitivi/discoverer.py
@@ -264,6 +264,12 @@ class Discoverer(Signallable, Loggable):
def _createSource(self):
source = gst.element_make_from_uri(gst.URI_SRC,
self.current_uri, "src-%s" % self.current_uri)
+ if not source:
+ self.warning("This is not a media file: %s", self.current_uri)
+ self.error = _("No available source handler.")
+ self.error_debug = _("You do not have a GStreamer source element to handle protocol '%s'") % gst.uri_get_protocol(self.current_uri)
+
+ return None
return source
@@ -271,6 +277,25 @@ class Discoverer(Signallable, Loggable):
ret = os.getenv('USE_DECODEBIN2', '1') == '1'
return ret
+ def _createDecodeBin(self):
+ if self._useDecodeBinTwo():
+ dbin = gst.element_factory_make("decodebin2", "dbin")
+ else:
+ dbin = gst.element_factory_make("decodebin", "dbin")
+
+ dbin.connect("new-decoded-pad", self._newDecodedPadCb)
+
+ return dbin
+
+ def _connectToBus(self):
+ self.bus = self.pipeline.get_bus()
+ self.bus.add_signal_watch()
+ self.bus.connect("message::eos", self._busMessageEosCb)
+ self.bus.connect("message::error", self._busMessageErrorCb)
+ self.bus.connect("message::element", self._busMessageElementCb)
+ self.bus.connect("message::state-changed",
+ self._busMessageStateChangedCb)
+
def _analyze(self):
"""
Sets up a pipeline to analyze the given uri
@@ -281,35 +306,25 @@ class Discoverer(Signallable, Loggable):
# setup graph and start analyzing
self.pipeline = gst.Pipeline("Discoverer-%s" % self.current_uri)
+ # create the source element
source = self._createSource()
- if not source:
- self.warning("This is not a media file: %s", self.current_uri)
- self.error = _("No available source handler.")
- self.error_debug = _("You do not have a GStreamer source element to handle protocol '%s'") % gst.uri_get_protocol(self.current_uri)
+ if source is None:
self._finishAnalysis()
-
return False
- if self._useDecodeBinTwo():
- dbin = gst.element_factory_make("decodebin2", "dbin")
- else:
- dbin = gst.element_factory_make("decodebin", "dbin")
-
- dbin.connect("new-decoded-pad", self._newDecodedPadCb)
+ # create decodebin(2)
+ dbin = self._createDecodeBin()
self.pipeline.add(source, dbin)
source.link(dbin)
self.info("analysis pipeline created")
- self.bus = self.pipeline.get_bus()
- self.bus.add_signal_watch()
- self.bus.connect("message::eos", self._busMessageEosCb)
- self.bus.connect("message::error", self._busMessageErrorCb)
- self.bus.connect("message::element", self._busMessageElementCb)
- self.bus.connect("message::state-changed",
- self._busMessageStateChangedCb)
+ # connect to bus messages
+ self._connectToBus()
self.info("setting pipeline to PAUSED")
+
+ # go to PAUSED
if self.pipeline.set_state(gst.STATE_PAUSED) == gst.STATE_CHANGE_FAILURE:
if not self.error:
self.error = _("Pipeline didn't want to go to PAUSED.")
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]