[pitivi: 13/41] previewer: allow specifying thumbnail period



commit 5bf443c0a7983950248c0ad88d564e49a3c058c3
Author: Brandon Lewis <brandon_lewis alum berkeley edu>
Date:   Wed Nov 3 15:53:12 2010 +0000

    previewer: allow specifying thumbnail period

 pitivi/ui/previewer.py |   21 ++++++++++++++++++++-
 pitivi/utils.py        |    4 ++++
 2 files changed, 24 insertions(+), 1 deletions(-)
---
diff --git a/pitivi/ui/previewer.py b/pitivi/ui/previewer.py
index 012c2fd..32acb24 100644
--- a/pitivi/ui/previewer.py
+++ b/pitivi/ui/previewer.py
@@ -49,6 +49,11 @@ GlobalSettings.addConfigOption("thumbnailSpacingHint",
     key="spacing-hint",
     default=2,
     notify=True)
+GlobalSettings.addConfigOption("thumbnailPeriod",
+    section="thumbnailing",
+    key="thumbnail-period",
+    default=0.5,
+    notify=True)
 
 PreferencesDialog.addNumericPreference("thumbnailSpacingHint",
     section=_("Appearance"),
@@ -56,6 +61,13 @@ PreferencesDialog.addNumericPreference("thumbnailSpacingHint",
     lower=0,
     description=_("The gap between thumbnails"))
 
+PreferencesDialog.addNumericPreference("thumbnailPeriod",
+    section=_("Appearance"),
+    label=_("Thumbnail Period (seconds)"),
+    lower=0.001,
+    upper=60,
+    description=_("The interval, in seconds, between successive thumbnails"))
+
 # this default works out to a maximum of ~ 1.78 MiB per factory, assuming:
 # 4:3 aspect ratio
 # 4 bytes per pixel
@@ -381,7 +393,7 @@ class RandomAccessVideoPreviewer(RandomAccessPreviewer):
 
     def _segment_for_time(self, time):
         # quantize thumbnail timestamps to maximum granularity
-        return time - (time % self.tstep)
+        return utils.quantize(time, long(gst.SECOND * self.tperiod))
 
     def _thumbnailCb(self, unused_thsink, pixbuf, timestamp):
         gobject.idle_add(self._finishThumbnail, pixbuf, timestamp)
@@ -396,12 +408,19 @@ class RandomAccessVideoPreviewer(RandomAccessPreviewer):
     def _connectSettings(self, settings):
         RandomAccessPreviewer._connectSettings(self, settings)
         settings.connect("showThumbnailsChanged", self._showThumbsChanged)
+        settings.connect("thumbnailPeriodChanged",
+            self._thumbnailPeriodChanged)
         self._view = settings.showThumbnails
+        self.tperiod = settings.thumbnailPeriod
 
     def _showThumbsChanged(self, settings):
         self._view = settings.showThumbnails
         self.emit("update", None)
 
+    def _thumbnailPeriodChanged(self, settings):
+        self.tperiod = settings.thumbnailPeriod
+        self.emit("update", None)
+
 
 class StillImagePreviewer(RandomAccessVideoPreviewer):
     def _thumbForTime(self, cr, time, x, y):
diff --git a/pitivi/utils.py b/pitivi/utils.py
index be1554c..bf224c3 100644
--- a/pitivi/utils.py
+++ b/pitivi/utils.py
@@ -567,6 +567,10 @@ def formatPercent(value):
     return "%3d%%" % (value * 100)
 
 
+def quantize(input, interval):
+    return (input // interval) * interval
+
+
 native_endianness = struct.pack('=I', 0x34333231)
 
 big_to_cairo_alpha_mask = struct.unpack('=i', '\xFF\x00\x00\x00')[0]



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]