segmentation fault in playing gstreamer pipeline
Mayank Agarwal
mayank77fromindia at gmail.com
Fri Sep 5 05:05:45 PDT 2014
Hi,
I have written a simple application to play webm file below.
#include <gst/gst.h>
> #include <glib.h>
static gboolean
bus_call (GstBus *bus,
GstMessage *msg,
> gpointer data)
{
GMainLoop *loop = (GMainLoop *) data;
switch (GST_MESSAGE_TYPE (msg)) {
case GST_MESSAGE_EOS:
g_print ("End of stream\n");
g_main_loop_quit (loop);
break;
case GST_MESSAGE_ERROR: {
gchar *debug;
GError *error;
gst_message_parse_error (msg, &error, &debug);
g_free (debug);
g_printerr ("Error: %s\n", error->message);
g_error_free (error);
g_main_loop_quit (loop);
break;
}
default:
break;
}
return TRUE;
}
int main(int argc,char *argv[])
{
GMainLoop *loop;
GstElement *htpsrc,*demuxer,*decoder,*ffmpeg,*sink;
GstElement *pipeline;
GstBus *bus;
guint bus_watch_id;
gst_init(&argc,&argv);
loop = g_main_loop_new (NULL, FALSE);
htpsrc = gst_element_factory_make("filesrc","htonesrc");
demuxer = gst_element_factory_make("matroskademux","demux");
decoder = gst_element_factory_make("vp8dec","vp8decoder");
ffmpeg = gst_element_factory_make("ffmpegcolorspace","httpsrc");
sink = gst_element_factory_make("ximagesink","httpsrc");
if(!htpsrc)
{
g_print("source element could not be created\n");
return;
}
if(!demuxer)
{
g_print("demuxer element could not be created\n");
return;
}
if(!decoder)
{
g_print("decoder element could not be created\n");
return;
}
if(!ffmpeg)
{
g_print("ffmpeg element could not be created\n");
return;
}
if(!sink)
{
g_print("sink element could not be created\n");
return;
}
g_print("before creating pipeline \n");
pipeline = gst_pipeline_new("basic_player");
if(!pipeline)
{
g_printf("Pipeline could not be created");
return;
}
g_object_set (G_OBJECT (htpsrc), "location", argv[1], NULL);
bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
bus_watch_id = gst_bus_add_watch(bus,bus_call,loop);
gst_object_unref(loop);
gst_bin_add_many(GST_BIN (pipeline),htpsrc,demuxer,decoder,ffmpeg,sink);
gst_element_link_many(htpsrc,demuxer,decoder,ffmpeg,sink);
gst_element_set_state(pipeline,GST_STATE_PLAYING);
g_print ("Rundsning...\n");
g_main_loop_run (loop);
g_print ("Returned, stopping playback\n");
gst_element_set_state (pipeline, GST_STATE_NULL);
g_print ("Deleting pipeline\n");
gst_object_unref (GST_OBJECT (pipeline));
g_source_remove (bus_watch_id);
g_main_loop_unref (loop);
return 0;
on running the executable i am getting the following error:
exampleone:20144): GStreamer-CRITICAL **: gst_object_unref: assertion
`((GObject *) object)->ref_count > 0' failed
(exampleone:20144): GStreamer-WARNING **: Name 'httpsrc' is not unique
in bin 'basic_player', not adding
Segmentation fault (core dumped)
while the following pipeline is running fine:
gst-launch souphttpsrc location=
http://video.webmfiles.org/big-buck-bunny_trailer.webm ! matroskademux
! vp8dec ! ffmpegcolorspace ! ximagesink
Please find complete log below:
:00:00.316319426 20230 0x1f65600 INFO GST_INIT
gst.c:456:gst_init_check: initialized GStreamer successfully
0:00:00.317857074 20230 0x1f65600 INFO GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstcoreelements.so"
loaded
0:00:00.318031251 20230 0x1f65600 INFO GST_ELEMENT_FACTORY
gstelementfactory.c:374:gst_element_factory_create: creating element
"filesrc" named "htonesrc"
0:00:00.318548875 20230 0x1f65600 INFO GST_ELEMENT_PADS
gstelement.c:728:gst_element_add_pad:<GstBaseSrc at 0x22a0080> adding pad
'src'
0:00:00.320590434 20230 0x1f65600 INFO GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstmatroska.so" loaded
0:00:00.320789972 20230 0x1f65600 INFO GST_ELEMENT_FACTORY
gstelementfactory.c:374:gst_element_factory_create: creating element
"matroskademux" named "demux"
0:00:00.321194515 20230 0x1f65600 INFO GST_ELEMENT_PADS
gstelement.c:728:gst_element_add_pad:<GstMatroskaDemux at 0x22a8060>
adding pad 'sink'
0:00:00.323143688 20230 0x1f65600 INFO GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstvp8.so" loaded
0:00:00.323336250 20230 0x1f65600 INFO GST_ELEMENT_FACTORY
gstelementfactory.c:374:gst_element_factory_create: creating element
"vp8dec" named "vp8decoder"
0:00:00.323779132 20230 0x1f65600 INFO GST_ELEMENT_PADS
gstelement.c:728:gst_element_add_pad:<GstBaseVideoCodec at 0x22adbf0>
adding pad 'sink'
0:00:00.323973401 20230 0x1f65600 INFO GST_ELEMENT_PADS
gstelement.c:728:gst_element_add_pad:<GstBaseVideoCodec at 0x22adbf0>
adding pad 'src'
0:00:00.324577863 20230 0x1f65600 INFO GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstffmpegcolorspace.so"
loaded
0:00:00.324746060 20230 0x1f65600 INFO GST_ELEMENT_FACTORY
gstelementfactory.c:374:gst_element_factory_create: creating element
"ffmpegcolorspace" named "httpsrc"
0:00:00.325943932 20230 0x1f65600 INFO GST_ELEMENT_PADS
gstelement.c:728:gst_element_add_pad:<GstBaseTransform at 0x22be040>
adding pad 'sink'
0:00:00.329914803 20230 0x1f65600 INFO GST_ELEMENT_PADS
gstelement.c:728:gst_element_add_pad:<GstBaseTransform at 0x22be040>
adding pad 'src'
0:00:00.331701414 20230 0x1f65600 INFO GST_PLUGIN_LOADING
gstplugin.c:859:gst_plugin_load_file: plugin
"/usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstximagesink.so" loaded
0:00:00.332159464 20230 0x1f65600 INFO GST_ELEMENT_FACTORY
gstelementfactory.c:374:gst_element_factory_create: creating element
"ximagesink" named "httpsrc"
0:00:00.332686392 20230 0x1f65600 INFO GST_ELEMENT_PADS
gstelement.c:728:gst_element_add_pad:<GstBaseSink at 0x22c4400> adding
pad 'sink'
before creating pipeline
0:00:00.333075046 20230 0x1f65600 INFO GST_ELEMENT_FACTORY
gstelementfactory.c:374:gst_element_factory_create: creating element
"pipeline" named "basic_player"
0:00:00.333361625 20230 0x1f65600 INFO filesrc
gstfilesrc.c:374:gst_file_src_set_location: filename : location=
0:00:00.337114305 20230 0x1f65600 INFO filesrc
gstfilesrc.c:375:gst_file_src_set_location: uri :
file:///home/ubuntu/gstreamer/5sept/location=
(exampleone:20230): GStreamer-CRITICAL **: gst_object_unref: assertion
`((GObject *) object)->ref_count > 0' failed
(exampleone:20230): GStreamer-WARNING **: Name 'httpsrc' is not unique
in bin 'basic_player', not adding
[2]+ Done gedit debugfile.txt
Segmentation fault (core dumped)
Regards,
Mayank
More information about the gstreamer-devel
mailing list