All pastes #373217 Raw Edit

tamere

public python v1 · immutable
#373217 ·published 2007-02-26 17:05 UTC
rendered paste body
    def removeImageOverlay(self) :        """Removes the image overlay from the running pipeline.           PROBLEM : This method should visually remove the image overlay           PROBLEM : from the video, but while there's NO error and the logs           PROBLEM : tell that the unlinking was successful, the image still           PROBLEM : appear onto the video.        """        if (self.pipeline is not None) and (self.imageoverlaybin is not None) :            srcpad = self.imageoverlaybin.get_pad("src")            peer = srcpad.get_peer()            if peer :                srcpad.unlink(peer)            self.pipeline.remove(self.imageoverlaybin)            self.imageoverlaybin.set_state(gst.STATE_NULL)            del self.imageoverlaybin            self.imageoverlaybin = None            self.logDebug("Cleared image layer")    def addImageOverlay(self) :        """Adds the image overlay to the running pipeline.           This method works fine.        """        if (self.pipeline is not None) and (self.imagefile is not None) :            if self.imageoverlaybin is not None :                self.removeImageOverlay()            self.imageoverlaybin = gst.Bin("ImageOverlay")            filesrc = gst.element_factory_make("filesrc")            filesrc.set_property("location", self.imagefile)            pngdec = gst.element_factory_make("pngdec")            alphacolor = gst.element_factory_make("alphacolor")            videoscale = gst.element_factory_make("videoscale")            queue = gst.element_factory_make("queue")            self.imageoverlaybin.add(filesrc, pngdec, alphacolor, videoscale, queue)            gst.element_link_many(filesrc, pngdec, alphacolor, videoscale)            structure = gst.Structure("video/x-raw-yuv")            (width, height) = [int(dim) for dim in self.resolution.split("x")] # e.g. '640x480'            structure["width"] = width            structure["height"] = height            caps = gst.Caps(structure)            videoscale.link(queue, caps)            ghostpad = gst.GhostPad("src", queue.get_pad("src"))            self.imageoverlaybin.add_pad(ghostpad)            self.pipeline.add(self.imageoverlaybin)            mixer = self.pipeline.get_by_name("VideoMixer")            gst.element_link_many(self.imageoverlaybin, mixer)            self.imageoverlaybin.set_state(gst.STATE_PLAYING)            self.logDebug("Loaded image layer")    def setImageOverlay(self, imagedatas) :        """Defines an image to overlay onto the video.           This method works fine.        """        if image :            self.imagefile = "/tmp/image.png" # TODO : change this            outfile = open(self.imagefile, "w+b")            outfile.write(imagedatas)            outfile.close()            self.addImageOverlay()        else :            self.removeImageOverlay()            self.imagefile = None        return False