Kodi Community Forum

Full Version: Picture Slideshow Screensaver
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
(2020-05-26, 00:13)DeawD8t Wrote: [ -> ](...)
Currently top (with Irix Mode Off) shows me 10% cpu utilization if I play some mp3 audio stream (I can live with that). As soon as the Slideshow Screensaver kicks in this jumps to > 70% cpu utilization (constant - not only during Slide transitions). Slide jpegs are stored on a local hard drive and have been shrinked to a 1024x768 format.

I might add that due to the lack of driver support this netbook has no hardware rendering acceleration.

I had high hopes for both the dirty region and smart redraw activation, because from my understanding of these techniques, the screensaver's rather "static" rendering of a full screen still image *should* benefit from "only rendering changed regions" - but it seems that it doesn't have any effect.

Is this a known problem, or am I on a completely wrong track with my assumptions regarding how the rendering is done? I run Kodi 18.7, Picture Slideshow Screensaver Addon version is 5.0.9. on an Ubuntu 18.04.2 LTS

Update: I investigated a little bit further (I have never poked that deep into Kodi, so I am still in a steep learning curve and apologize for any naive or dumb questions and assumptions).

tl;dr: IMHO the culprit of this lies somewhere in how the overlay of music track duration / progress is rendered in the GUI. Disabling "Display music info (...)" is a quick and dirty workaround for cpu utilization to calm down.

Some more details of what I have tried so far:
  • if I explicitly disable both "dirty region awareness" and "smartredraw", via <algorithmdirtyregions>0</algorithmdirtyregions> and <smartredraw>false</smartredraw> in advancedsettings.xml, then I get constant high utilization of > 70% (mainly from 4 different llvmpipe threads inside the kodi-x11 process, determined by top -H through a ssh, no matter if the screensaver runs or not); this is expected for this weak Netbook Atom platform without hardware rendering and is a proof for me that dirty region rendering is still a valid, working and needed approach on my platform.
  • If I enable dirty regions awareness again, and disable to show music info in the Screensaver settings, also the Screensaver behaves as expected (short CPU spike during transition, otherwise utilization around a baseline 10%) - so disabling music info would be a workaround - however, I want to use the "Display music info" feature as it gives a nice feedback that something is playing.
  • If I enable "Display music info" in the Screensaver settings and <visualizedirtyregions>true</visualizedirtyregions> in advancedsettings.xml, it becomes obvious, that if music info is displayed, the screen as a whole remains "dirty" the whole time the Screensaver runs (it is tinted red and has some transpartent overlay from visualizedirtyregions). However IMHO expected behaviour would be: only a "region" around the music info should be dirty.

At the moment I trying to tie together the information I get from .kodi/addons/screensaver.picture.slideshow/resources/skins/default/720p/script-python-slideshow.xml and .kodi/addons/screensaver.picture.slideshow/resources/lib/gui.py; if I am not mistaken (I am no programmer ...), the music info control gets startet ("self._set_prop('Music', 'show')") inside self._get_settings() when the Screensaver gets activated, but my wisdom ends when trying to understand how the elapsed time of the music playing ("$INFO[Player.Time(hh:mmConfuseds)]") is rendered every second, if it is only called once during initialization and is not part of any loop during the slide show.

Any hint where to look further is appreciated, also if this is the wrong forum thread, e.g. if this is a more GUI / rendering specific problem that should be addressed elsewhere (where?). My (probably naive) approach would be to find out, if I can "regionize" somehow the Display music info Control, so it is properly picked up as a dirty region and not the whole screen. An alternative I am going to try is to remove the progress and "time" label controls, which whould still be an ugly workaround.
enabling the musicinfo on the screensaver doesn't make a whole lot of a difference on my end. it roughly adds ~ 5% to the cpu usage.

updating the Player.Time label as well as the progress bar is handled in Kodi core, it isn't done in any kind of loop in the addon.
(2020-05-28, 10:04)DeawD8t Wrote: [ -> ](...) An alternative I am going to try is to remove the progress and "time" label controls, which whould still be an ugly workaround. 

As expected the above works on my system - I completely removed the entire <control type="group"> with the 3 elements Player.Time, Player.Progress, Player.Duration from script-python-slideshow.xml and now the Picture Slideshow behaves normally in regards to CPU utilization (decreased from > 70 % down to ~ 10 %) - I suspect the "no moving parts" really helps the software renderer.

I am considering this as my "personal" workaround (so I will probably have to remove the above referenced control group from script-python-slideshow.xml every time the addon gets updated?). I find the workaround not as ugly any more as I first thought - actually it aligns pretty well with how the skin (Estuary) is handling the Music Info (at least in my environment): if the screensaver is not active - i.e. in the regular gui view - it does not show any "moving parts" like elapsed time, progress etc. either, only a little "play" triangle symbol and "Artist - Song".
(2020-05-28, 17:38)ronie Wrote: [ -> ]enabling the musicinfo on the screensaver doesn't make a whole lot of a difference on my end. it roughly adds ~ 5% to the cpu usage.

Have you tried it with software rendering only? (e.g. pass "LIBGL_ALWAYS_SOFTWARE=true" as env variable to kodi if I remember correctly)
sorry to disappoint you, but as i said in my initial reply: i'm not an expert in rendering, so can't offer any advice i'm afraid.
(2020-05-28, 21:57)ronie Wrote: [ -> ]sorry to disappoint you, but as i said in my initial reply: i'm not an expert in rendering, so can't offer any advice i'm afraid.
No problem - as I laid out in my post, I helped myself, it works now, it is solved for me by removing the "moving parts" from the slide show (=removed elapsed time & progress bar in "show Music" control). :-) I was just speculating academically on the reason why you do not see that much of an improvement in your environment, my guess: you have hardware accelerated rendering, but it is just academic interest, not important. I'll test it for myself if I find the time to recreate the environment on a hardware accelerated system.

