Example #1
0
	def __init__(self, parent, name, sourceType, **kwargs):
		self.parent = parent
		self.name = name
		# Add elements common to all sources
		if not requireKwargs(kwargs, ["resolution", "alpha"]):
			print "Incorrect arguments supplied"
			raise Exception()
		self.alpha = gst.element_factory_make("alpha", "%salpha"%name)
		self.alpha.set_property("alpha", kwargs["alpha"])
		self.scaleCaps = gst.Caps("video/x-raw-yuv, width=%i, height=%i"%(kwargs["resolution"][0],kwargs["resolution"][1]))
		self.scaleFilter = gst.element_factory_make("capsfilter", "%scaps"%name)
		self.scaleFilter.set_property("caps", self.scaleCaps)
		self.scaler = gst.element_factory_make("videoscale", "%sscale"%name)
		self.scaler.set_property("add-borders", False)
		
		self.rateCaps = gst.Caps("video/x-raw-yuv, framerate=30/1")
		self.rateFilter = gst.element_factory_make("capsfilter", "%sratecaps"%name)
		self.rateFilter.set_property("caps", self.rateCaps)
		self.rate = gst.element_factory_make("videorate", "%srate"%name)
		
		self.parent.pipeline.add(self.alpha, self.scaleFilter, self.scaler, self.rateFilter, self.rate)
		
		
		# Create holder for list of elements created
		self.elements = []
		# Add initial elements as required		
		if sourceType == "image":
			if not requireKwargs(kwargs, ["location"]):
				print "Incorrect arguments supplied"
				raise Exception()
			self.src = gst.element_factory_make("filesrc", "%ssrc"%name)
			self.src.set_property("location", kwargs["location"])
			self.decoder = gst.element_factory_make("decodebin", "%sdec|%scolspace"%(name, name))
			self.freeze = gst.element_factory_make("imagefreeze", "%sfreeze"%name)
			self.colorspace = gst.element_factory_make("ffmpegcolorspace", "%scolspace"%name)
			self.parent.pipeline.add(self.src, self.decoder, self.freeze, self.colorspace)
			gst.element_link_many(self.src, self.decoder)
			gst.element_link_many(self.colorspace, self.scaler, self.scaleFilter, self.freeze,  self.alpha, self.rateFilter)
			self.lastElement = self.rateFilter
			self.decoder.connect("new-decoded-pad", self.new_decoded_pad)
			self.hangingConnections += 1
			self.parent.asyncStart = True
		elif sourceType == "pattern":
			if not requireKwargs(kwargs, ["pattern"]):
				print "Incorrect arguments supplied"
				raise Exception()
			self.src = gst.element_factory_make("videotestsrc", "%ssrc"%name)
			self.src.set_property("pattern", kwargs["pattern"])
			self.parent.pipeline.add(self.src)
			gst.element_link_many(self.src, self.scaler, self.scaleFilter, self.alpha, self.rateFilter)
			self.lastElement = self.rateFilter	
Example #2
0
	def __init__(self, *args, **kwargs):
		if not requireKwargs(kwargs, ["mixer", "window"]):
			print "Controller base kwargs not found"
			raise Exception()
		self.mixer = kwargs["mixer"]
		self.window = kwargs["window"]