Hi, On Wed, 10 Nov 2010, Oleksiy Krivoshey wrote:
Could you please post some details about the problem in XBMC? 'Still frames' problem is fixed with -vo vaapi:gl if using patched mesa, but XBMC still plays vaapi accelerated video really broken. I tried increasing number of surfaces created initially and it helped with some videos but not generally. Could you please give me some points?
You could ensure to have refs + 3 surfaces allocated, instead of refs + 1 + 1. The real problem is that XBMC is re-using a VA surface that was marked as free through release_buffer().
I suggest to create a ref counted object, e.g. the CSurface holder that would make sure to get a free surface from the pool at get_buffer() time and decrement the ref count in release_buffer(). Then, once it's used in the function that vaCopySurfaceGLX() it, you can unref it once more then refcount == 0 => put it back to the free pool.
I quickly tried but my initial attempt was wrong and did not have time to fix it yet.
Regards, Gwenole. _______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