If my use case wasn't so niche, I would even suggest to implement my solution as an improvement in the official version of the add-on, e.g. create a configurable "show time & progress" sub-setting item in the settings menu ("disabling this setting might help lower CPU usage on low-end systems" as a help text).
Feature suggestion:

I wish a piece of text in the corner (random, changes) came up just gently, light font, says the name of each entry, so I know what the art is for.
if it's about fanart, you can already display the name of the movie an/or artist.
you need to select this setting 'Display image name: use filename'

for pictures, the 'Display additional picture tags' setting can be used.
that will get the 'title' from the embedded IPTC/XMP tags.

to avoid screen burn in, the screensaver already displays this info using a slightly transparent font.
Any chance this supports video and picture files in the same folder?
Have the screensaver setup as a digital photo frame but adding in short video clips would be awesome  Smile
it's not possible to add such a feature.
kodi will stop the screensaver as soon as video playback is started.
Hi folks,

is there any chance to increase the picture change time higher than 60 seconds.

I want to change pictures every 15 minutes for example.

Thx in advance

Hi there,
I've been enjoying this plugin for some time now for putting random images from my NAS on my TV screen. But I'm having trouble adding features. I'm trying to implement the following features:
  • Add a timer multiplier (so the slide interval is multiplied. I imagined this as an easy fix to being able to select intervals longer than 60 seconds. Ideal would, of course, be ticker buttons for hour, minute, and second)
  • Add checkboxes to allow for selective inclusion of images matching a certain aspect ratio (16:9/landscape/portrait/square)
  • Add a slider and age dropdown for a recency bias (x percent (slider) of used images need to be younger than y (dropdown) years to be included)
  • Fix the slideshow transition to start only after the next slide has been cached (fade-in transition always fails because the image takes too long to load)
Problem is that despite having plenty of coding experience in PHP and Javascript, these files don't play nice with me (I have no experience with linux or python, let alone writing KODI plugins). As soon as I make almost any edits to the utils.py, gui.py, settings.xml, or strings.po files (I use notepad++), the screensaver doesn't install anymore. I've once managed to add a settings GUI item called "Include images of portrait aspect ratio" by editing the English language file (added the id 30017) and the settings.xml file, and I've managed to extend the slide time by adding a *60 (hack fix) to the utils.py file where the interval time is called from the settings, but beyond that, the new zip package won't install. I've undone edits countless times, trying to narrow down what might cause the failure, but I don't see any pattern except that it reliably works when I simply repackage the unaltered files into a new ZIP file and install that, and that it mostly fails when I do only the slightest edit (like adding another space behind a commented line in the string.po file). I've had no luck extracting any useful information from the error logs. In the 01_KODI.log file, it simply either states that the archive couldn't be extracted or that the string.po file couldn't be read. But if I ctrl+Z my edit, save the file and re-zip again, it works. At this point, I wonder if notepad++ uses the wrong character encoding or something.

Any pointers to what I might be doing wrong?
I have a strange bug with the Picture Slideshow Screensaver and the skin "Madnox" (Madnox topic)
I've set it to display Video Fanart and that works fine.
However I also activated "Display filename".
But the filename doesn't show with this skin, it does with other skins (Aeon Madnox and Esturary).

There's also nothing in the debug log as far as I can tell. Will try to debug more!

Here's what I see in the logs:
Quote:2020-09-22 23:53:47.722 T:139958916458240   DEBUG: screensaver.picture.slideshow: script version 5.0.9 started
2020-09-22 23:53:47.740 T:139960022314688   DEBUG: ------ Window Init (/storage/.kodi/addons/screensaver.picture.slideshow/resources/skins/default/720p/script-python-slideshow.xml) ------
2020-09-22 23:53:47.740 T:139960022314688    INFO: Loading skin file: /storage/.kodi/addons/screensaver.picture.slideshow/resources/skins/default/720p/script-python-slideshow.xml, load type: LOAD_ON_GUI_INIT
2020-09-22 23:53:47.742 T:139958950029056   DEBUG: Skin Helper Widgets --> Kodi_Monitor: sender xbmc - method: GUI.OnScreensaverActivated  - data: null
2020-09-22 23:53:47.743 T:139958916458240   DEBUG: CAddonSettings[screensaver.picture.slideshow]: loading setting definitions
2020-09-22 23:53:47.743 T:139958916458240   DEBUG: CAddonSettings[screensaver.picture.slideshow]: trying to load setting definitions from old format...
2020-09-22 23:53:47.743 T:139958916458240   DEBUG: CAddonSettings[screensaver.picture.slideshow]: loading setting values
2020-09-22 23:53:47.758 T:139958270547712   DEBUG: service.libraryautoupdate-1.1.0 : screen saver on
2020-09-22 23:53:47.765 T:139958916458240   DEBUG: screensaver.picture.slideshow: slideshow type: 0
I see the exact same message with any other skin were the Filename does show.
Hello, i have a wish. Can the cool screensaver an option to show the time?
Hello Ronie, Can you help me please. I wish me a option for the time in you beautiful screensaver.

how can i stop/start the screensaver with terminal command or crontab ?

thank you