Using do_transform_frame in GstVideo.VideoFilter (python)

Mathieu Duponchelle mathieu at centricular.com
Tue Mar 27 21:39:49 UTC 2018


Perfect, yes you want to report this at https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
and select the gst-python component.

On 03/27/2018 11:36 PM, dpw157 wrote:
> sure ill do that
>
> btw here is the full code with registration and ill make a bug report right
> now. I assume i report it here https://bugzilla.gnome.org/
>
>
>
> import sys
> import gi
>
> gi.require_version('Gst', '1.0')
> gi.require_version('GstVideo', '1.0')
>
> from gi.repository import GObject, Gst, GstVideo
>
> Gst.init(sys.argv)
> GObject.threads_init()
> Gst.segtrap_set_enabled(False)
>
>
> class GstTimestamp(GstVideo.VideoFilter):
>   __gstmetadata__ = ('<longname>', '<classification>',
>                      '<description>', '<author>')
>
>   __gsttemplates__ = (Gst.PadTemplate.new("sink",
>                                            Gst.PadDirection.SINK,
>                                            Gst.PadPresence.ALWAYS,
>                                            Gst.Caps.new_any()),
>                       Gst.PadTemplate.new("src",
>                                            Gst.PadDirection.SRC,
>                                            Gst.PadPresence.ALWAYS,
>                                            Gst.Caps.new_any()))
>
>   def __init__(self):
>     GstVideo.VideoFilter.__init__(self)
>
>   def do_transform_frame(self,inframe,outframe):
>
>     #this should give me that data for the frame
>     data = inframe.buffer
>     #data is None
>     print data
>
>     #dont know if im properly sending data back since 
>     #i just get blank screen 
>     return Gst.FlowReturn.OK
>
>
> #used for registration
> def plugin_init(plugin):
>     Gst.Element.register(plugin, 'timestamper', 0,
>                          GObject.type_register(GstTimestamp))
>     return True
>
> def init():
>   version = Gst.version()
>   Gst.Plugin.register_static(
>       version[0], version[1], 'timestamper', 'Timestamper',
>       plugin_init, '1.0', 'GPL', 'timestamper',
>       'plugins-demo', 'demo')
>
> init()
>
>
> def connect(bus, name):
>     def _connect(f):
>         bus.connect(name, f)
>         return f
>     return _connect
>
> def main():
>   pipeline = Gst.parse_launch('videotestsrc ! timestamper ! ximagesink')
>
>   bus = pipeline.get_bus()
>   bus.add_signal_watch()
>   #Gst.debug_set_active(True)
>   #Gst.debug_set_default_threshold(4)
>
>   @connect(bus, "message::error")
>   def on_error(bus, message):
>       pipeline.set_state(Gst.State.NULL)
>       exit(message.parse_error())
>
>   @connect(bus, "message::eos")
>   def on_eos(bus, message):
>       pipeline.set_state(Gst.State.NULL)
>       exit(0)
>
>   pipeline.set_state(Gst.State.PLAYING)
>   loop = GObject.MainLoop()
>   try:
>       loop.run()
>   except(KeyboardInterrupt):
>       pass
>
>   pipeline.set_state(Gst.State.NULL)
>
> if __name__ == '__main__':
>   main()
>
>
>
>
>
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



More information about the gstreamer-devel mailing list