Transform plugin outbuf - plugin write problem

张若 zr92zr at gmail.com
Tue May 16 08:46:45 UTC 2017


In 3, I forget to put 1 line while writing the email:
gst_plugin_template_transform (GstBaseTransform * base, GstBuffer *inbuf,
GstBuffer * outbuf)
{
   GstMapInfo map_in;
   GstMapInfo map_out;
   gst_buffer_map (inbuf, &map_in, GST_MAP_READ);
   gst_buffer_map (outbuf, &map_out, GST_MAP_WRITE);
   map_out.data = map_in.data;
   gst_buffer_unmap (inbuf, &map_in);
   gst_buffer_unmap (outbuf, &map_out);
  return GST_FLOW_OK;
}

2017-05-16 9:03 GMT+02:00 张若 <zr92zr at gmail.com>:

> Actually, I just write based on the gsttransform.c/h in gst-template.
> I only modify the part with transform_ip () to transform ().
> In details:
> 1. Change the definition to:
>     static GstFlowReturn gst_plugin_template_transform (GstBaseTransform *
> base, GstBuffer *inbuf,
>     GstBuffer * outbuf);
> 2. Change class init to:
>    GST_BASE_TRANSFORM_CLASS (klass)->transform =
>       GST_DEBUG_FUNCPTR (gst_plugin_template_transform);
> 3. Change the main flow to:
>     static GstFlowReturn
> gst_plugin_template_transform (GstBaseTransform * base, GstBuffer *inbuf,
> GstBuffer * outbuf)
> {
>    GstMapInfo map_in;
>    GstMapInfo map_out;
>    gst_buffer_map (inbuf, &map_in, GST_MAP_READ);
>    gst_buffer_map (outbuf, &map_out, GST_MAP_WRITE);
>    gst_buffer_unmap (inbuf, &map_in);
>    gst_buffer_unmap (outbuf, &map_out);
>   return GST_FLOW_OK;
> }
>
> The other parts are remained. However, it only displays black, and when i
> check the outbuf, it has camera capture data.
>
> Best regards,
>
> Ruo
>
>
> 2017-05-15 16:48 GMT+02:00 Nicolas Dufresne <nicolas at ndufresne.ca>:
>
>> Le lundi 15 mai 2017 à 16:04 +0200, 张若 a écrit :
>> > When I use GstFlowReturn (*transform_ip) (GstBaseTransform *trans,
>> > GstBuffer *buf), it works fine. Inside the function I do nothing to
>> > the buffer. The ximagesink display is the camera capture.
>> >
>> > Because of what I need is to change the buffer size, I come
>> > to GstFlowReturn (*transform) (GstBaseTransform *trans, GstBuffer
>> > *inbuf, GstBuffer *outbuf).
>> > In this function, I first do a simple test with copying inbuf to
>> > outbuf. I check the data in outbuf which seems to be changed with
>> > camera captures. However, the ximagesink display is always black. I
>> > don't know why. It should be same to what I did in (*transform_ip),
>> > but not.
>>
>> This is most likely a bug in your code, which isn't visible to us.
>>
>> regards,
>> Nicolas
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170516/757d3cb1/attachment-0001.html>


More information about the gstreamer-devel mailing list