Android XBMC frame rate control/limit
#1
Hi, first post... I'm using a cheap android tv stick (mk808b with rk3066 cpu) and I noticed that xbmc makes it crash when I pause any movie for more than 20-30 minutes. If I press O I can see that during playback the CPU is at 50-60% on 1080p h264 10mbps playback. But on pause it rises to 100% and draws the screen at whatever maximum it can - 60-70 or even 80fps. This causes the CPU to run at maximum MHZ until it overheats and crashes...
First thing to admit is that the hardware should have temperature control and scale back the CPU to protect it from overheating...
But I was wondering if there's no way to put a limit on XBMC on this?
Example - a settings menu where we could select the fps for the interface to be drawn at 30fps and no more...
Advantages - protect the hardware, lower the energy bill/consumption... Thanks for the excellent work so far... Testing latest nightlies and very happy with it..
Reply
#2
Have you tried a nightly build (wiki)? It could be some kind of "leak"ish type thing that has since been fixed.
Reply
#3
(2014-01-31, 18:14)Ned Scott Wrote: Have you tried a nightly build (wiki)? It could be some kind of "leak"ish type thing that has since been fixed.

I was on January 23rd nightly build and I changed to yesterday's nightly. I also changed my android kernel from 720p to 1080p so I cannot make a direct comparison but in a 24fps movie, the frame rate still jumps to 50fps when I press stop and the CPU usage goes up from 40 to 60%... So it does seem improved but it might be that XBMC is taxing the GPU at max when you pause and the frame rate doesn't climb as high because now it's drawing at 1080p and before it was drawing at 720 and upscaling to 1080... But I'll keep on it to see if it still causes the system to overheat and crash.
Reply
#4
Hi, I kept updating to latest nightlies and indeed the hardware has been behaving better, more stable... Still the frame rate goes up to 50fps when I pause the video or in the system info menu. Is it not possible to add a selectable maximum frame rate for the xbmc interface? 24fps, 30, 50, 60fps... This would have several advantages:
1. Able to sync the interface fps to the monitor refresh rate (50/60hz).
2. Able to lower cpu/gpu demands on slower hardware...
This would be an advantage now for weak hardware running XBMC, specially because with Android 4.4 probably more hardware will come out with weak processors... It would also be an advantage for the future as Screen resolutions are increasing quickly on android hardware, and 4k tvs are coming soon as well to mass market...
Reply
#5
Since Android itself is typically set at 60hz on most installs, there's not much XBMC can do. However, you can play around with Dirty regions (wiki), but it doesn't always work so great on Android. Nothing serious, just some graphical glitches in the GUI. It can also depend on the skin being used, or any service add-ons that might be running in the background of XBMC.
Reply
#6
Yes I'm playing around with "Dirty Regions". My interface fps is usually at 30-36fps and it can stay above 80fps with these settings... But my objective would be to set a limit to the fps. If I pause a 24fps video the fps goes up to 40-50 and CPU stays at 100%... I would like to just set maximum fps at 24fps or 30fps so this wouldn't happen... But I guess it's technically difficult to implement?
Reply
#7
From what I am told, yeah, it's a bit of a technical hurdle. I guess it's a leftover from the way things worked in the old xbox days, due to how the GUI was rendered then (as fast as possible). Eventually it will be taken care of as code is improved and replaced, and one of the things driving those improvements is improving performance on Android/ARM devices.
Reply
#8
Most android tv sticks implement faulty CPU clock settings to make their 'spec' scores look good. But when you run something that does real work for a long period of time, the SoC overheats and you freeze or spurious reboot.

I saw this with the Geniatech HDMI MX stick. The firmware put the max CPU clock at 1GHz but the heat dissipation design could not handle sustained operation at 1GHz without a spurious reboot in about 1-3 mins of operation. So we changed this to run the max CPU clock at 800MHz and then it was fine.
Reply
#9
Hi davilla. What an honor! Thank you for the great work you've been doing so far... It's true... If I set my maximum CPU to 800MHZ it's fine... Other guys have it stable at 1GHZ (maybe I got a worse bin - and the heatsink has too much paste under it). But I am happy so far, running it at true 1080p and most movies play fine. All movies above 1920x800 are stuttering and loosing frames like crazy with CPU at only 50 or 60% load. But that's another matter - made a post on the Mediacodec support forum.

Thank you for your answer Ned. I'll sit and wait. Smile
Reply

Logout Mark Read Team Forum Stats Members Help
XBMC frame rate control/limit0