From d1c37c0e29f0b1dcced460b547f5777d73d8f6eb Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 15 Jul 2015 12:37:28 +0200 Subject: vaapi: allow allocating additional surfaces during decoding Fixes problems with --vo=opengl:interpolation. The issue here is that vo_opengl retains more surfaces than what was preallocated for the decoder. Until now, we just explicitly failed to decode frames for which no additional surfaces are available. Since modern drivers usually are fine with not "registering" surfaces before the decoder is created, just allow allocating additional surfaces if needed. (We also could probably recreate the HW decoder, since the HW decoder should be stateless. But let's try to avoid raising the overall complexity of the code.) --- video/decode/vaapi.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/video/decode/vaapi.c b/video/decode/vaapi.c index b947b0c7de..cace8e733e 100644 --- a/video/decode/vaapi.c +++ b/video/decode/vaapi.c @@ -275,10 +275,9 @@ static struct mp_image *allocate_image(struct lavc_ctx *ctx, int format, { struct priv *p = ctx->hwdec_priv; - struct mp_image *img = - mp_image_pool_get_no_alloc(p->pool, IMGFMT_VAAPI, w, h); + struct mp_image *img = mp_image_pool_get(p->pool, IMGFMT_VAAPI, w, h); if (!img) - MP_ERR(p, "Insufficient number of surfaces.\n"); + MP_ERR(p, "Failed to allocate additional VAAPI surface.\n"); return img; } -- cgit v1.2.3