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
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"]