[pitivi: 2/11] Split Discoverer._analyze in smaller methods.



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]