Hello,
I'm writing a simple test of appsrc, the appsrc generates 1x1 BGRA pixels with framerate 1/1: ---------------------------------------- GstCaps *srcCaps; srcCaps = gst_caps_new_simple("video/x-raw", "width", G_TYPE_INT, 1, "height", G_TYPE_INT, 1, "format", G_TYPE_STRING, "BGRA", "framerate", GST_TYPE_FRACTION, 1, 1, NULL); gst_app_src_set_caps(appSrc, srcCaps); ---------------------------------------- the need_data callback will push a red color pixel when be invoked, but it displays pink instead of red color on the screen: ---------------------------------------- void cb_need_data(GstAppSrc *src, guint length, gpointer user_data) { GstBuffer *buffer; guint8 data[] = {0, 0, 255, 255}; //red color in BGRA buffer = gst_buffer_new_and_alloc(4); // 4 bytes for 1x1 pixel gst_buffer_insert_memory(buffer, 0, gst_memory_new_wrapped(GST_MEMORY_FLAG_READONLY, &data[0], 4, 0, 4, NULL, NULL)); //set time and duration ... } ---------------------------------------- if I write buffer one by one, I do get the red color as expected ---------------------------------------- for(int i=0; i < 4; i++) { gst_buffer_memset(buffer, i, data[i], 1); } ---------------------------------------- need advice how to use gst_memory_new_wrapped, thanks -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi
On one hand, “guint8 data[]” is allocated in the stack, so it is local to the current function. Contents may change as soon as the function ends. That would explain why the copy works. Try allocating it on the heap. On the other hand, I believe “get_buffer_new_and_alloc” is deprecated. You may take a look at “gst_buffer_new_allocate”, or if you want to wrap a pointer “gst_buffer_new_wrapped” and “gst_buffer_new_wrapped_full”. There is no need to allocate a memory if you are inserting a wrapped memory later. https://developer.gnome.org/gstreamer/stable/gstreamer-GstBuffer.html#gst-buffer-new-wrapped-full Michael www.ridgerun.com > On Apr 18, 2019, at 12:32 AM, longkas <[hidden email]> wrote: > > Hello, > I'm writing a simple test of appsrc, the appsrc generates 1x1 BGRA pixels > with framerate 1/1: > > ---------------------------------------- > GstCaps *srcCaps; > srcCaps = gst_caps_new_simple("video/x-raw", > "width", G_TYPE_INT, 1, > "height", G_TYPE_INT, 1, > "format", G_TYPE_STRING, "BGRA", > "framerate", GST_TYPE_FRACTION, 1, 1, > NULL); > gst_app_src_set_caps(appSrc, srcCaps); > ---------------------------------------- > > the need_data callback will push a red color pixel when be invoked, but it > displays pink instead of red color on the screen: > > ---------------------------------------- > void cb_need_data(GstAppSrc *src, guint length, gpointer user_data) { > GstBuffer *buffer; > guint8 data[] = {0, 0, 255, 255}; //red color in BGRA > buffer = gst_buffer_new_and_alloc(4); // 4 bytes for 1x1 pixel > gst_buffer_insert_memory(buffer, 0, > gst_memory_new_wrapped(GST_MEMORY_FLAG_READONLY, &data[0], 4, 0, 4, NULL, > NULL)); > //set time and duration > ... > } > ---------------------------------------- > > if I write buffer one by one, I do get the red color as expected > > ---------------------------------------- > for(int i=0; i < 4; i++) { > gst_buffer_memset(buffer, i, data[i], 1); > } > ---------------------------------------- > > need advice how to use gst_memory_new_wrapped, thanks > > > > > > > -- > Sent from: http://gstreamer-devel.966125.n4.nabble.com/ > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Thank you for the reply, that helps a lot for me.
BR -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |