msmith - in flumotion/trunk: . flumotion/component/producers/playlist

flumotion-commit at lists.fluendo.com flumotion-commit at lists.fluendo.com
Wed May 9 16:18:43 CEST 2007


Author: msmith
Date: Wed May  9 16:18:41 2007
New Revision: 4910

Modified:
   flumotion/trunk/ChangeLog
   flumotion/trunk/flumotion/component/producers/playlist/playlist.py
   flumotion/trunk/flumotion/component/producers/playlist/playlist.xml
   flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py
Log:
        * flumotion/component/producers/playlist/playlist.py:
        * flumotion/component/producers/playlist/playlist.xml:
        * flumotion/component/producers/playlist/playlistparser.py:
          Allow audio-only or video-only compositions to be configured.



Modified: flumotion/trunk/ChangeLog
==============================================================================
--- flumotion/trunk/ChangeLog	(original)
+++ flumotion/trunk/ChangeLog	Wed May  9 16:18:41 2007
@@ -1,5 +1,12 @@
 2007-05-09  Michael Smith <msmith at fluendo.com>
 
+	* flumotion/component/producers/playlist/playlist.py:
+	* flumotion/component/producers/playlist/playlist.xml:
+	* flumotion/component/producers/playlist/playlistparser.py:
+	  Allow audio-only or video-only compositions to be configured.
+
+2007-05-09  Michael Smith <msmith at fluendo.com>
+
 	* flumotion/component/producers/playlist/playlistparser.py:
 	  Remove unused local to satisfy pychecker.
 

Modified: flumotion/trunk/flumotion/component/producers/playlist/playlist.py
==============================================================================
--- flumotion/trunk/flumotion/component/producers/playlist/playlist.py	(original)
+++ flumotion/trunk/flumotion/component/producers/playlist/playlist.py	Wed May  9 16:18:41 2007
@@ -91,6 +91,9 @@
         self.basetime = -1
         self.pipeline = None
 
+        self._hasAudio = True
+        self._hasVideo = True
+
         # The gnlcompositions for audio and video
         self.videocomp = None
         self.audiocomp = None
@@ -142,6 +145,10 @@
         pipeline = gst.Pipeline()
 
         for mediatype in ['audio', 'video']:
+            if (mediatype == 'audio' and not self._hasAudio) or (
+                mediatype == 'video' and not self._hasVideo):
+                continue
+
             composition = gst.element_factory_make("gnlcomposition", 
                 mediatype + "-composition")
 
@@ -183,13 +190,15 @@
         return pipeline
 
     def _createDefaultSources(self):
-        vsrc = videotest_gnl_src("videotestdefault", 0, 2**63 - 1, 
-            2**31 - 1)
-        self.videocomp.add(vsrc)
-
-        asrc = audiotest_gnl_src("videotestdefault", 0, 2**63 - 1, 
-            2**31 - 1)
-        self.audiocomp.add(asrc)
+        if self._hasVideo:
+            vsrc = videotest_gnl_src("videotestdefault", 0, 2**63 - 1, 
+                2**31 - 1)
+            self.videocomp.add(vsrc)
+
+        if self._hasAudio:
+            asrc = audiotest_gnl_src("videotestdefault", 0, 2**63 - 1, 
+                2**31 - 1)
+            self.audiocomp.add(asrc)
 
     def _setupClock(self, pipeline):
         # Configure our pipeline to use a known basetime and clock.
@@ -226,20 +235,20 @@
                 item.duration = item.duration + start
                 start = 0
 
-        if item.hasVideo:
+        if self._hasVideo and item.hasVideo:
             item.vsrc = file_gnl_src(None, item.uri, self.videocaps,
                 start, item.duration, item.offset, 0)
             self.videocomp.add(item.vsrc)
-        if item.hasAudio:
+        if self._hasAudio and item.hasAudio:
             item.asrc = file_gnl_src(None, item.uri, self.audiocaps,
                 start, item.duration, item.offset, 0)
             self.audiocomp.add(item.asrc)
 
     def unscheduleItem(self, item):
         self.debug("Unscheduling item at uri %s", item.uri)
-        if item.hasVideo:
+        if self._hasVideo and item.hasVideo:
             self.videocomp.remove(item.vsrc)
-        if item.hasAudio: 
+        if self._hasAudio and item.hasAudio: 
             self.audiocomp.remove(item.asrc)
 
     def addPlaylist(self, data):
@@ -256,6 +265,9 @@
         self._samplerate = props.get('samplerate', 44100)
         self._channels = props.get('channels', 2)
 
+        self._hasAudio = props.get('audio', True)
+        self._hasVideo = props.get('video', True)
+
         pipeline = self._buildPipeline() 
         self._setupClock(pipeline)
 

Modified: flumotion/trunk/flumotion/component/producers/playlist/playlist.xml
==============================================================================
--- flumotion/trunk/flumotion/component/producers/playlist/playlist.xml	(original)
+++ flumotion/trunk/flumotion/component/producers/playlist/playlist.xml	Wed May  9 16:18:41 2007
@@ -14,6 +14,11 @@
       <synchronization required="yes" clock-priority="110" />
 
       <properties>
+        <property name="audio" type="boolean"
+                  description="Output audio"/>
+        <property name="video" type="boolean"
+                  description="Output video"/>
+
         <property name="height" type="int"
                   description="Scaled output height of video" />
         <property name="width" type="int"

Modified: flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py
==============================================================================
--- flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py	(original)
+++ flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py	Wed May  9 16:18:41 2007
@@ -118,10 +118,12 @@
         # Duration adjustments -> Reflect into gnonlin timeline
         if prev and prev.timestamp + prev.duration > newitem.timestamp:
             prev.duration = newitem.timestamp - prev.timestamp
-            prev.asrc.props.duration = prev.duration
-            prev.vsrc.props.duration = prev.duration
-            prev.asrc.props.media_duration = prev.duration
-            prev.vsrc.props.media_duration = prev.duration
+            if prev.asrc:
+                prev.asrc.props.duration = prev.duration
+                prev.asrc.props.media_duration = prev.duration
+            if prev.vsrc:
+                prev.vsrc.props.duration = prev.duration
+                prev.vsrc.props.media_duration = prev.duration
         if next and timestamp + newitem.duration > next.timestamp:
             newitem.duration = next.timestamp - newitem.timestamp
 


More information about the flumotion-commit mailing list