summaryrefslogtreecommitdiffstats
path: root/video/filter
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-05-29 23:06:22 +0200
committerwm4 <wm4@nowhere>2015-05-29 23:06:22 +0200
commited925c70c93af2e98239b5c2cdc3d0adfab44a39 (patch)
tree88aafed8b278d971ecf18c70ca132345b0845854 /video/filter
parentad85203d63fdc0d9c61f9e156a79ab2e83f4cce6 (diff)
downloadmpv-ed925c70c93af2e98239b5c2cdc3d0adfab44a39.tar.bz2
mpv-ed925c70c93af2e98239b5c2cdc3d0adfab44a39.tar.xz
vf_vavpp: do not pretend to support references
We do not fill them, so we would pass random IDs to the driver. The code was originally written to handle bob deinterlacing only, so I guess it originally passed always 0 anyway, despite having code for reference surface list allocation. Also, move down the vaUnmapBuffer() call. This call actually "unmaps" the param pointer, so accessing it after the unmap call would be undefined behavior. The "example" in <va/vavpp.h> does this too, but it's most likely an error. (Additionally, not even bob deinterlacing worked correctly in my test, sigh.)
Diffstat (limited to 'video/filter')
-rw-r--r--video/filter/vf_vavpp.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/video/filter/vf_vavpp.c b/video/filter/vf_vavpp.c
index f62788f98a..c41afe1955 100644
--- a/video/filter/vf_vavpp.c
+++ b/video/filter/vf_vavpp.c
@@ -168,11 +168,13 @@ static struct mp_image *render(struct vf_instance *vf, struct mp_image *in,
param->filter_flags = flags;
param->filters = p->pipe.filters;
param->num_filters = p->pipe.num_filters;
- vaUnmapBuffer(p->display, buffer);
param->forward_references = p->pipe.forward.surfaces;
param->backward_references = p->pipe.backward.surfaces;
- param->num_forward_references = p->pipe.forward.num_required;
- param->num_backward_references = p->pipe.backward.num_required;
+ param->num_forward_references = 0;
+ param->num_backward_references = 0;
+
+ vaUnmapBuffer(p->display, buffer);
+
status = vaRenderPicture(p->display, p->context, &buffer, 1);
if (!check_error(vf, status, "vaRenderPicture()"))
break;