Hello. I am working on a demuxer element which takes a video stream on its sink and produces two srcs, one which contains the same video data and another which contains json data as either text/plain
or application/json
.
Then the plan is I will write several elements which process this text data.
I have found gstreamer is very convenient when it comes to composability, and rather than bind to appsink, I have been writing elements to allow them to be easily swapped, configured, etc, directly with gstreamer as a framework.
I first attempted this by adding a second section pad to a BaseTransform
element, which is what I have been using to implement custom elements up until this point.
However, I realized during this process that BaseTransform
is not intended to be used for creating demuxers. I almost got it working, I could see the video buffers going out and being received and processed by downstream elements, but the json buffers would fill the downstream queue and nothing was downstream of the queue was able to receive them, which I tested with progressreport and fakesink. So I felt like I was doing something pretty wrong.
I found a few demuxer implementations I was able to reference, but they are pretty different from what I am used to writing as compared to the more standard transform
and sink
elements.
I am wondering if anyone has any recommendations for existing elements source code might be a suitable reference how to go about writing a demuxer like this.
Regards!