Skip to content

Qmlsink video take 4

Tomaz Canabrava requested to merge tcanabrava/kirogi:qmlsink_video_take_4 into master

This is a complete rewrite of my old video qmlsink work. 1 - It uses a lof of ideas that I had developing the Qml Sink for QGC 2 - It uses a lot of insigths from @patrickpereira

There are two classes and three Qml elements in this, one from GStreamer, two from Kirogi: GStreamerIntegration - This class prepares the pipeline, sink and does all of the work. VideoSurface - This class handles the Pipeline State (pause / play / etc). state must be handled in it because of the render thread.

Whenever we request a state chnge in the pipeline, VideoSurface prepares the logic and calls update(), that will fake a update request on the Render thread - that will in turn call updatePaintNode() - this is the only local that the gstreamer pipeline should change it's status, if we change anywhere else, we get a black screen instead of a playing video.

VideoSurface holds a Pointer to the GStreamerIntegration, and uses that to calls directly when in need.

The pipeline creation is also modified a bit to add support for tee's in the future.

Merge request reports