Now it works. Sometimes if you call the OSD immediately after exiting the MPV or external plugin, it is not correct, but when you call it again, everything is fine.
Skindesigner and openGL OSD
-
- [skindesigner]
- lnj
-
-
Hi Kamel
indeed, mpv and softhddevice deta/atta work fine.
With suspend/resume I still see the same OSD without background.. but for me deta/atta is the most important.
-
Sometimes if you call the OSD immediately after exiting the MPV or external plugin, it is not correct
I set the refresh interval in the worker thread to 5 seconds, but that's too long.
You can set it in "extensions/workers.c" to a shorter time.
In the final version, i will set it back to 1sec.
With suspend/resume I still see the same OSD without background.
Can you please check that with "#define REFESH_INTERVALL_MS 1000", then it should have the same behavior as before.
Otherwise I'll have to look at it again.
Grüße
kamel5
-
Hi Kamel,
I set "#define REFESH_INTERVALL_MS 1000" but I see the same OSD "without background" after susp/resu
No rush for me please!
-
No rush for me please!
No problem.
I set "#define REFESH_INTERVALL_MS 1000" but I see the same OSD "without background" after susp/resu
The strange thing is that it works with the original solution, but not with moving the identical code to a separate thread.
I'll think about it.
Grüße
kamel5
-
REFESH is hopefully only a typo here in the forum?!
In the code it should be REFRESH, I think. -
REFESH is hopefully only a typo here in the forum?!
No, but it is named that way everywhere in the code. I'll change that in the final code.
Thanks for the tip.
Grüße
kamel5
-
As far as i remember it is not allowed to access an opengl context from different threads….
Cheers Louis
-
As far as i remember it is not allowed to access an opengl context from different threads….
That shouldn't be the problem here. This thread just calls cDevice::PrimaryDevice()->GetVideoSize() periodically to see if the video size has changed in the softhddevice plugin.
Grüße
kamel5
-
Maybe it helps, below my softhddevice and skindesigner settings
I'm using the 'shady' skin
Code
Display Moresofthddevice.1080i.CutLeftRight = 0 softhddevice.1080i.CutTopBottom = 0 softhddevice.1080i.Deinterlace = 2 softhddevice.1080i.Denoise = 0 softhddevice.1080i.FirstField = 0 softhddevice.1080i.InverseTelecine = 0 softhddevice.1080i.Scaling = 2 softhddevice.1080i.SecondField = 0 softhddevice.1080i.Sharpen = 0 softhddevice.1080i.SkipChromaDeinterlace = 0 softhddevice.1080i_fake.CutLeftRight = 0 softhddevice.1080i_fake.CutTopBottom = 0 softhddevice.1080i_fake.Deinterlace = 2 softhddevice.1080i_fake.Denoise = 0 softhddevice.1080i_fake.FirstField = 2 softhddevice.1080i_fake.InverseTelecine = 0 softhddevice.1080i_fake.Scaling = 2 softhddevice.1080i_fake.SecondField = 0 softhddevice.1080i_fake.Sharpen = 0 softhddevice.1080i_fake.SkipChromaDeinterlace = 0 softhddevice.576i.CutLeftRight = 0 softhddevice.576i.CutTopBottom = 0 softhddevice.576i.Deinterlace = 2 softhddevice.576i.Denoise = 0 softhddevice.576i.FirstField = 0 softhddevice.576i.InverseTelecine = 0 softhddevice.576i.Scaling = 2 softhddevice.576i.SecondField = 0 softhddevice.576i.Sharpen = 5 softhddevice.576i.SkipChromaDeinterlace = 0 softhddevice.60HzMode = 0 softhddevice.720p.CutLeftRight = 0 softhddevice.720p.CutTopBottom = 0 softhddevice.720p.Deinterlace = 1 softhddevice.720p.Denoise = 0 softhddevice.720p.FirstField = 0 softhddevice.720p.InverseTelecine = 0 softhddevice.720p.Scaling = 2 softhddevice.720p.SecondField = 0 softhddevice.720p.Sharpen = 0 softhddevice.720p.SkipChromaDeinterlace = 0 softhddevice.AudioAutoAES = 0 softhddevice.AudioBufferTime = 500 softhddevice.AudioCompression = 0 softhddevice.AudioDelay = 0 softhddevice.AudioDownmix = 0 softhddevice.AudioDrift = 3 softhddevice.AudioMaxCompression = 0 softhddevice.AudioMaxNormalize = 0 softhddevice.AudioNormalize = 0 softhddevice.AudioPassthrough = 1 softhddevice.AudioPassthroughHBR = 0 softhddevice.AudioSoftvol = 0 softhddevice.AudioStereoDescent = 0 softhddevice.AutoCrop.Delay = 0 softhddevice.AutoCrop.Interval = 0 softhddevice.AutoCrop.Tolerance = 0 softhddevice.Background = 0 softhddevice.BlackPicture = 0 softhddevice.Brightness = 0 softhddevice.ClearOnSwitch = 1 softhddevice.Contrast = 0 softhddevice.DetachFromMainMenu = 0 softhddevice.DisableScreensaver = 0 softhddevice.DoOnWindowClose = 3 softhddevice.EnableDPMS = 0 softhddevice.HideMainMenuEntry = 1 softhddevice.Hue = 0 softhddevice.MakePrimary = 1 softhddevice.MaxSizeGPUImageCache = 128 softhddevice.Osd.Height = 1080 softhddevice.Osd.Width = 1920 softhddevice.pip.Alt.Height = 50 softhddevice.pip.Alt.VideoHeight = 50 softhddevice.pip.Alt.VideoWidth = 0 softhddevice.pip.Alt.VideoX = 0 softhddevice.pip.Alt.VideoY = 0 softhddevice.pip.Alt.Width = 0 softhddevice.pip.Alt.X = 0 softhddevice.pip.Alt.Y = 50 softhddevice.pip.Height = 18 softhddevice.pip.VideoHeight = 0 softhddevice.pip.VideoWidth = 0 softhddevice.pip.VideoX = 0 softhddevice.pip.VideoY = 0 softhddevice.pip.Width = 18 softhddevice.pip.X = 79 softhddevice.pip.Y = 78 softhddevice.Saturation = 0 softhddevice.SkinToneEnhancement = 0 softhddevice.SoftStartSync = 3 softhddevice.StudioLevels = 1 softhddevice.Suspend.Close = 0 softhddevice.Suspend.X11 = 0 softhddevice.UHD.CutLeftRight = 0 softhddevice.UHD.CutTopBottom = 0 softhddevice.UHD.Deinterlace = 3 softhddevice.UHD.Denoise = 0 softhddevice.UHD.FirstField = 0 softhddevice.UHD.InverseTelecine = 0 softhddevice.UHD.Scaling = 2 softhddevice.UHD.SecondField = 0 softhddevice.UHD.Sharpen = 0 softhddevice.UHD.SkipChromaDeinterlace = 0 softhddevice.Video4to3DisplayFormat = 1 softhddevice.VideoGeometry = softhddevice.VideoOtherDisplayFormat = 0
Code
Display Moreskindesigner.CacheImagesInitial = 0 skindesigner.DebugImageLoading = 1 skindesigner.FPS = 50 skindesigner.LimitChannelLogoCache = 0 skindesigner.metrixhd.chlistitemsmax = 10 skindesigner.metrixhd.doitsimple = 0 skindesigner.metrixhd.fadetime = 0 skindesigner.metrixhd.fadetimecurrent = 50 skindesigner.metrixhd.fadetimezapcockpit = 0 skindesigner.metrixhd.infolistitemsmax = 3 skindesigner.metrixhd.listfadetime = 0 skindesigner.metrixhd.listitemsmax = 14 skindesigner.metrixhd.listshifttime = 100 skindesigner.metrixhd.mainmenuorientation = 1 skindesigner.metrixhd.mainmenusmall = 0 skindesigner.metrixhd.menuitemsmax = 9 skindesigner.metrixhd.recmenuorientation = 1 skindesigner.metrixhd.sep = 0 skindesigner.metrixhd.sepmainmenu = 0 skindesigner.metrixhd.sepzapcockpit = 0 skindesigner.metrixhd.sepzapcockpitchannelhint = 0 skindesigner.metrixhd.setupmenuorientation = 1 skindesigner.metrixhd.shifttimechannel = 0 skindesigner.metrixhd.shifttimedatetime = 0 skindesigner.metrixhd.shifttimetimers = 0 skindesigner.metrixhd.shifttimezapcockpit = 200 skindesigner.metrixhd.showdevices = 0 skindesigner.metrixhd.showinformation = 2 skindesigner.metrixhd.showscrollbar = 1 skindesigner.metrixhd.showweather = 1 skindesigner.metrixhd.weathermenuorientation = 1 skindesigner.metrixhd.zapchannelhintsheight = 30 skindesigner.metrixhd.zapchannelhintswidth = 30 skindesigner.NumberLogosInitially = 30 skindesigner.NumberLogosMax = 200 skindesigner.NumCustomTokens = 10 skindesigner.RerunAmount = 10 skindesigner.RerunDistance = 2 skindesigner.RerunMaxChannel = 0 skindesigner.shady.00_menuFadetime = 300 skindesigner.shady.00_numRecordingsmenuitems = 15 skindesigner.shady.01_seenProgress = 1 skindesigner.shady.01_ShifttimeMessageDisplay = 0 skindesigner.shady.02_showRecordingTime = 1 skindesigner.shady.02_timersDelay = 1 skindesigner.shady.02_timersFadetime = 0 skindesigner.shady.03_lastrecordingsDelay = 1 skindesigner.shady.03_lastrecordingsFadetime = 0 skindesigner.shady.03_new-recordingsMarker = 2 skindesigner.shady.04_devicesDelay = 1 skindesigner.shady.04_devicesFadetime = 0 skindesigner.shady.05_discusageDelay = 1 skindesigner.shady.05_discusageFadetime = 0 skindesigner.shady.05_notNewNotWatched-recordingsMarker = 9 skindesigner.shady.06_systemloadDelay = 1 skindesigner.shady.06_systemloadFadetime = 0 skindesigner.shady.07_notNewWatched-recordingsMarker = 6 skindesigner.shady.07_temperaturesDelay = 1 skindesigner.shady.07_temperaturesFadetime = 0 skindesigner.shady.08_currentweatherDelay = 1 skindesigner.shady.08_currentweatherFadetime = 0 skindesigner.shady.brightBackground = 1 skindesigner.shady.coloredButtons = 2 skindesigner.shady.coloredElapsed = 1 skindesigner.shady.currentTitle = 1 skindesigner.shady.ecmInside = 1 skindesigner.shady.epg2vdr = 0 skindesigner.shady.epg2vdrShowHostname = 1 skindesigner.shady.hostnameChars = 8 skindesigner.shady.mainMenuOrientation = 0 skindesigner.shady.numDevices = 2 skindesigner.shady.numLongSubmenuitems = 14 skindesigner.shady.numShortMenuitems = 10 skindesigner.shady.numShortSubmenuitems = 15 skindesigner.shady.plex = 0 skindesigner.shady.plexDetail = 0 skindesigner.shady.replayPGBG = 1 skindesigner.shady.setupIconbar = 1 skindesigner.shady.showChannelDetails = 1 skindesigner.shady.showDiscUsage = 1 skindesigner.shady.showLastrecordings = 1 skindesigner.shady.showPosterAndEPGpic = 1 skindesigner.shady.showTimerStopTime = 1 skindesigner.shady.sysinfoPBtheme = 1 skindesigner.shady.systeminfo = 0 skindesigner.shady.tvgngDescriptionScroll = 1 skindesigner.shady.tvguideng = 0 skindesigner.shady.twoLineDisplay = 1 skindesigner.shady.twoLineDisplayReplay = 1 skindesigner.shady_KISSpb.00_numRecordingsmenuitems = 15 skindesigner.shady_KISSpb.03_new-recordingsMarker = 2 skindesigner.shady_KISSpb.05_notNewNotWatched-recordingsMarker = 9 skindesigner.shady_KISSpb.07_notNewWatched-recordingsMarker = 6 skindesigner.shady_KISSpb.brightBackground = 0 skindesigner.shady_KISSpb.channelFadeTime = 0 skindesigner.shady_KISSpb.channelList = 0 skindesigner.shady_KISSpb.channelName = 0 skindesigner.shady_KISSpb.coloredButtons = 2 skindesigner.shady_KISSpb.column2Alignment = 0 skindesigner.shady_KISSpb.currentelementsFadeTime = 0 skindesigner.shady_KISSpb.currentInfo = 1 skindesigner.shady_KISSpb.dateTime = 1 skindesigner.shady_KISSpb.ecmInfo = 0 skindesigner.shady_KISSpb.epg2vdr = 0 skindesigner.shady_KISSpb.epg2vdrShowHostname = 1 skindesigner.shady_KISSpb.fadetimeTempsLoadWeatherDisc = 0 skindesigner.shady_KISSpb.fadetimeTimersAndLastrecs = 0 skindesigner.shady_KISSpb.fontSizeDescr = 34 skindesigner.shady_KISSpb.fontSizeInfoDescription = 30 skindesigner.shady_KISSpb.fontSizeInfoDetails = 30 skindesigner.shady_KISSpb.fontSizeInfoTitle = 34 skindesigner.shady_KISSpb.hostnameChars = 8 skindesigner.shady_KISSpb.longElapsedBar = 0 skindesigner.shady_KISSpb.mainMenuOrientation = 0 skindesigner.shady_KISSpb.messageShiftTime = 300 skindesigner.shady_KISSpb.numLongSubmenuitems = 15 skindesigner.shady_KISSpb.numShortMenuitems = 10 skindesigner.shady_KISSpb.numShortSubmenuitems = 15 skindesigner.shady_KISSpb.panelMain = 3 skindesigner.shady_KISSpb.plex = 0 skindesigner.shady_KISSpb.plexDetail = 0 skindesigner.shady_KISSpb.recmenuorientation = 1 skindesigner.shady_KISSpb.replayPGBG = 0 skindesigner.shady_KISSpb.scrapContent = 1 skindesigner.shady_KISSpb.setupIconbar = 0 skindesigner.shady_KISSpb.showDiscUsage = 1 skindesigner.shady_KISSpb.showNumbering = 1 skindesigner.shady_KISSpb.showPosterAndEPGpic = 0 skindesigner.shady_KISSpb.showReplayPoster = 0 skindesigner.shady_KISSpb.showTimeshiftTotal = 1 skindesigner.shady_KISSpb.sysinfoPBtheme = 1 skindesigner.shady_KISSpb.systeminfo = 0 skindesigner.shady_KISSpb.timerBlink = 1 skindesigner.shady_KISSpb.transBackground = 10 skindesigner.shady_KISSpb.transLists = 5 skindesigner.shady_KISSpb.tvgngDescriptionScroll = 0 skindesigner.shady_KISSpb.tvguideng = 0 skindesigner.shady_KISSpb.volumeShiftTime = 300 skindesigner.shady_KISSpb.weatherInfo = 0 skindesigner.shady_KISSpb.widgets = 0 skindesigner.shady_KISSpb.zaphistory = 0 skindesigner.shady_KISSpb.zaphistoryStatusCol = 1 skindesigner.UseSubtitleRerun = 0
-
Hi Fans
Und was bring der Eintrag skindesigner.FixForopenGL = 1
vor dem Eintrag skindesigner.FPS = 50 bitte einfügen .
MfG Helmut
-
carel , thanks, I'll take a look at that.
Und was bring der Eintrag skindesigner.FixForopenGL = 1
Das war mal eine Zwischenlösung in der Version 1.2.8.5, aktuell ist 1.2.23.
Das Problem hier ist, das der image-cache vom skindesigner in manchen Fällen ungültig wird (DETA, ATTA, SUSP, RESU von softhddevice), wenn softhddevice mit openGL-OSD benutzt wird.
FixForopenGL hat damals einfach den Cache jedesmal neu angelegt, wenn ein OSD geöffnet wurde, das funktioniert auch, ist aber kontraproduktiv für den Cache.
Aktuell wird über cDevice::PrimaryDevice()->GetVideoSize() geprüft, ob sich da was geändert hat, und nur dann wird der Cache neu angelegt.
Im Moment ist die Aufgabe, diese Funktionalität aus dem MainThreadHook() zu entfernen und über einen eigenen thread zu lösen, was noch nicht zu 100% funktioniert.
Grüße
kamel5
-
I set "#define REFESH_INTERVALL_MS 1000" but I see the same OSD "without background" after susp/resu
That doesn't work with the MainThreadHook() Version either.
I will adopt the current solution for now.
I use the version 1.12.5 of softhddevice here, because I get an error when compiling newer versions (for example v2.3.8):
Codevideo.c: In Funktion »GlxInit«: video.c:1514:32: Fehler: »GlxSwapIntervalMESA« nicht deklariert (erstmalige Verwendung in dieser Funktion); meinten Sie »GlxSwapIntervalSGI«? 1514 | if (GlxVSyncEnabled > 0 && GlxSwapIntervalMESA) { | ^~~~~~~~~~~~~~~~~~~ | GlxSwapIntervalSGI
I use vdpau with an Nvidia card. lnj , do you have any idea about this.
Grüße
kamel5
-
Give
ls -1 /usr/include/GL
-
ls -la /usr/include/GL
insgesamt 858
drwxr-xr-x 3 root root 22 24. Jun 12:16 .
drwxr-xr-x 460 root root 1151 8. Nov 10:40 ..
-rw-r--r-- 1 root root 121129 24. Jan 2024 eglew.h
-rw-r--r-- 1 root root 11174 9. Jun 19:44 freeglut_ext.h
-rw-r--r-- 1 root root 681 9. Jun 19:44 freeglut.h
-rw-r--r-- 1 root root 27250 9. Jun 19:44 freeglut_std.h
-rw-r--r-- 1 root root 5871 9. Jun 19:44 freeglut_ucall.h
-rw-r--r-- 1 root root 425985 12. Sep 2023 glcorearb.h
-rw-r--r-- 1 root root 1307180 24. Jan 2024 glew.h
-rw-r--r-- 1 root root 852735 12. Sep 2023 glext.h
-rw-r--r-- 1 root root 80393 12. Sep 2023 gl.h
-rw-r--r-- 1 root root 17192 21. Jul 2023 glu.h
-rw-r--r-- 1 root root 639 9. Jun 19:44 glut.h
-rw-r--r-- 1 root root 75395 24. Jan 2024 glxew.h
-rw-r--r-- 1 root root 47796 12. Sep 2023 glxext.h
-rw-r--r-- 1 root root 16906 12. Sep 2023 glx.h
-rw-r--r-- 1 root root 4696 26. Mär 2024 glxint.h
-rw-r--r-- 1 root root 2085 26. Mär 2024 glxmd.h
-rw-r--r-- 1 root root 78531 26. Mär 2024 glxproto.h
-rw-r--r-- 1 root root 11429 26. Mär 2024 glxtokens.h
drwxr-xr-x 2 root root 4 4. Sep 12:23 internal
-rw-r--r-- 1 root root 64114 24. Jan 2024 wglew.h
I use Fedora 40 here.
Grüßekamel5
-
I use 41 now and used 40 too before.
I'll try to reproduce this.
-
Looks like a bug. SGI and MESA was swapped, need GLX_SGI_swap_control -> GlxSwapIntervalSGI, GLX_MESA_swap_control -> GlxSwapIntervalMESA.
Try swap it:
Code
Display More#ifdef GLX_SGI_swap_control if (GlxVSyncEnabled > 0 && GlxSwapIntervalSGI) { <------>if (GlxSwapIntervalMESA(1)) { <------> GlxCheck(); <------> Warning(_("video/glx: can't enable v-sync\n")); <------>} else { <------> Info(_("video/glx: v-sync enabled\n")); <------>} } else #endif #ifdef GLX_MESA_swap_control if (GlxVSyncEnabled > 0 && GlxSwapIntervalMESA) { <------>if (GlxSwapIntervalSGI(1)) { <------> GlxCheck(); <------> Warning(_("video/glx: can't enable v-sync\n")); <------>} else { <------> Info(_("video/glx: v-sync enabled\n")); <------>} } #endif
-
Ok, I did it so:
Code
Display More// // enable wait on v-sync // #ifdef GLX_SGI_swap_control if (GlxVSyncEnabled > 0 && GlxSwapIntervalSGI) { if (GlxSwapIntervalSGI(1)) { GlxCheck(); Warning(_("video/glx: can't enable v-sync\n")); } else { Info(_("video/glx: v-sync enabled\n")); } return; } //else #endif #ifdef GLX_MESA_swap_control if (GlxVSyncEnabled > 0 && GlxSwapIntervalMESA) { if (GlxSwapIntervalMESA(1)) { GlxCheck(); Warning(_("video/glx: can't enable v-sync\n")); } else { Info(_("video/glx: v-sync enabled\n")); } } #endif
Look at the new return and the commented out else, otherwise there will be a new error.
Then new errors occurred:
Code
Display Morevideo.c:1590:1: Fehler: unbekannter Typname: »PFNGLEGLIMAGETARGETTEXTURE2DOESPROC« 1590 | PFNGLEGLIMAGETARGETTEXTURE2DOESPROC GlEGLImageTargetTexture2DOES; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ video.c: In Funktion »EglInit«: video.c:1923:37: Fehler: »PFNGLEGLIMAGETARGETTEXTURE2DOESPROC« nicht deklariert (erste Verwendung in dieser Funktion) 1923 | GlEGLImageTargetTexture2DOES = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) eglGetProcAddress("glEGLImageTargetTexture2DOES"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ video.c:1923:37: Anmerkung: jeder nicht deklarierte Bezeichner wird nur einmal für jede Funktion, in der er vorkommt, gemeldet video.c:1923:73: Fehler: expected »;« before »eglGetProcAddress« 1923 | GlEGLImageTargetTexture2DOES = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) eglGetProcAddress("glEGLImageTargetTexture2DOES"); | ^~~~~~~~~~~~~~~~~~ | ; video.c: In Funktion »VaapiPutSurfaceEGL«: video.c:5392:13: Fehler: gerufenes Objekt »GlEGLImageTargetTexture2DOES« ist keine Funktion oder Funktionszeiger 5392 | GlEGLImageTargetTexture2DOES(GL_TEXTURE_2D, decoder->EglImages[i]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ video.c:1590:37: Anmerkung: hier deklariert 1590 | PFNGLEGLIMAGETARGETTEXTURE2DOESPROC GlEGLImageTargetTexture2DOES; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ make: *** [Makefile:230: video.o] Fehler 1
I only commentd out "VAAPI" in the Makefile.
Grüße
kamel5
-
Without comment out VAAPI not compiled too?
-
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!