<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Fri, Jan 8, 2016 at 7:57 AM Hernando Rojas <<a href="mailto:hrojas@lacuatro.com.ar">hrojas@lacuatro.com.ar</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sebastian, el Wed, 06 Jan 2016 10:17:23 +0200<br>
escribiste:<br>
<br>
> On Di, 2016-01-05 at 18:19 -0300, <a href="mailto:hrojas@lacuatro.com.ar" target="_blank">hrojas@lacuatro.com.ar</a> wrote:<br>
> > Hello,<br>
> >          I am trying to develop a custom video filter plugin but I am<br>
> > getting an empty buffer in VideoFrame parameter.<br>
> ><br>
> > The code is as follows:<br>
> ><br>
> >      def do_transform_frame_ip(self, f):<br>
> >          try:<br>
> >              data = f.buffer.extract_dup(0, f.buffer.get_size())<br>
> >              bgr = numpy.ndarray((1080, 1920, 3), buffer=data, <br>
> > dtype=numpy.uint8)<br>
> >              print bgr.shape</blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> >          except Exception as e:<br>
> >              print e<br>
> ><br>
> >          return Gst.FlowReturn.OK<br>
> ><br>
> > VideoFrame metada is fine, but Buffer is None<br>
><br>
> What do you mean with metadata? The other fields of the GstVideoFrame?<br>
> Are the plane data pointers set to something useful too?<br>
Sorry, I meant streaminfo. VideoInfo struct looks ok.<br>
eg.<br>
gst-launch-1.0 videotestsrc ! 'video/x-raw, format=BGR, width=1920, height=1080' ! videoconvert ! videoscale ! videofiltertest ! fakesink<br>
<br>
outputs this VideoInfo caps:<br>
video/x-raw, format=(string)BGR, width=(int)1920, height=(int)1080, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)sRGB, framerate=(fraction)30/1<br>
<br>
and these plane data pointers:<br>
[140355236265984, 140356041679008, 0, 140359531233279]<br>
<br>
But buffer field is None<br>
<br>
><br>
> My guess would be that this is something wrong with the Python<br>
> bindings, and them not being able to handle GstBuffer typed struct<br>
> fields.<br>
Surely, something went wrong after upgrade to lastests versions.<br>
I had been using 1.5.0 and updated to 1.6.2  (also tried 1.7.1 with no luck)<br>
<br>
><br>
> You could also try using GstBaseTransform directly instead of<br>
> GstVideoFilter if you're going to directly access the buffers directly<br>
> and not using GstVideoFrame... however from looking at your code you<br>
> should probably use more of the GstVideoFrame metadata instead. The row<br>
> stride for example.<br>
<br>
I tried GstBaseTransform with do_transform() and it works! I can get and change buffer bytes.<br>
So I'll use that insted.<br></blockquote><div><br></div><div>Curious.  I have code that worked on 1.5 that no longer works on 1.6.  I can no longer create my filter element with Gst.Element.make("foo") anymore.  Could you share how you are registering your element?  Do you know if that changed between 1.5 and 1.6?<br><br>Thanks<br>Kevron</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thank you very much!<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div></div>