Optimizing x264 video - GeForce 8200 + VDPAU
#16
Since my issue is different than the original posters, I will start my own thread.
Reply
#17
I want to thank everybody who offered help and suggestions. Video playback on my HTPC is 100% better thanks to you. Even the "Killa Sample" plays almost perfectly.

As one last data point for those who might be interested, the "Hybrid SLI Frame buffer size" BIOS setting does seem to make *some* difference. I tried dropping it to 32MB and x264 videos wouldn't play at all (to be precise: the audio would play over a black screen). There's no discernible difference between 128MB (the default) and 512MB, except possibly a few dropped frames on the "Killa Sample" (and that may just be a coincidence).
Reply
#18
I'm running XBMC on Ubuntu Karmic. My hardware is an Athlon X2 3600+ EE on an Asus M3N78-VM with 2x512MB of RAM. Currently I use 128MB of shared VRAM and the 195.36.15 nvidia driver.

What I found out was that the problem was definitely the CPU scaling. When the ondemand scaling governor is activated the CPU clocks down, because the decoding is done via GPU and there's no noticable CPU usage. As a result the system (board? bios? whatever) also clocks down the HyperTransport links and that could be problematic for the GPU (starves bandwith or it also clocks down).

I also have edited the ondemand governor to set the "up_threshold" (the limit when cpu frequency is getting bumped up) from 95% to as low as 20%, but it didn't fully remove the stuttering. An explanation of the cpufrq parameters is given here: http://www.pantz.org/software/cpufreq/us...linux.html

So I resorted to just activating the performance scaler permanently.

Though this is a working solution, I'd rather have this only when it's really needed as the CPU is using lots of energy and running much hotter... Is there a possibility to only activate the performance scaler when the XBMC DVDplayer is started and then activate the ondemand scaler again when DVDplayer is closed down?
Where/in which files in XBMC would I need to start looking?

Cheers,

Kim
Reply
#19
It can't be done from xbmc because it requires root rights.
You need to make a script that runs as root and polls the status of xbmc.
Reply
#20
Ah shh... Didn't think about that...

Any hints on how/where/what to poll? I guess I would need to write a pyhton script to interface XBMC, right?
Reply
#21
You could poll GetCurrentlyPlaying over httpapi with
Code:
wget -O - http://127.0.0.1:8080/xbmcCmds/xbmcHttp?commCurrentlyPlaying 2>/dev/null
Reply
#22
Thanks. The API docs are not overwhelmingly informative about the response, but I found out it should return something like:
Code:
<html>
<li>Filename:blablabla
<li>SongNo:0
<li>Type:Video
...
<li>PlayStatus:Playing
...
</html>
So I'd just check for "Type:Video" once every two seconds or something. Does this work even when the XBMC webserver is deactivated under settings?
Reply
#23
No of course it doesn't work when the http server is not activated.
Reply
#24
Ah, well...

Can I have a checkbox under "settings->video" in the next XBMC-release plz? Smile
Reply
#25
Smile 
s7mx1 Wrote:It's always the cpu. Make sure the CPU frequency never goes below 1.8GHZ.

put this into /etc/rc.local

echo 1800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq


This always works for me Too Smile
Reply
#26
kiro Wrote:Ah, well...

Can I have a checkbox under "settings->video" in the next XBMC-release plz? Smile

For what? Turning on the http server?
Reply
#27
Ala "Set CPU scaling to 'Performance' while playing video". Does not work because of rights, I know...
Reply

Logout Mark Read Team Forum Stats Members Help
Optimizing x264 video - GeForce 8200 + VDPAU0