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