[gst-devel] Catching Bus messages on Windows

Levi Pope levi.pope at gmail.com
Mon Sep 8 21:28:02 CEST 2008


The GST_DEBUG shows me that the states are changing but I still do not see
the messages.
Also None of my queries seem to work. (Duration, Position) It seems like
there is an issue
with the gmainloop or something.

Here is the code that creates the pipe.

__declspec(dllexport) gboolean video_pipeline_construct_ts (const gchar
*uri)
{
    GstState state;
    GstEleemnt *pipe;
    GstElement *videosink;
    GstElement *filesrc;
    GstElement *demux;
    GstElement *Decode;
    GstElement *ColorSpace;
    GstElement *MultiQueue;
    GstBus *bus;
    GstPad *pad;

    pipe = NULL;

    pipe = gst_pipeline_new("Pipe");

    g_return_val_if_fail (pipe != NULL, FALSE);

    videosink= gst_element_factory_make ("xvimagesink", "videosink");
    if(!G_IS_OBJECT(videosink))
        g_warning("****************videosink == NULL!");

    filesrc = gst_element_factory_make("filesrc","source1");
    if(!G_IS_OBJECT(filesrc))
        g_warning("****************filesrc == NULL!");

    demux = gst_element_factory_make("flutsdemux","demux");
    if(!G_IS_OBJECT(demux))
        g_warning("****************flutsdemux == NULL!");

    Decode= gst_element_factory_make("decodebin","decoder");
    if(!G_IS_OBJECT(Decode))
        g_warning("****************Decode == NULL!");

    ColorSpace = gst_element_factory_make("ffmpegcolorspace","colorspace");
    if(!G_IS_OBJECT(ColorSpace))
        g_warning("****************ColorSpace == NULL!");

    MultiQueue = gst_element_factory_make("multiqueue","multiqueue");
    if(!G_IS_OBJECT(MultiQueue))
        g_warning("****************MultiQueue == NULL!");

    g_signal_connect (demux, "pad-added", G_CALLBACK (new_demux_pad),
player);

    g_signal_connect (MultiQueue, "pad-added", G_CALLBACK
(new_multiqueue_pad), player);

    g_signal_connect (Decode, "new-decoded-pad", G_CALLBACK
(cb_TS_DEC_New_Pad), player);


    gst_bin_add(GST_BIN(pipe),filesrc);

    gst_bin_add(GST_BIN(pipe),demux);

    gst_bin_add(GST_BIN(pipe),Multiqueue);

    gst_bin_add(GST_BIN(pipe),Decode);

    vbin = gst_bin_new("vbin");
    g_assert(vbin);
    gst_bin_add_many(GST_BIN(vbin) ColorSpace, videosink, NULL);
    if(!gst_element_link_many(ColorSpace, videosink, NULL))
    {
        debug("****************Failed to link vbin elements!");
    }

    if(!gst_element_link_many(filesrc,demux, NULL))
    {
        debug("****************Failed to link pipe elements!");
    }

    pad = gst_element_get_pad (ColorSpace, "sink");
    gst_element_add_pad (vbin, gst_ghost_pad_new ("sink", pad));
    gst_object_unref (pad);

    gst_bin_add(GST_BIN(pipe),vbin);

    bus = gst_pipeline_get_bus (GST_PIPELINE (pipe));

    if(bus)
    {
        debug ("got video BUS.");

        gst_bus_add_watch (bus, pipeline_bus_callback, NULL);

        gst_bus_set_sync_handler (bus, gst_bus_sync_signal_handler, NULL);
        g_signal_connect (bus, "sync-message::element", G_CALLBACK
(video_bus_element_sync_message), NULL);

        gst_object_unref (bus);
   }
   else
   {
        debug ("Could not get video BUS.");
   }


    // Set the pipeline to the proper state
    gst_element_get_state (pipe, &state, NULL, 0);
    if (state >= GST_STATE_PAUSED) {
        gst_element_set_state (pipe, GST_STATE_READY);
    }

    debug ("Setting Filesrc Location.");
    if(filesrc != NULL)
    {
        debug ("setting location to = %s",uri);
        g_object_set (G_OBJECT (filesrc), "location", uri, NULL);
    }

   return TRUE;

}

The gst_bus_sync_signal_handler gets called to set up the xoverlay
interface. But the pipeline_bus_callback() never
gets called.

Let me know if this is not the code you were looking for.

Thanks


On Mon, Sep 8, 2008 at 1:14 PM, Michael Smith <msmith at xiph.org> wrote:

> On Mon, Sep 8, 2008 at 11:00 AM, Levi Pope <levi.pope at gmail.com> wrote:
> > I have a GTK# app that PInvokes a c library that uses gstreamer for video
> > playback.
> > Every thing works fine on both Windows and Linux but I can not get any of
> my
> > bus messages
> > on Windows. Does anyone know why this is?
>
> You should probably provide a testcase (or at a minimum show the code
> you're talking about) if you want help with this sort of thing.
>
> Alternatively, run with GST_DEBUG and see what might be going wrong.
>
> Mike
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's
> challenge
> Build the coolest Linux based applications with Moblin SDK & win great
> prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20080908/be2e30b4/attachment.htm>


More information about the gstreamer-devel mailing list