| Mister_Magister | abranson: per gstreamer's AGENTS.md i had to first comprehend entire issue and now I fully and utterly comprehend the issue i believe and the fix has to go upstream but might also need minor tweaking in qtwayland | 00:36 |
|---|---|---|
| Mister_Magister | abranson: also I've concluded i'm in no way qualified to CR/fix it either so i've asked gstreamer guys | 00:59 |
| Mister_Magister | I've caught great asset in form of gstreamer dev into my sfos chat >:) | 00:59 |
| Mister_Magister | the proper description without llm garbage is *atchoo* The issue is with EGL context invalidation of the context that comes from Qt via qmlglsink. Let me explain. Gstreamer in no way is prepared for qt to get rid of its egl context. The pipeline caches it, the element cache it, and there's no way to send signal to the pipeline to make everything invalidate the context and fetch new one. And that problem probably has never ever arisen before | 00:59 |
| Mister_Magister | because to the best of my knowledge desktop has no reason to throw away egl context. SFOS does so when you turn the screen off (mostlikely because it shuts down the GPU) and when screen comes back on the qt has new egl context but the pipeline/qmlglsink/glupload/glcolorconvert don't get new one and the video stays forever black (thats the actual bug) because it's writing to old context, egl doesn't throw any error by design and video is | 00:59 |
| Mister_Magister | forever black. Now the solution that claude implemented is to listen to the aboutToBeDestroyed signal and set flag so that on next frame (because the context is still old when the signal arrives) fetch new context, walk up to the root of the pipeline and set new context using gst_element_set_context + minor fixes because glupload/glcolorconvert won't do anything with it because they react only if display changed and don't care if context | 00:59 |
| Mister_Magister | changed | 00:59 |
| Mister_Magister | My head hurts | 01:00 |
| *** n2klb_ is now known as n2klb | 02:39 | |
| Mister_Magister | so the same issue exists on android… great | 03:16 |
| Mister_Magister | abranson: i got the answer i got the solution!!! The solution is… THERE IS NONE | 03:17 |
| Mister_Magister | I apparently have to recreate pipeline elements | 03:18 |
| Mister_Magister | because actual solution is difficult | 03:18 |
| Mister_Magister | abranson: after talking to gstreamer guy I might implement same per-app workaround he implemented for android | 04:12 |
| Mister_Magister | basicially swap qmlglsink to fakesink -> recreate QtGLVideoItem because it holds cached egl sink (just recreating pipeline elements would just pull cached context from it so there's no point -> recreate pipeline elements -> swap back to qmlglsink | 04:12 |
| Mister_Magister | abranson: hey at least now i can precisely explain to you why the fix belongs to gstreamer and why it has literally nothign to do with qtwayland | 04:26 |
| Mister_Magister | and it's entirely gstreamer issue | 04:26 |
| Mister_Magister | and yes we're both unqualified becuase even gstreamer devs have no clue what the proper fix is | 04:27 |
| Mister_Magister | abranson: i'll mostlikely save you the hussle and craete issue upstream while implementing workaround in my app that way everyone is happy, gstreamer might fix it, sfos might get the fix in the future and i get the app working asap | 04:32 |
| Mister_Magister | abranson: but you gotta merge this https://github.com/abranson/qtwayland/commits/event-thread/ | 04:34 |
| Mister_Magister | everything else is fine | 04:35 |
| Mister_Magister | i just need this | 04:35 |
Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!