<div dir="ltr">Hi, <div><br></div><div>You're setting a caps filter of type audio/x-raw between the filesource and the typefind element, but the demuxer you selected (oggdemux) does not support that on its sink pad.</div><div><br></div><div>What are you trying to do?</div><div><br></div><div>Cheers</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-07-23 2:57 GMT+02:00 doon <span dir="ltr"><<a href="mailto:don-prog@mail.ru" target="_blank">don-prog@mail.ru</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I trying to create filter using caps:<br>
*               GMainLoop *loop;<br>
                GstElement *pipeline, *source, *demuxer, *decoder,  *typefind, *conv,<br>
*sink;;<br>
                GstBus *bus;<br>
                guint bus_watch_id;<br>
<br>
<br>
                loop = g_main_loop_new(NULL, FALSE);<br>
<br>
                pipeline = gst_pipeline_new ("audio-player");<br>
                source   = gst_element_factory_make ("filesrc",       "file-source");<br>
                typefind = gst_element_factory_make ("typefind", "typefinder");<br>
                demuxer  = gst_element_factory_make ("oggdemux",      "ogg-demuxer");<br>
                decoder  = gst_element_factory_make ("vorbisdec",     "vorbis-decoder");<br>
                conv     = gst_element_factory_make ("audioconvert",  "converter");<br>
                sink     = gst_element_factory_make ("autoaudiosink", "audio-output");<br>
<br>
                if (!pipeline || !source || !demuxer || !decoder || !conv || !sink) {<br>
                        g_printerr ("Не удалось создать один из элементов конвейера. Работа<br>
приложения завершена.\n");<br>
                        return -1;<br>
                }<br>
                g_signal_connect (typefind, "have-type", G_CALLBACK (cb_typefound), loop);<br>
                g_object_set(G_OBJECT(source), "location", name_of_file, NULL);<br>
<br>
                bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));<br>
                bus_watch_id = gst_bus_add_watch(bus, bus_call, loop);<br>
                gst_object_unref(bus);<br>
<br>
                gst_bin_add_many(GST_BIN(pipeline), source, typefind, demuxer, decoder,<br>
conv, sink, NULL);<br>
<br>
                GstCaps *my_caps = gst_caps_new_simple ("audio/x-raw","rate", G_TYPE_INT,<br>
384,NULL);<br>
<br>
<br>
                gboolean test=false;<br>
                test = gst_element_link_filtered(source,typefind, my_caps);<br>
                test = gst_element_link(typefind, demuxer);<br>
                test = gst_element_link_many(decoder, conv,sink, NULL);<br>
<br>
<br>
                g_signal_connect(demuxer, "pad-added", G_CALLBACK(on_pad_added),<br>
decoder);*<br>
<br>
But get error:<br>
*Debug: gsttypefindelement.c(1169): gst_type_find_element_loop ():<br>
/GstPipeline:a<br>
udio-player/GstTypeFindElement:typefinder:<br>
stream stopped, reason not-linked*<br>
<br>
Var test == 1 after gst_element_link_filtered(source,typefind, my_caps);<br>
      test == 0 after gst_element_link(typefind, demuxer);<br>
      test == 1 after gst_element_link_many(decoder, conv,sink, NULL);<br>
If I just change gst_element_link_filtered on gst_element_link all going ok<br>
and file plays.<br>
What am I doing wrong?<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://gstreamer-devel.966125.n4.nabble.com/GstCaps-filter-issue-tp4672796.html" rel="noreferrer" target="_blank">http://gstreamer-devel.966125.n4.nabble.com/GstCaps-filter-issue-tp4672796.html</a><br>
Sent from the GStreamer-devel mailing list archive at Nabble.com.<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div><br></div>