g_object_set assertion, G_IS_OBJECT (object) failed
Michael Gruner
michael.gruner at ridgerun.com
Mon Jan 27 14:24:46 UTC 2020
The assertion failure means that gst_bin_get_by_name failed to return an element. In your case it did because there is no element named “testsink” in the pipeline.
Change the pipeline to something like:
> data->source=gst_parse_launch("v4l2src ! appsink name=testsink",NULL);
Michael
> On Jan 27, 2020, at 07:25, gonengoktug <gonengoktug at gmail.com> wrote:
>
> Hi guys, as I posted before, I still want to capture frames from stream and
> to do that I write some code but it gives me error that I can't figure it
> out. Can anyone help me or make me understand this error.
>
> Here is my test code
> static void on_new_buffer_from_source (GstElement * elt, ProgramData * data)
> {
> GstSample *sample;
> guint size;
> gpointer raw_buffer;
> GstBuffer *app_buffer, *buffer;
> GstElement *source;
> GstMapInfo map;
> GstStructure *s;
> const int width=g_value_get_int(gst_structure_get_value(s, "width"));
> const int height=g_value_get_int(gst_structure_get_value(s, "height"));
>
> sample=gst_app_sink_pull_sample(GST_APP_SINK(elt));
> buffer=gst_sample_get_buffer(sample);
> if(gst_buffer_map(buffer,&map,GST_MAP_READ))
> g_printerr("frame is catched");
> else
> g_printerr("frame is missed");
> cv::Mat
> frame(cv::Size(width,height),CV_8UC3,(char*)map.data,cv::Mat::AUTO_STEP);
> cv::namedWindow("frames",CV_WINDOW_AUTOSIZE);
> cv::imshow("frame",frame);
>
>
> }
>
> int main(int argc, char*argv[]) {
>
> gchar *filename = NULL;
> ProgramData *data;
> gchar *string = NULL;
> GstBus *bus = NULL;
> GstElement *testsink = NULL;
> GstElement *testsource = NULL;
>
> gst_init(&argc,&argv);
>
>
> data = g_new0 (ProgramData, 1);
>
> data->loop = g_main_loop_new (NULL, FALSE);
>
> data->source=gst_parse_launch("v4l2src ! autovideosink",NULL);
>
> bus = gst_element_get_bus (data->source);
> gst_bus_add_watch (bus, (GstBusFunc) on_source_message, data);
>
> testsink = gst_bin_get_by_name (GST_BIN (data->source), "testsink");
> g_object_set(G_OBJECT(testsink), "emit-signals", TRUE, "sync", FALSE,
> NULL);
> g_signal_connect (testsink, "new-buffer", G_CALLBACK
> (on_new_buffer_from_source), data);
> gst_object_unref (testsink);
> }
> I tried to debug but whenever g_object_set command runs, gives me assertion
> error. Also you can give me any advice about my code. Thanks
>
>
>
>
>
> --
> 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