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