Finish migration of a Digital Signage application on basis of
gstreamer(-vaapi) 1.6.x (using the handoff signal in vaapisink) and info-beamer ([login to view URL]).
Until now we were using (cheap) AMD devices where we use glx-pixmaps for
surface sharing between gstreamer and info-beamer which works quite perfect
(no mem copy at all).
Now we have to switch to INTEL devices as there are no cheap (and compatible
with the former open souce driver) AMD devices and now we are expiriencing
framedrop issues in surface sharing between gstreamer(-vaapi) and
info-beamer on INTEL ATOM Z8300 devices (which should be a lot faster than
the AMD E-350 we have been using before). As I said before we use
glx-pixmaps for surface sharing which works perfect on AMD-GPUs. But now
there seems to be a lot of in mem copy which couses a lot of framedrops.
In short our issues are now:
1) We are using a old version of gstreamer and gstreamer-vaapi
2) We are using a deprecated API for handling VA-API
3) We are using a soon-to-be deprecated buffer meta
4) We are relying on GLX, which has no future, as far as I understand
The tasks are:
1) upgrade to the latest gstreamer, gstreamer-vaapi release (done: ~80%)
2) remove the old GstVaapi code (done: 66%)
3) use EGL (done: 50%)
4) change code to use a pipeline like this: (done: ??)
playbin video-sink="glupload ! appsink
=> code will use the appsink API to fetch the decoded video frames with
GLMemory, which it will contain a texture that one can render.
By using EGL vaapi it will export dmabuf-based buffers, those buffers should be
imported as EGLImages, wrapped the texture, and thus no memcopy should be required.
Right now we have some compile issues (regarding migration of gstreamer 1.6-1.14) and code has to be migrated to use EGLImages instead of GLImages.
I believe that it will not be complicated as everything here is already done, all we need is put it together and modify a couple of (sink?) functions.
You'll get full access to required project sources (via subversion) and should be able to compile/run the project. Target plattform is Ubuntu 18.04.x on INTEL Atom devices - but any other INTEL integrated GFX should be OK for developing. Final tests will be done internal.
If you want your bid to be taken for serious, send me a message describing your knowledge of Gstreamer and pipelines for simple displaying HD playback (via EGL).
For any questions, fell free to contact me any time.