[gst-devel] A big problem !! HELP !!!!!

Rémi BUISSON remi.buisson at viotech.net
Wed Sep 17 13:45:33 CEST 2008


Tim-Philipp Müller wrote:
> On Wed, 2008-09-17 at 08:54 +0200, Rémi BUISSON wrote:
>
>   
>> up !
>>     
>
> You may find http://www.catb.org/~esr/faqs/smart-questions.html a useful read.
>   
Indeed : stupid subject ;-)
Sorry I'm not a very regular customer of mailing lists ...
>
>   
>> Rémi BUISSON wrote:
>>     
>>> I have to generate an XML code containing available plugins of 
>>> gstreamer
>>>       
>
> You mean something like gst-xmlinspect-0.10 ?
>   
Not so complete. I would like something like that :
<modulesList>
          <module>metadatademux</module>
          <module>multipartdemux</module>
          <module>mpegtsparse</module>
          <module>vorbisparse</module>
...
</modulesList>
>   
>>> (...) but I have a problem in listing gstreamer modules.
>>>
>>> I attach an archive with a bug and I don't know how to fix it ... 
>>> maybe a gstreamer bug ?
>>> It looks like a pointer kind bug.
>>>
>>> With valgrind there is a lot of errors.
>>>
>>> Please compile it with: make depends && make
>>>
>>> execute : build/client
>>>
>>> Try to comment "xmlDocPtr doc;" in xml_parser.c" and re-test ...
>>>
>>> On my side I get 265 modules with the first step and 9 in the second ...
>>>
>>> Any idea ?
>>>       
>
> Chances that anyone will actually look at your code or even try it are
> much much higher if your code is one single uncompressed self-contained
> source file that doesn't need modifying before being run.
>   
More practical for you indeed ... :-S

Actually I didn't want to modify the code I extracted from playbin 
source but I finally found a more convenient filter for my purpose :

gboolean element_filter(GstPluginFeature *feature,
             FilterData *data)
{
  const gchar *klass = NULL;
 
  /* we only care about element factories */
  if(!GST_IS_ELEMENT_FACTORY(feature))
    return FALSE;
 
  klass = gst_element_factory_get_klass(GST_ELEMENT_FACTORY(feature));
  if(g_strrstr(klass, "Demux") == NULL &&
     g_strrstr(klass, "Decoder") == NULL &&
     g_strrstr(klass, "Depayloader") == NULL &&
     g_strrstr(klass, "Parse") == NULL)
    return FALSE;
 
  return TRUE;
 
}

...
/* get the list of the modules */
  modulesList = gst_default_registry_feature_filter((GstPluginFeatureFilter)
                            element_filter,
                            FALSE, &data);
  printDebug("%d modules available\n", (int) g_list_length(modulesList));
  for(walk = modulesList; walk != NULL; walk = g_list_next(walk))
    {
      mod = xmlNewNode(NULL, BAD_CAST NODE_MODULE);
      text = xmlNewDocText(doc, BAD_CAST (char 
*)gst_plugin_feature_get_name(walk->data));
      tmp = xmlAddChildList(mod, text);
      tmp = xmlAddChildList(modLst, mod);
    }
 
  gst_plugin_feature_list_free(modulesList);
...

So, problem resolved.

Thanks for your reply and your precious link :-)
> Cheers
>  -Tim
>
>   
Cheers,

Rémi
>
> -------------------------------------------------------------------------
> 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
>   




More information about the gstreamer-devel mailing list