GStreamer Plugin Writer's Guide (0.8.3) | ||
---|---|---|
<<< Previous | Next >>> |
1-to-N elements don't have much special needs or requirements that
haven't been discussed already. The most important thing to take care
of in 1-to-N elements (things like tee
-elements
or so) is to use proper buffer refcounting and caps negotiation. If
those two are taken care of (see the tee
element
if you need example code), there's little that can go wrong.
Demuxers are the 1-to-N elements that need very special care, though. They are responsible for timestamping raw, unparsed data into elementary video or audio streams, and there are many things that you can optimize or do wrong. Here, several culprits will be mentioned and common solutions will be offered. Parsers are demuxers with only one source pad. Also, they only cut the stream into buffers, they don't touch the data otherwise.
Demuxers will usually contain several elementary streams, and each of those streams' properties will be defined in a stream header at the start of the file (or, rather, stream) that you're parsing. Since those are fixed and there is no possibility to negotiate stream properties with elements earlier in the pipeline, you should always use explicit caps on demuxer source pads. This prevents a whole lot of caps negotiation or re-negotiation errors.
<<< Previous | Home | Next >>> |
Special memory | Up | Data processing and downstream events |