GNOME Bugzilla – Bug 743510
inter: Add an interappsrc and interappsink element
Last modified: 2018-11-03 13:29:56 UTC
This element is meant to be used for inter-pipeline communication of non-raw buffers.
Created attachment 295416 [details] [review] inter: Add interappsrc/sink elements This adds elements to allow using arbitrary data with the inter* mechanism. It is assumed that the sink may consume data more slowly than the source produces it (and if this happens, some buffers might be lost).
Created attachment 295417 [details] [review] inter: Factor out caps/buffer handling in interapp* This is the first step in making buffer handling a bit more sophisticated (store keyframes, etc.) for when interappsrc is plugged in much later than interappsink.
Created attachment 295418 [details] [review] inter: Queue up streamheaders for delayed clients in interapp* This is taken essentially verbatim from multihandlesink -- when a client joins the stream, we explicitly send out the stream headers from caps (if present), so that decoders downstream are appropriately initialised even if they missed initial buffers.
Created attachment 295419 [details] [review] inter: Use vorbis instead of opus for testing vorbisdec seems a bit more susceptible to missing headers, so allows for testing the header push code a bit better.
Created attachment 295420 [details] [review] inter: Add more intelligent buffering of keyframes in interapp* This allows clients that join late to be able to start quickly without having to wait for a keyframe.
The idea with the GstDeferredClient is that it could become helper API for other cases such as multi*sink and tee where a connection/pad might come in at an arbitrary point in the stream.
First some bikeshedding, I would call it just "intersrc" and "intersink". It's as much "app" as any of the other elements :) Will review in detail later.
Would intersrc/intersink just replace the audio/video specific ones? Would it make sense to forward segments instead of making the src into always a live src?
The audio/video specific ones have some additional features on top of this, like outputting silence/black if there's no input.
Apart from the naming issue is there any problem to address in the patches? It'd be great to merge this at some point :)
FWIW, there's something very similar to this in https://github.com/sdroege/openwebrtc/blob/76a5da10dbd8e9805ccd03f065270a340e2635df/owr/owr_inter_src.c now. It's simpler because of additional constraints on all pipelines involved (same clock, same base time, live).
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/204.