[gst-devel] How can make playbin use my decoder to play some files

gtxia xia_guangtai at visualon.com
Tue May 8 12:27:46 CEST 2007

Hi Tim

Thank you for your detailed answers. I have solved this problem. In fact
I have studied some decoders in our repositories. But just wonder to
know the data flow and event flow clear within gstreamer framework. So
sometimes I ask some "stupid questions" ;) I touch this field just two
weeks ago. So everything is fresh to me.  I think I will become ....^_^

Thank you for your patience.



On Tue, 2007-05-08 at 10:02 +0000, Tim Muller wrote:
> Gtxia <xia_guangtai at visualon.com> wrote :
> > I am developing some decoder that are compatible with gstreamer
> > framework. Now I can use the functions such as gst_element_factory_make
> > to create my own decoder and add it a pipleline. It can play some file
> > with my own decoder well, but when I test my decoder with playbin, it
> > always complains "Message: don't know how to handle EMPTY
> > Error: You do not have a decoder installed to handle this file. You
> > might need to install the necessary plugins." What kind of functions
> > that I must implement to eliminate this complains.
> Check the following things:
>  - your element sets up template caps with the right caps
>  - the typefind element typefinds the stream in question
>    to caps that are compatible with your element
>    (make sure ... ! typefind ! yourdecoder  works)
>  - your element has a rank that's higher than any other
>    already existing decoder
>  - if you have _getcaps() functions make sure they
>    return sensible things (for a decoder, you usually
>    don't need one for the sink pad and for the source
>    pad you usually set one up implicitly via
>    gst_pad_use_fixed_caps(), and then you do
>    gst_pad_set_caps() when you start decoding; also,
>    don't forget to set the right caps on the buffers
>    you push out).
> That's all that comes to mind right now. There are plenty of decoders in our repositories, might be worth looking at some of the code to see what they do differently.
> Also, you can run get a  GST_DEBUG=*:5 debug log and grep the output for the word 'empty', then you'll see what exactly it does, ie. which caps it tries to intersect etc.
>  Cheers
>   -Tim

More information about the gstreamer-devel mailing list