[gst-devel] help..gstbin pad connect...

Cho Yool Je revizes at gmail.com
Wed Dec 31 02:52:52 CET 2008


Hello.
I created ghostpad for bin..and connected other elements.
but I met the error...

Error: Internal data flow error. (gstbasesrc.c(2234): gst_base_src_loop ():
/GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0:
streaming task paused, reason not-linked (-1))

My code is below...

static GstElement *make_encoder (void)
{
        GstElement *result;
        GstElement *aconv;
        GstElement *codec;
        GstElement *mux;
        GstPad *pad;
        GstCaps *caps;

        /* create result bin */
        result = gst_bin_new("encoder");
        g_assert(result);

        aconv = gst_element_factory_make("audioconvert", NULL);
        g_assert(aconv);

        /* create elements */
        codec = gst_element_factory_make("vorbisenc", NULL);
        g_assert(codec);

        mux = gst_element_factory_make("oggmux", NULL);
        g_assert(mux);

        /* add elements to result bin */
        gst_bin_add(GST_BIN(result), aconv);
        gst_bin_add(GST_BIN(result), codec);
        gst_bin_add(GST_BIN(result), mux);

        /* link elements */
        gst_element_link_pads(aconv, "src", codec, "sink");
        gst_element_link_pads(codec, "src", mux, "sink");

        /* ghost src and sink pads */
        pad = gst_element_get_static_pad(aconv, "sink");
        gst_element_add_pad(result, gst_ghost_pad_new("sink", pad));
        gst_object_unref(pad);

        pad = gst_element_get_static_pad(mux, "src");
        gst_element_add_pad(result, gst_ghost_pad_new("src", pad));
        gst_object_unref(pad);

        return result;
}

static GstElement *make_pipeline(void)
{
        GstElement *result;
        GstElement *audiosrc;
        GstElement *audiocaps;
        GstCaps *caps;
        GstElement *aconv;
        GstElement *queue;
        GstElement *sink;
        GstElement *encoder;

        result = gst_pipeline_new(NULL);
        g_assert(result);

        /* create various elements */
        audiosrc = gst_element_factory_make("audiotestsrc", NULL);
        g_object_set(audiosrc, "num-buffers", 1000, NULL);
        g_assert(audiosrc);

        audiocaps = gst_element_factory_make("capsfilter", NULL);
        g_assert(audiocaps);

        caps = gst_caps_from_string

("audio/x-raw-int,signed=true,width=16,depth=16,rate=48000,channels=1");
        g_object_set(audiocaps, "caps", caps, NULL);
        gst_caps_unref(caps);


        queue = gst_element_factory_make("queue", NULL);
        g_assert(queue);

        sink = gst_element_factory_make("filesink", NULL);
        g_object_set(sink, "location", "audio.ogg", NULL);
        g_assert(sink);

        /* add elements */
        gst_bin_add(GST_BIN(result), audiosrc);
        gst_bin_add(GST_BIN(result), audiocaps);
        gst_bin_add(GST_BIN(result), queue);
        gst_bin_add(GST_BIN(result), sink);

        encoder = make_encoder();
        gst_bin_add(GST_BIN(result), encoder);

        /* link elements */
        gst_element_link_pads(audiosrc, "src", audiocaps, "sink");
        gst_element_link_pads(audiocaps, "src", queue, "sink");
        gst_element_link_pads(queue, "src", encoder, "sink");
        gst_element_link_pads(encoder, "src", sink, "sink");

        gst_element_set_state(result, GST_STATE_READY);

        return result;
}

Please explain the incorrect point..
Thank you
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20081231/e3c5c41f/attachment.htm>


More information about the gstreamer-devel mailing list