[gst-devel] where is library gst.h?
Fabian Hergenreder
fabian_h at uol.com.ar
Sat Jul 9 14:37:35 CEST 2005
> Are you sure you don'T miss a ';' in an own include you include before
> gst.h.
> Best would be to attach you source and show use the full commandline.
>
I did this (that I saw in gestreamer docs)
fabian at jaguar:~/programas$ gcc -Wall $(pkg-config --cflags --libs
gstreamer-0.8) mp3play.c -o mp3rep
/usr/lib/gcc-lib/i486-linux/3.3.5/../../../libgstreamer-0.8.so: undefined
reference to `g_assert_warning'
/usr/lib/gcc-lib/i486-linux/3.3.5/../../../libgstreamer-0.8.so: undefined
reference to `g_return_if_fail_warning'
collect2: ld returned 1 exit status
this is the code
/* This is a command line mp3 player using gstreamer. It's nothing more
than
* their hello,world with one addition feature in that it prints off the
time
* while the song is playing.
*
* Just making it public for the hell of it. I did not write 100% of this
code
* I simply added a little to print off the length, time remaining...
*/
#include <stdlib.h>
#include </usr/include/gstreamer-0.8/gst/gst.h>
#define MY_TIME_FORMAT "u:%02u:%02u"
#define MY_TIME_ARGS(t) \
(guint) ((t) / (GST_SECOND * 60 * 60)), \
(guint) (((t) / (GST_SECOND * 60)) % 60), \
(guint) (((t) / GST_SECOND) % 60)
int
main (int argc, char *argv[])
{
GstElement *bin, *filesrc, *decoder, *osssink;
gst_init (&argc, &argv);
if (argc != 2) {
g_print ("usage: %s <mp3 file>\n", argv[0]);
exit (-1);
}
/* create a new bin to hold the elements */
bin = gst_pipeline_new ("pipeline");
g_assert (bin);
/* create a disk reader */
filesrc = gst_element_factory_make ("filesrc", "disk_source");
g_assert (filesrc);
g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
/* now it's time to get the decoder */
decoder = gst_element_factory_make ("mad", "decode");
if (!decoder) {
g_print ("could not find 'mad' plugin\n");
return -1;
}
/* and an audio sink */
osssink = gst_element_factory_make ("osssink", "play_audio");
g_assert (osssink);
/* add objects to the main pipeline */
gst_bin_add_many (GST_BIN (bin), filesrc, decoder, osssink, NULL);
/* link the elements */
gst_element_link_many (filesrc, decoder, osssink, NULL);
/* start playing */
gst_element_set_state (bin, GST_STATE_PLAYING);
while (gst_bin_iterate (GST_BIN (bin)))
{
gint64 len, pos;
GstFormat fmt = GST_FORMAT_TIME;
if (gst_element_query (osssink, GST_QUERY_POSITION, &fmt, &pos) &&
gst_element_query (osssink, GST_QUERY_TOTAL, &fmt, &len))
{
g_print ("Time: %" MY_TIME_FORMAT " / %" MY_TIME_FORMAT "\r",
MY_TIME_ARGS (pos), MY_TIME_ARGS (len));
}
}
/* stop the bin */
gst_element_set_state (bin, GST_STATE_NULL);
gst_object_unref (GST_OBJECT (bin));
exit (0);
}
> gst-inspect is a link to gst-inspect-0.8 (in case you are using 0.8).
> Which distribution you are one. Have you installed gstreamer by yourself
> from source or as packages. gst-inspect is part of the gstreamer (core)
> package. Try gst-<TAB> doe it show anything?
>
> Stefan
>
More information about the gstreamer-devel
mailing list