decoder: fix double buffer free with some VA drivers.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Mon, 13 Feb 2012 09:10:35 +0000 (10:10 +0100)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Mon, 13 Feb 2012 09:10:35 +0000 (10:10 +0100)
commitab94048ea0be0311453aaeedb174d01b09c682d9
tree7a0f4bbfc7a646570f120a7513d155e7e5ecb447
parent82dbd6f5be41206a7159e71bbb879e79b6d9bc8e
decoder: fix double buffer free with some VA drivers.

vaRenderPicture() implicitly disposes VA buffers. Some VA drivers would
push the VA buffer object into a list of free buffers to be re-used. However,
reference pictures (and data) that was kept would explicitly release the VA
buffer object later on, thus possibly destroying a valid (re-used) object.

Besides, some other VA drivers don't support correctly the vaRenderPicture()
semantics for VA buffers disposal and would leak memory if there is no explicit
vaDestroyBuffer(). The temporary workaround is to explcitily destroy VA buffers
right after vaRenderPicture(). All VA drivers need to be aligned.
gst-libs/gst/vaapi/gstvaapidecoder_objects.c