2009-12-24, 06:47
I have the same exact problem with the VDPAU enabled. I am running on a Acer Revo 3610 with Minimal Karmic, XBMC 9.11 RC1 and Version 2.1.4 of the Ted Talks script.
I switch to Software Rendering instead of VDPAU and it plays fine.
Now let me preface this by saying I am not a python developer and certainly not a XBMC Plugin/Script developer but I think I have a working solution, or at least one that works for me.
I thought the plugin could switch the setting from "VDPAU" to "Software" and back automatically. So I edited the ted_talks.py file to do exactly that using xbmc.executehttpapi calls.
In the file you will find the following line in the checkMode function of the Main class:
I replaced it with:
Not a perfect solution and I'm sure someone could write the code more efficiently or even a more elegant solution, but this worked for me.
Comments and suggestions welcome.
I switch to Software Rendering instead of VDPAU and it plays fine.
Now let me preface this by saying I am not a python developer and certainly not a XBMC Plugin/Script developer but I think I have a working solution, or at least one that works for me.
I thought the plugin could switch the setting from "VDPAU" to "Software" and back automatically. So I edited the ted_talks.py file to do exactly that using xbmc.executehttpapi calls.
In the file you will find the following line in the checkMode function of the Main class:
PHP Code:
UI().playVideo()
I replaced it with:
PHP Code:
# Get current RendorMethod
iCurrentRenderMethod = int(xbmc.executehttpapi("GetGUISetting(0;VideoPlayer.RenderMethod)").replace("<li>",""))
# If RenderMethod is is 4 (RENDER_METHOD_VDPAU) set it to 3 (RENDER_METHOD_SOFTWARE). See http://trac.xbmc.org/browser/trunk/xbmc/GUISettings.h for other values.
if iCurrentRenderMethod == 4:
xbmc.executehttpapi("SetGUISetting(0;VideoPlayer.RenderMethod;3)")
UI().playVideo()
#Pause long enough for mplayer to start
import time
time.sleep(5)
# Set back to the current RendorMethod
xbmc.executehttpapi("SetGUISetting(0;VideoPlayer.RenderMethod,%d)" % ( iCurrentRenderMethod, ))
Not a perfect solution and I'm sure someone could write the code more efficiently or even a more elegant solution, but this worked for me.
Comments and suggestions welcome.