Package flumotion :: Package component :: Package producers :: Package videotest :: Module videotest
[hide private]

Source Code for Module flumotion.component.producers.videotest.videotest

  1  # -*- Mode: Python -*- 
  2  # vi:si:et:sw=4:sts=4:ts=4 
  3  # 
  4  # Flumotion - a streaming media server 
  5  # Copyright (C) 2004,2005,2006,2007 Fluendo, S.L. (www.fluendo.com). 
  6  # All rights reserved. 
  7   
  8  # This file may be distributed and/or modified under the terms of 
  9  # the GNU General Public License version 2 as published by 
 10  # the Free Software Foundation. 
 11  # This file is distributed without any warranty; without even the implied 
 12  # warranty of merchantability or fitness for a particular purpose. 
 13  # See "LICENSE.GPL" in the source distribution for more information. 
 14   
 15  # Licensees having purchased or holding a valid Flumotion Advanced 
 16  # Streaming Server license may use this file in accordance with the 
 17  # Flumotion Advanced Streaming Server Commercial License Agreement. 
 18  # See "LICENSE.Flumotion" in the source distribution for more information. 
 19   
 20  # Headers in this file shall remain intact. 
 21   
 22  import gst 
 23   
 24  from flumotion.common import errors, gstreamer, messages 
 25  from flumotion.common.i18n import N_, gettexter 
 26  from flumotion.component import feedcomponent 
 27   
 28  __version__ = "$Rev: 6695 $" 
 29  T_ = gettexter() 
 30   
 31   
32 -class VideoTestMedium(feedcomponent.FeedComponentMedium):
33 - def remote_setPattern(self, pattern):
34 return self.comp.set_element_property('source', 'pattern', 35 pattern)
36
37 -class VideoTest(feedcomponent.ParseLaunchComponent):
38 componentMediumClass = VideoTestMedium 39
40 - def init(self):
41 self.uiState.addKey('pattern', 0)
42
43 - def get_pipeline_string(self, properties):
44 format = properties.get('format', 'video/x-raw-yuv') 45 46 if format == 'video/x-raw-yuv': 47 format = '%s,format=(fourcc)I420' % format 48 49 # Filtered caps 50 struct = gst.structure_from_string(format) 51 for k in 'width', 'height': 52 if k in properties: 53 struct[k] = properties[k] 54 55 if 'framerate' in properties: 56 framerate = properties['framerate'] 57 struct['framerate'] = gst.Fraction(framerate[0], framerate[1]) 58 59 # always set par 60 struct['pixel-aspect-ratio']= gst.Fraction(1,1) 61 if 'pixel-aspect-ratio' in properties: 62 par = properties['pixel-aspect-ratio'] 63 struct['pixel-aspect-ratio'] = gst.Fraction(par[0], par[1]) 64 65 # If RGB, set something ffmpegcolorspace can convert. 66 if format == 'video/x-raw-rgb': 67 struct['red_mask'] = 0xff00 68 caps = gst.Caps(struct) 69 70 is_live = 'is-live=true' 71 72 overlay = "" 73 overlayTimestamps = properties.get('overlay-timestamps', False) 74 if overlayTimestamps: 75 overlay = " timeoverlay ! " 76 77 return "videotestsrc %s name=source ! " % is_live + overlay + \ 78 "identity name=identity silent=TRUE ! %s" % caps
79 80 # Set properties
81 - def configure_pipeline(self, pipeline, properties):
82 def notify_pattern(obj, pspec): 83 self.uiState.set('pattern', int(obj.get_property('pattern')))
84 85 source = self.get_element('source') 86 source.connect('notify::pattern', notify_pattern) 87 if 'pattern' in properties: 88 source.set_property('pattern', properties['pattern']) 89 90 if 'drop-probability' in properties: 91 vt = gstreamer.get_plugin_version('coreelements') 92 if not vt: 93 raise errors.MissingElementError('identity') 94 if not vt > (0, 10, 12, 0): 95 self.addMessage( 96 messages.Warning(T_(N_( 97 "The 'drop-probability' property is specified, but " 98 "it only works with GStreamer core newer than 0.10.12. " 99 "You should update your version of GStreamer.")))) 100 else: 101 drop_probability = properties['drop-probability'] 102 if drop_probability < 0.0 or drop_probability > 1.0: 103 self.addMessage( 104 messages.Warning(T_(N_( 105 "The 'drop-probability' property can only be " 106 "between 0.0 and 1.0.")))) 107 else: 108 identity = self.get_element('identity') 109 identity.set_property('drop-probability', 110 drop_probability)
111