[gst-devel] compilation issue!

Stefan Kost ensonic at hora-obscura.de
Tue May 26 22:58:53 CEST 2009


Guilherme Raymo Longo schrieb:
> Kost...
> 
> Tks for your help so far... I fixed the problem removing and compiling
> again the libraries and plug-ins. It seems that I had some problems with
> the installation.
> 
>  I am gettting a last error mensagem when I am running the spectrum
> script available in the spectrum plugin page.
> 
>    That is the problem:
> 
>    ./spectrum
> 
> (spectrum:3124): GLib-GObject-CRITICAL **: g_object_set: assertion
> `G_IS_OBJECT (object)' failed

if you get such error, ther is only one thing to do:

G_DEBUG="fatal_warnings" gdb ./spectrum
> run
...
...
(spectrum:3124): GLib-GObject-CRITICAL **: g_object_set: assertion
 `G_IS_OBJECT (object)' failed

> bt
0: ...
1: ..

and look up the stack frame in your code that calls g_object_set on an object,
where it probably has not checked before if that was created succesfully.

Stefan

> 
> (spectrum:3124): GStreamer-CRITICAL **: gst_element_link_pads_filtered:
> assertion `GST_IS_ELEMENT (dest)' failed
> can't link elements
> 
>   It does seem to have a connection with the other problem... is it a
> commom problem?? Do you think a should start over again compiling and
> installing everything???????
> 
> 
> On Sun, May 24, 2009 at 10:21 AM, Guilherme <grlongo.ireland at gmail.com
> <mailto:grlongo.ireland at gmail.com>> wrote:
> 
>     It is not  ;O)
> 
>     But you probably noticed that I was just trying different codes to
>     see if things  worked out in here ;O)!
> 
> 
>     The output is this:
> 
> 
>     pkg-config --cflags --libs gstreamer-0.10
>     -pthread -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0
>     -I/usr/lib/glib-2.0/include -I/usr/include/libxml2  -pthread
>     -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt
>     -lxml2 -lglib-2.0
> 
>     It seems that the paths are right.... strange!
> 
>     Tks!
> 
>     -------------------
> 
>     Guilherme Longo
>     Dept. Eng. da Computação
>     Unaerp
> 
>     Linux User - #484927
> 
>     *Before Asking
>     http://www.istf.com.br/?page=perguntas
> 
>     !- I'd rather die on my feet than live on my knees -!
> 
> 
> 
> 
>     Stefan Kost wrote:
> 
>         Guilherme Raymo Longo schrieb:
>          
> 
>             Mates, I am having a issue when trying to compile a simple
>             code that
>             should work without problems.
>             I have it running in other machines, but I can't figure out
>             what it
>             might be.
>                
> 
> 
> 
>         what does this print?
>         pkg-config --cflags --libs gstreamer-0.10
> 
>         Besides the code below does not look like spectrum.c :)
> 
>         Stefan
>          
> 
>             This is the output:
> 
>             bash-3.1# gcc -Wall $(pkg-config --cflags --libs
>             gstreamer-0.10) spectrum.c
>             /tmp/cccrQH9p.o: In function `bus_call':
>             spectrum.c:(.text+0xd): undefined reference to
>             `gst_message_get_type'
>             spectrum.c:(.text+0x64): undefined reference to
>             `gst_message_parse_error'
>             /tmp/cccrQH9p.o: In function `on_pad_added':
>             spectrum.c:(.text+0xdd): undefined reference to
>             `gst_element_get_static_pad'
>             spectrum.c:(.text+0xf1): undefined reference to `gst_pad_link'
>             spectrum.c:(.text+0xff): undefined reference to
>             `gst_object_unref'
>             /tmp/cccrQH9p.o: In function `main':
>             spectrum.c:(.text+0x12b): undefined reference to `gst_init'
>             spectrum.c:(.text+0x17c): undefined reference to
>             `gst_pipeline_new'
>             spectrum.c:(.text+0x194): undefined reference to
>             `gst_element_factory_make'
>             spectrum.c:(.text+0x1ac): undefined reference to
>             `gst_element_factory_make'
>             spectrum.c:(.text+0x1c4): undefined reference to
>             `gst_element_factory_make'
>             spectrum.c:(.text+0x1dc): undefined reference to
>             `gst_element_factory_make'
>             spectrum.c:(.text+0x1f4): undefined reference to
>             `gst_element_factory_make'
>             spectrum.c:(.text+0x26c): undefined reference to
>             `gst_pipeline_get_type'
>             spectrum.c:(.text+0x285): undefined reference to
>             `gst_pipeline_get_bus'
>             spectrum.c:(.text+0x29e): undefined reference to
>             `gst_bus_add_watch'
>             spectrum.c:(.text+0x2ac): undefined reference to
>             `gst_object_unref'
>             spectrum.c:(.text+0x2b4): undefined reference to
>             `gst_bin_get_type'
>             spectrum.c:(.text+0x2de): undefined reference to
>             `gst_bin_add_many'
>             spectrum.c:(.text+0x2ef): undefined reference to
>             `gst_element_link'
>             spectrum.c:(.text+0x302): undefined reference to
>             `gst_element_link_many'
>             spectrum.c:(.text+0x34e): undefined reference to
>             `gst_element_set_state'
>             spectrum.c:(.text+0x38c): undefined reference to
>             `gst_element_set_state'
>             spectrum.c:(.text+0x3a4): undefined reference to
>             `gst_object_get_type'
>             spectrum.c:(.text+0x3bd): undefined reference to
>             `gst_object_unref'
>             collect2: ld returned 1 exit status
> 
> 
> 
>             I have the PKG_CONFIG_PATH duly configured and
>             gstreamer-0.10 libraries
>             are installed. What am I missing here??????
> 
>             This is the code:
> 
>             #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;
>             }
> 
> 
>             static void
>             on_pad_added (GstElement *element,
>                          GstPad     *pad,
>                          gpointer    data)
>             {
>              GstPad *sinkpad;
>              GstElement *decoder = (GstElement *) data;
> 
>              /* We can now link this pad with the vorbis-decoder sink pad */
>              g_print ("Dynamic pad created, linking demuxer/decoder\n");
> 
>              sinkpad = gst_element_get_static_pad (decoder, "sink");
> 
>              gst_pad_link (pad, sinkpad);
> 
>              gst_object_unref (sinkpad);
>             }
> 
> 
> 
>             int
>             main (int   argc,
>                  char *argv[])
>             {
>              GMainLoop *loop;
> 
>              GstElement *pipeline, *source, *demuxer, *decoder, *conv,
>             *sink;
>              GstBus *bus;
> 
>              /* Initialisation */
>              gst_init (&argc, &argv);
> 
>              loop = g_main_loop_new (NULL, FALSE);
> 
> 
>              /* Check input arguments */
>              if (argc != 2) {
>                g_printerr ("Usage: %s <Ogg/Vorbis filename>\n", argv[0]);
>                return -1;
>              }
> 
> 
>              /* Create gstreamer elements */
>              pipeline = gst_pipeline_new ("audio-player");
>              source   = gst_element_factory_make ("filesrc",      
>             "file-source");
>              demuxer  = gst_element_factory_make ("oggdemux",    
>              "ogg-demuxer");
>              decoder  = gst_element_factory_make ("vorbisdec",    
>             "vorbis-decoder");
>              conv     = gst_element_factory_make ("audioconvert",
>              "converter");
>              sink     = gst_element_factory_make ("autoaudiosink",
>             "audio-output");
> 
>              if (!pipeline || !source || !demuxer || !decoder || !conv
>             || !sink) {
>                g_printerr ("One element could not be created. Exiting.\n");
>                return -1;
>              }
> 
>              /* Set up the pipeline */
> 
>              /* we set the input filename to the source element */
>              g_object_set (G_OBJECT (source), "location", argv[1], NULL);
> 
>              /* we add a message handler */
>              bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
>              gst_bus_add_watch (bus, bus_call, loop);
>              gst_object_unref (bus);
> 
>              /* we add all elements into the pipeline */
>              /* file-source | ogg-demuxer | vorbis-decoder | converter |
>             alsa-output */
>              gst_bin_add_many (GST_BIN (pipeline),
>                                source, demuxer, decoder, conv, sink, NULL);
> 
>              /* we link the elements together */
>              /* file-source -> ogg-demuxer ~> vorbis-decoder -> converter ->
>             alsa-output */
>              gst_element_link (source, demuxer);
>              gst_element_link_many (decoder, conv, sink, NULL);
>              g_signal_connect (demuxer, "pad-added", G_CALLBACK
>             (on_pad_added),
>             decoder);
> 
>              /* note that the demuxer will be linked to the decoder
>             dynamically.
>                 The reason is that Ogg may contain various streams (for
>             example
>                 audio and video). The source pad(s) will be created at
>             run time,
>                 by the demuxer when it detects the amount and nature of
>             streams.
>                 Therefore we connect a callback function which will be
>             executed
>                 when the "pad-added" is emitted.*/
> 
> 
>              /* Set the pipeline to "playing" state*/
>              g_print ("Now playing: %s\n", argv[1]);
>              gst_element_set_state (pipeline, GST_STATE_PLAYING);
> 
> 
>              /* Iterate */
>              g_print ("Running...\n");
>              g_main_loop_run (loop);
> 
> 
>              /* Out of the main loop, clean up nicely */
>              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));
> 
>              return 0;
>             }
> 
> 
>             Tks so much!
> 
> 
>             ------------------------------------------------------------------------
> 
>             ------------------------------------------------------------------------------
>             Register Now for Creativity and Technology (CaT), June 3rd,
>             NYC. CaT
>             is a gathering of tech-side developers & brand creativity
>             professionals. Meet
>             the minds behind Google Creative Lab, Visual Complexity,
>             Processing, & iPhoneDevCamp asthey present alongside digital
>             heavyweights like Barbarian
>             Group, R/GA, & Big Spaceship. http://www.creativitycat.com
> 
>             ------------------------------------------------------------------------
> 
>             _______________________________________________
>             gstreamer-devel mailing list
>             gstreamer-devel at lists.sourceforge.net
>             <mailto:gstreamer-devel at lists.sourceforge.net>
>             https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>                
> 
> 
> 
>         ------------------------------------------------------------------------------
>         Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
>         is a gathering of tech-side developers & brand creativity
>         professionals. Meet
>         the minds behind Google Creative Lab, Visual Complexity,
>         Processing, & iPhoneDevCamp asthey present alongside digital
>         heavyweights like Barbarian
>         Group, R/GA, & Big Spaceship. http://www.creativitycat.com
>         _______________________________________________
>         gstreamer-devel mailing list
>         gstreamer-devel at lists.sourceforge.net
>         <mailto:gstreamer-devel at lists.sourceforge.net>
>         https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> 
>          
> 
> 
> 
> 
> -- 
> Guilherme Raymo Longo
> Software Developer
> Mob. 087 - 3179008
> msn: grlongo.ireland at hotmail.com <mailto:grlongo.ireland at hotmail.com>
> skype: grlongo.ireland
> 
> 
> ------------------------------------------------------------------------
> 
> ------------------------------------------------------------------------------
> Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
> is a gathering of tech-side developers & brand creativity professionals. Meet
> the minds behind Google Creative Lab, Visual Complexity, Processing, & 
> iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
> Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel





More information about the gstreamer-devel mailing list