[gstreamer-bugs] [Bug 354671] New: Element doesn't implement handling of this stream

GStreamer (bugzilla.gnome.org) bugzilla-daemon at bugzilla.gnome.org
Wed Sep 6 11:38:30 PDT 2006


Do not reply to this via email (we are currently unable to handle email
responses and they get discarded).  You can add comments to this bug at
http://bugzilla.gnome.org/show_bug.cgi?id=354671
 GStreamer | gst-ffmpeg | Ver: 0.10.3

           Summary: Element doesn't implement handling of this stream
           Product: GStreamer
           Version: 0.10.3
          Platform: Other
        OS/Version: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-ffmpeg
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: wolfgang.beck01 at t-online.de
         QAContact: gstreamer-bugs at lists.sourceforge.net
     GNOME version: Unspecified
   GNOME milestone: Unspecified


Please describe the problem:
example program terminates with

"Error: Element doesn't implement handling of this stream. Please file a bug."



Steps to reproduce:
#include <unistd.h>
#include <gst/gst.h>

static gboolean bus_call (
        GstBus *bus,
        GstMessage *msg,
        gpointer data
    )
{
    GMainLoop *loop = 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 *err;

                gst_message_parse_error (msg, &err, &debug);
                g_free (debug);

                g_print ("Error: %s\n", err->message);
                g_error_free (err);

                g_main_loop_quit (loop);
            }
            break;
            default:
        break;
    }

    return TRUE;
}

static void cb_new_pad(GstElement *el, GstPad *pad, gpointer data)
{
    printf("pad added\n");
}
int main(int argc, char **argv)
{
    GstElement *dvsrc;
    GstElement *dvdmx;
    GstElement *dvdec;
    GstElement *scale;
    GstElement *pipe;
    GstElement *vid;
    GMainLoop *loop;
    GstBus *bus;

    gst_init(&argc, &argv);
    loop = g_main_loop_new (NULL, FALSE);

    dvsrc = gst_element_factory_make("dv1394src", "dv1394src");
    if(dvsrc == NULL) {
        printf("gst_element_factory_make dv1394src failed\n");
    }

    dvdmx = gst_element_factory_make("ffdemux_dv", "ffdemux_dv");
    if(dvdec == NULL) {
        printf("gst_element_factory_make dvdmx failed\n");
    }
    dvdec = gst_element_factory_make("ffdec_dvvideo", "ffdec_dvvideo");
    if(dvdec == NULL) {
        printf("gst_element_factory_make dvdec failed\n");
    }

    scale = gst_element_factory_make("ffvideoscale", "ffvideoscale");
    if(scale == NULL) {
        printf("gst_element_factory_make scale failed\n");
    }

    vid = gst_element_factory_make("xvimagesink", "xvimagesink");
    if(vid == NULL) {
        printf("gst_element_factory_make vid failed\n");
    }
    g_object_set(G_OBJECT(vid), "display", getenv("DISPLAY"), NULL);

    pipe = gst_pipeline_new ("dv2v4l");
    gst_bin_add_many(GST_BIN(pipe), dvsrc, dvdmx, dvdec, scale, vid, NULL);

    bus = gst_pipeline_get_bus (GST_PIPELINE (pipe));
    gst_bus_add_watch (bus, bus_call, loop);
    gst_object_unref (bus);

    if(!gst_element_link_many(dvdec, scale, vid, NULL)) {
        printf("#1gst_element_link_many failed\n");
      if(!gst_element_link_many(dvsrc, dvdmx, NULL)) {
        printf("#2gst_element_link_many failed\n");
    }
    g_signal_connect(G_OBJECT(dvdmx),
        "pad-added", G_CALLBACK(cb_new_pad), NULL);
    gst_element_set_state (pipe, GST_STATE_PLAYING);
/* error message appears in the next call */
    g_main_loop_run (loop);
    gst_element_set_state (pipe, GST_STATE_NULL);

    gst_object_unref(pipe);

    return 0;
}
  }



Actual results:


Expected results:
the 'cb_new_pad' function should be called

Does this happen every time?
yes

Other information:
a call

gst_element_link_many(dvsrc, dvdmx, dvdec, scale, vid, NULL)

fails as the ffdemux_dv (dvdmx) hasn't created its 'sometimes' pad yet
(I think this is an API design problem).


-- 
Configure bugmail: http://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.




More information about the Gstreamer-bugs mailing list