mirror of https://github.com/mpv-player/mpv
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.)
This commit is contained in:
parent
ad85203d63
commit
ed925c70c9
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue